私はJavaでチェスゲームをプログラミングしており、現時点では基本的なインターフェイスを構築しています。これは、ウィンドウに表示されるボタンの8x8配列にすぎません。これらのボタンをコーディングし、ボードが正しく表示されるようにしました。ただし、これをゲームの残りの部分に接続すると、実行時にゲームウィンドウがクラッシュし、Javaアプリケーションを強制終了する必要があります。これは私のコードです:
package Chess_Game;
import javax.swing.SwingUtilities;
import Chess_Interface.Iboard;
public class Game_Tester
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Game G = new Game();
Iboard I = new Iboard(G.getBoard().getArray(), G.getSides());
I.setVisible(true);
while(!(G.isGameOver()))
{
boolean redo = true;
while(redo)
{
int row = 0;
int col = 0;
int nRow = 0;
int nCol = 0;
System.out.println("Click the piece you want to move.");
while(!(I.getBool())){}
if(I.getBool())
{
row = I.getRow();
col = I.getCol();
I.setBool(false);
}
System.out.println("Click the place you want to move to.");
while(!(I.getBool())){}
if(I.getBool())
{
nRow = I.getRow();
nCol = I.getCol();
I.setBool(false);
}
if(G.canMove(row, col, nRow, nCol))
{
G.move(row, col, nRow, nCol, I);
redo = false;
}
else
{
System.out.println("You cant move there! Try again!");
}
}
I.updateBoard(G.getBoard().getArray(), G.getSides());
}
}
});
}
}
メインのwhileループ(およびその中のすべて)をコメントアウトすると、ボードは正しく表示されます。問題はその中のどこかにあると思いますが、見つけることができませんでした。私も同様のゲームループの問題をオンラインで探しましたが、それらはすべて、フレームレートとJavaスイングフレームを横切る動きを伴うゲームに関するものでした。これは私のコードにはありません。
どんな助けでも大歓迎です。