- ベストアンサー
落ち物ゲームでのコンパイルエラー(java)
テトリスのようなものを作りたいと思って参考にしようと、以下のサイトの「11.完成」のところのソースをエディタにコピーして ttp://himuka.miyazaki-c.ed.jp/db/kyouzai/public/java/teto_kaisetu/fram.htm コンパイルしようとしたら teto.java:165: \65373 は不正な文字です。 } ^ teto.java:196: ';' がありません。 } ^ teto.java:321: \12288 は不正な文字です。 g.setColor(Color.black); のように3個のエラーが出ました。 そこで165行目の「}」を消して書き直したりして色々試すと最終的に teto.java:345: 'class' または 'interface' がありません。 } ^ teto.java:346: 'class' または 'interface' がありません。 ^ のように2個のエラーが出てコンパイルできません。 ゲームなどは作ったことがないし、javaの基礎力がまだまだ足りないので原因がわかりません。 どこが原因でエラーが出るのか教えてください。お願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>Eclipseは使ったことがないのですが、Eclipseを使わないとこの警告を無視して実行することはできないのですか? Eclipseの中身を知ってるわけではないので、本当かはわからないですが、たぶんEclipseの中身では警告が出ていると思いますよ。ただそれをユーザーに見せないだけです。 つまり、あなたも警告は出ているけど無視して実行することができます。警告は出たけど、無事(?)Tet.classやBlock.classが生成されていませんか?後はappletviewerなりなんなりでアプレットを起動してください。 ちなみに、起動してみましたが、ゲームのやり方はいまいちよくわかりませんでした。
その他の回答 (5)
- freedom560
- ベストアンサー率46% (80/173)
これは「エラー」ではありません。「警告」です。 「エラー」のときは実行が全くできませんが、「警告」レベルだと(ある程度の問題はあるが)実行できます。 これは http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html にあるThreadクラスのstop()メソッドを見てもらえればわかると思いますが、このメソッドが「推奨されていない」ことによる警告です。Javaの古いバージョンでは普通に使えたけど、新しいバージョンになって何らかの問題が見つかったから、本当はなくしたいけど互換性のために残しているといったパターンが多かった気がします。 このレベルの警告を重要視するか、無視するかはあなた次第ですが、下記のHPにEclipseでの対応についてかかれてあるので、参考にしてみてください。
お礼
ありがとうございます。 なるほどエラーではなく警告なんですね。 Eclipseは使ったことがないのですが、Eclipseを使わないとこの警告を無視して実行することはできないのですか?
- freedom560
- ベストアンサー率46% (80/173)
今度はどのようなコンパイルエラーが出ましたか? 私の環境ではNo.1さんの内容とNo.2の内容について修正を加えるとコンパイルできたのですが。
お礼
何度もありがとうございます! 注: teto.java は推奨されない API を使用またはオーバーライドしています。 注: 詳細については、-deprecation オプションを指定して再コンパイルしてください。 と出たので、-deprecationをつけてコンパイルしようとすると teto.java:251: 警告: java.lang.Thread の stop() は推奨されません。 th.stop(); ^ 警告 1 個 と出ました。 自分はたぶん1.4を使ってると思いますけど、これはJavaのバージョンの違いによるエラーなんですか??
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1>どうやったら正しくコンパイルできるのでしょうか? #2様の仰る通りです。
お礼
できませんでした!!
- freedom560
- ベストアンサー率46% (80/173)
>teto.java:267: 定数式が必要です。 >case e.VK_DOWN:{a=x;b=y; caseの後は定数式が必要です。 つまり、caseの後が変数だと、その変数の値によって値がぶつかる switch(~) { case 1:~ case 1:~ } 等するからです。というわけで、caseの後ろをインスタンスからの定数呼び出しではなく、staticなアクセスによる定数呼び出しにします。 それぞれの行を case KeyEvent.VK_DOWN:{a=x;b=y; case KeyEvent.VK_LEFT:{a=x;b=y; case KeyEvent.VK_RIGHT:{a=x;b=y; case KeyEvent.VK_SPACE:{c++; に変えてください。
お礼
ありがとうございます。 でも仰るとおり書き換えましたがやはりエラーが出てコンパイルできませんでした!
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
165行目の}は、全角文字になっていますので半角文字の}に直す必要があります。 321行目の先頭に全角スペースがあります、半角スペースにする必要があります。 345行目のエラーは、} が整合していないためのものです。 344行目の} が余計です。
補足
すばやい回答ありがとうございます!! 仰ったとおりに改変してコンパイルしてみると teto.java:267: 定数式が必要です。 case e.VK_DOWN:{a=x;b=y; ^ teto.java:279: 定数式が必要です。 case e.VK_LEFT:{a=x;b=y; ^ teto.java:289: 定数式が必要です。 case e.VK_RIGHT:{a=x;b=y; ^ teto.java:299: 定数式が必要です。 case e.VK_SPACE:{c++; ^ と出てしまいました;; どうやったら正しくコンパイルできるのでしょうか??教えてください!!
お礼
何度もありがとうございます。 仰るとおりクラスファイルが作成されてました! アプレットを起動させることができました。 でも仰るとおりゲームがよくわかりませんでした。あのサイトにのってるのと違いました・・・。2個目のブロックが降りてこない。 なんじゃこりゃ!!