学校向けの非常にシンプルなシミュレーション文明ゲームをデザインしようとしています。現在、コントロール バーのこのボタンをクリックすると、新しい小屋のインスタンスが作成されるようにしようとしています。以下にエラーレポートとエラーが発生したコードを記載します。
エラーレポート:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at controls.Sidebar.clickBuildHut(Sidebar.java:102)
at screen_window.Game_Window.mouseClicked(Game_Window.java:248)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
エラーが発生するコード:
public void newHut() {
numOfHuts++;
hut[numOfHuts] = new Hut(mouseX, mouseY, 0, numOfHuts);
}
クラスのトップでの小屋宣言:
Hut[] hut = new Hut[9999];
int numOfHuts;
Sidebar.clickBuildHut メソッド:
public boolean clickBuildHut(int mouseX, int mouseY){
if (viewConstruction){
int topLeftX = x + 2;
int topLeftY = y + 50 - 14;
int selectionWidth = width - 10;
int selectionHeight = 17;
for (int i = 0; i <= width; i++) {
for (int h = 0; h <= height; h++) {
if (mouseX == topLeftX + i && mouseY == topLeftY + h) {
first_map.setEditMode(true);
game_window.newHut();
return true;
}
}
}
}
return false;
}
first_map.setEditMode:
public void setEditMode(boolean editMode) {
this.editMode = editMode;
}
これが問題だとは思いませんが、これをtrueに切り替えると画像が正しく変化することがわかります。あなたが私にこれについてもっと情報を提供してほしいなら、私はできますが、問題がある場所ではないので、それは役に立たないと思います.