// しらべる TreasureEvent treasure = hero.search(); if (treasure != null) { // かちゃ waveEngine.play("treasure"); // メッセージをセットする messageWindow.setMessage(treasure.getItemName() + "を てにいれた。"); // メッセージウィンドウを表示 messageWindow.show(); maps[mapNo].removeEvent(treasure); // TODO: ここにアイテム入手処理を入れる return; // しらべた場合ははなさない }
上のプログラムはSPACEキーを押したときにメッセージなどを表示するプログラムです。
public class TreasureEvent extends Event { // 宝箱に入っているアイテム名 private String itemName; /** * @param x X座標 * @param y Y座標 * @param itemName 手に入るアイテム名 */ public TreasureEvent(int x, int y, String itemName) { // 宝箱のチップ番号は17でぶつかる super(x, y, 20, true); this.itemName = itemName; } /** * アイテム名を返す */ public String getItemName() { return itemName; } /** * イベントを文字列に変換(デバッグ用) */ public String toString() { return "TREASURE:" + super.toString() + ":" + itemName; } }
このプログラムは、上のしらべるという動作をしたときにitemNameを返すプログラムでそれぞれ違うクラスで宣言しています。
MOVE,9,14,18,0,39,30 MOVE,10,14,19,0,40,30 TREASURE,4,5,ホン
上のように、ホンが取れる場所を座標で指定し、そこでSPACEキーが押されたらホンを手に入れたというメッセージが出るようにしたいのですが、何故かうまくいかずに、固まってしまいます。
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Exception in thread "Thread-14" java.lang.NullPointerException
at MessageEngine.drawCharacter(MessageEngine.java:67)
at MessageWindow.draw(MessageWindow.java:125)
at MainPanel.gameRender(MainPanel.java:210)
at MainPanel.run(MainPanel.java:124)
at java.lang.Thread.run(Thread.java:745)
これが、エラーで現れるメッセージです。
この五か所にエラーが出ているのか、これ以外が原因でエラーが起こっているのか、判別がつきません。
試しに指定されたプログラムを消したら消したでエラーが起こります。
アドバイスをお願いします。あと、もし情報不足でしたら、どういう情報が必要なのかを教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/03 13:11