ポーカー ゲームを実装する jFrame があります。私はスレッドを持っているので、コンピューターの対戦相手は動きに時間がかかります。人間の番が来たときにスレッドが待機するように実装しようとしました。ただし、人間のプレーヤーを配置する前に、フレームは を呼び出しませんrepaint()
。これを確認するために Netbeans のデバッガーを使用しました。フレームが呼び出す行に到達しますrepaint()
が、何らかの理由で実際には実行されません。コードは次のとおりです。
public void run() {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < players.size(); j++) {
Card card = deck.draw();
players.get(i).addToHand(card);
output.append("Player " + players.get(i).getName() + " got a " + card + ".\n");
System.out.println("Player " + players.get(i).getName() + " got a " + card + ".\n");
}
}
while (true) {
if (!players.isEmpty() && players.get(0) instanceof HumanPlayer)
humansTurn = true;
if (humansTurn) {
synchronized (this) {
try {
this.wait();
} catch (InterruptedException e) {
}
}
} else if (humanMoveMade) {
playMove(humanMove, players.remove(0));
humanMoveMade = false;
}else {
//unrelated code, then:
debug.update();
repaint();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
}
}
}
else
基本的に、人間のプレイヤーが自分の動きをしていないときはいつでもそこに到達するはずであり、実際にそこに到達しますrepaint
が、何らかの理由で到達しません。ウィンドウは表示されますが、コンポーネントは表示されません。
debug.update()
編集:別のフレームの情報を更新する前のメソッド呼び出しについても言及する必要がありrepaint()
ますが、そのウィンドウにも何も表示されません...
すぐにこれを準備する必要があるので、これについて本当に助けが必要です。何が起こっている?