Video: Coding Challenge #4: Purple Rain in Processing 2024
In Java Programming Challenge: een eenvoudig Tic-Tac-Toe spel Je werd uitgedaagd om een console-gebaseerd programma te schrijven dat het eenvoudige spel van Tic-Tac-Toe speelt. De Java-programmeeruitdaging hier is om Swing te gebruiken om een grafische gebruikersinterface (GUI) aan het programma toe te voegen. De GUI moet lijken op de hier getoonde.
Het spel is eenvoudig. De menselijke speler speelt eerst door op een van de vierkanten te klikken. Het vierkant aangeklikt door de mens vertoont een grote X. Nadat de mens heeft gespeeld, bepaalt het programma of de mens een gelijkspel heeft gewonnen of gedwongen. Als dit het geval is, wordt een bericht weergegeven, wordt het bord gereset en begint een nieuw spel. Als dat niet het geval is, kiest de computer een verplaatsing en markeert het vierkant met een grote O.
Het programma bepaalt dan of de computer het spel heeft gewonnen. Als dit het geval is, geeft het programma een bericht weer, stelt het het board opnieuw in en start een nieuw spel. Zo niet, dan speelt de menselijke speler opnieuw. Dit gaat door totdat een speler wint of alle vierkanten zijn gevuld.
Je programma zou dezelfde TicTacToeBoard-klasse moeten gebruiken die je hebt gemaakt voor de Java-programmeerwedstrijd: het toevoegen van klasse aan het eenvoudige Tic-Tac-Toe-programma. Met andere woorden, het moet exact dezelfde methoden implementeren. Voor uw gemak worden deze methoden herhaald in de volgende tabel.
Constructor | Beschrijving |
---|---|
TicTacToeBoard | Creëert een nieuw TicTacToeBoard waarvan alle vierkanten leeg zijn. |
Methode | Beschrijving |
void reset () | Hiermee wordt de status van elk vierkant opnieuw ingesteld op leeg. |
void playAt (String square, int player) | Markeert het opgegeven vierkant (A1, A2, A3, B1, B2, B3, C1, C2 of C3) voor de opgegeven speler (1 voor X, 2 voor O). Gegenereerde uitzondering IllegalArgumentException als vierkant niet een van de toegestane waarden is, speler niet 1 of 2 is, of het opgegeven vierkant niet leeg is. |
int isGameOver () | Bepaalt of het spel afgelopen is. Retourneert 0 als het spel nog niet voorbij is, 1 als X het spel heeft gewonnen, 2 als O het spel heeft gewonnen en 3 als het een gelijkspel is. De eindvoorwaarden voor het spel zijn als volgt:
1: als een rij, kolom of diagonaal alle X-en bevat. 2: Als een rij, kolom of diagonaal alle O's bevat. 3: Als er geen lege vierkanten zijn en noch X noch O heeft gewonnen. |
int getNextMove () | Retourneert een geheel getal dat de volgende zet voor de computertegenstander vertegenwoordigt. Deze methode zou een elementaire poging moeten doen om een goede zet te selecteren, volgens de volgende strategie:
* Als het midden (vierkant B2) leeg is, speel dan het middenvierkant. * Als het midden niet leeg is, maar een van de vier hoeken (vierkanten A1, A3, C1 of C3) leeg is, speel dan een van de hoeken (het maakt niet uit welke). * Als het middelpunt niet leeg is en geen hoeken leeg zijn, speel dan een van de randen (vierkanten A2, B1, B3 of C2). |
String toString () | Retourneert een tekenreeks die de huidige status van het bord aangeeft. De reeks bevat nieuwe regeltekens om de rijen weer te geven, evenals scheidingslijnen op afzonderlijke consolelijnen, zoals in dit voorbeeld:
O | | O - | - | - | X | - | - | - | X | |
U vindt de oplossing voor deze uitdaging op het tabblad Downloads van de productpagina Java All-in-One voor modellen, 4e editie.
Veel succes!