2017-06-21 8 views
1

I programmiert Tic Tac Toe in Java mit ImageIcons (sun.png, devil.png).Java Tic Tac Toe mit ImageIcons - Verbesserungsvorschläge

Alles funktioniert gut, aber die Frage ist, ob es eine bessere Art und Weise ist, um herauszufiltern, die ist an der Reihe. In dem Moment benutze ich einen variablen String Player und die Buchstaben O und X.

Aber ich frage mich, ob es einen Weg gibt so etwas wie if (count %2 == 0) {player = sun} fragen, weil ich wegen der ImageIcon s weg von X ‚s und O‘ s erhalten möchten (der Benutzer nicht wissen, ob er X oder O ist). Ich hoffe du verstehst was ich meine und es ist nicht zu verwirrend. Vielen Dank für Ihre Bemühungen und Antworten! Ich bin dankbar für irgendwelche Vorschläge.

Antwort

0

Sie können stattdessen Ihre player Variable auf boolean setzen. In diesem Fall würde ich dies als etwas ähnliches instanziiert:

private boolean is_player_one = true; 

Um zu prüfen, wer an der Reihe ist, können Sie eine einfaches if/else verwenden:

if (is_player_one) { 
    // Player one's turn 
} else { 
    // Player two's turn 
} 

Dann am Ende beiden Spieler an der Reihe , kehren Sie einfach den boolean Spieler wechseln:

is_player_one = !is_player_one; 

EDIT:

O Es wird nur eine boolesche Variable benötigt. Ich werde die Variable in is_player_sun umbenennen, um dies für Ihre Situation klarer zu machen. Wenn der Wert is_player_suntrue ist, dann ist der Spieler an der Reihe. Wenn is_player_sun einen Wert von false hat, dann ist der Spieler Teufel dran. So ist die letzte if/else Fall, einschließlich einer Aktualisierung der Windungen sollte ähnlich aussehen wie:

if (is_player_sun) { 
    // Player sun's turn 
} else { 
    // Player devil's turn 
} 
is_player_sun = !is_player_sun; 

Beachten Sie, dass Sie nicht über eine Variable is_player_devil brauchen, weil Spieler Teufel an der Reihe ist, wenn is_player_sunfalse ist.

+0

Ich denke, ich habe es falsch gemacht .. –

0

Habe ich Sie richtig verstanden .. Erste is_player_devil, is_player_sun und am Anfang ist falsch oder ist es nicht ?:

private boolean is_player_devil = false; 
     private boolean is_player_sun = false; 

Und im Teil Wer an der Reihe ist es ich einfach ich initialisieren eingeben können is_player_sun = true;

public void actionPerformed(ActionEvent a) { 
     count++; 

     // Who's turn is it 
     if (count % 2 == 0) { 
      //player = "O"; 
      is_player_sun = true; 

     } else { 
      //player = "X"; 
      is_player_devil = true; 
     } 
0

Haben Sie eine ImageIcon, die den aktuellen Player darstellt. In Ihrer Klasse:

private ImageIcon currentPlayer; 

... 

public Playfield() { 
    currentPlayer = devil; 

... 

public void actionPerformed(ActionEvent a) { 
    JButton pressedButton = (JButton) a.getSource(); 
    pressedButton.setIcon(currentPlayer); 
    pressedButton.setDisabledIcon(currentPlayer); 
    pressedButton.setEnabled(false); 

    currentPlayer = currentPlayer.equals(devil) ? sun : devil;