私は X/O ゲームを構築している Java のミニ プロジェクトに取り組んでいます。私は、プログラムが「X」か「O」かを示す次の記号を判断する部分にいます。そこで、イベントリスナーをセットアップし、ユーザーがボタンをクリックするのを待ちます。そして、各ボタンに対して次のことを行います。
Button7.setBounds(50,180,80,30);
panel.add(Button7);
Button7.addActionListener(new ActionListener () {
@Override
public void actionPerformed(ActionEvent event) {
int countX = 0;
int countO = 0;
int difxo = 0;
String xo = "";
if (Button1.getText().equals("X"))
{
countX += 1;
}
else if (Button2.getText().equals("X"))
{
countX += 1;
}
else if (Button3.getText().equals("X"))
{
countX += 1;
}
else if (Button4.getText().equals("X"))
{
countX += 1;
}
else if (Button5.getText().equals("X"))
{
countX += 1;
}
else if (Button6.getText().equals("X"))
{
countX += 1;
}
else if (Button7.getText().equals("X"))
{
countX += 1;
}
else if (Button8.getText().equals("X"))
{
countX += 1;
}
else if (Button9.getText().equals("X"))
{
countX += 1;
}
else
{
countX += 0;
}
if (Button1.getText().equals("O"))
{
countO += 1;
}
else if (Button2.getText().equals("O"))
{
countO += 1;
}
else if (Button3.getText().equals("O"))
{
countO += 1;
}
else if (Button4.getText().equals("O"))
{
countO += 1;
}
else if (Button5.getText().equals("O"))
{
countO += 1;
}
else if (Button6.getText().equals("O"))
{
countO += 1;
}
else if (Button7.getText().equals("O"))
{
countO += 1;
}
else if (Button8.getText().equals("O"))
{
countO += 1;
}
else if (Button9.getText().equals("O"))
{
countO += 1;
}
difxo = countX - countO;
if (difxo == 0)
{
xo = "X";
}
else if (difxo == 1)
{
xo = "O";
}
countX = 0;
countO = 0;
Button7.setText(xo);
}
});
したがって、X/O ゲーム (開始記号が X の場合) では、基本的な減算を行うことで、どの記号が後にあるかを偽ることができます。減算の結果が 1 の場合: ボタンの記号は "O" でなければならず、結果が 0 の場合は記号は "X" でなければなりません。しかし、私が作ったプログラムでは、ボタンクリックイベントごとに同じことを繰り返すと、「X」「O」「X」「O」ではなく、「X」「O」「X」「X」「X」が得られます.. . など、「X」と「O」を数えるたびに減算を行うため、なぜそれが起こっているのかわかりません。ありがとう。