Video: 15 min Java Coding Challenge - Tic-Tac-Toe 2024
Je missie, als je besluit om het te accepteren, is om een Java-programma te maken dat een spel met Tic-Tac-Toe met de gebruiker kan spelen.
Zoals je waarschijnlijk weet, is Tic-Tac-Toe een eenvoudig spel dat meestal met papier en potlood wordt gespeeld. Eerst maak je een eenvoudig 3 x 3 raster op het papier. Daarna wisselen twee spelers afwisselend door Xs en Os in lege velden op het raster te markeren. De eerste speler die drie van zijn of haar punten maakt in een horizontale, verticale of diagonale rij wint. Als alle velden in het raster zijn gevuld voordat een speler drie op een rij markeert, is het spel gelijkspel.
Hier zijn de regels en instructies voor deze uitdaging:
-
De computer speelt tegen de mens. De mens beweegt als eerste en is X. De computer is O.
-
Het programma zou moeten beginnen met het weergeven van een kort welkomstbericht, en zou dan de speler moeten vragen om zijn of haar eerste zet. Bijvoorbeeld:
Welkom bij Tic-Tac-Toe. Voer uw eerste zet in:
-
Om de vierkanten van het raster aan te duiden, gebruikt u de letters A, B en C voor de kolommen en de nummers 1, 2 en 3 voor de rijen, zoals deze:
A1 B1 C1 A2 B2 C2 A3 B3 C3
Om dus een X in het vierkant linksboven te plaatsen, zou de menselijke speler de tekst A1 invoeren wanneer het programma de speler om een bewegen.
Nadat de mens een beweging heeft ingevoerd, moet het programma de huidige status van het bord op de console weergeven.
-
Gebruik X om de spelen van de mens te markeren en op O om de spelen van de computer te markeren. Gebruik verticale balkpersonages (gevonden op het toetsenbord met het backslash-teken, net boven de Enter-toets) en koppeltekens om het bord in een eenvoudig raster te tekenen.
Als de gebruiker bijvoorbeeld A1 heeft ingevoerd als zijn eerste zet, zou het programma het volgende weergeven:
X | | --- | --- | --- | | --- | --- | --- | |
-
Na de verplaatsing van de mens bepaalt het programma de zet, kondigt het aan de gebruiker aan, geeft een bijgewerkt bord weer en vraagt vervolgens om de zet van de gebruiker.
U ziet bijvoorbeeld dit:
Ik speel A2: X | O | --- | --- | --- | | --- | --- | --- | | Voer je volgende zet in:
-
Het spel gaat door totdat één speler drie keer op rij heeft gescoord of alle vierkanten zijn gevuld zonder winnaar. Je programma moet kunnen bepalen of een speler drie keer op rij heeft gescoord en de game heeft gewonnen. (Dit is het moeilijkste deel van deze programmeeruitdaging.)
-
Wanneer het spel is afgelopen, geeft het programma een bericht weer dat het resultaat van het spel aangeeft: "Je hebt me verslagen! "Als de menselijke speler wint," verslaat ik jou! "Als de computer speler wint, of" Het is een gelijkspel! "Als het spel in gelijkspel eindigt.
-
De mens en de computer kunnen alleen spelen op velden die nog niet door beide spelers bezet zijn.
-
Het programma eindigt als de game door een van de spelers is gewonnen of als het spel gelijkspel is. Als u opnieuw wilt spelen, moet u het programma opnieuw uitvoeren.
Houd er rekening mee dat u elke methode kunt gebruiken die u wilt bepalen hoe de computer zijn bewegingen moet uitvoeren. Ik stel voor dat de computer altijd in het eerste lege vierkant speelt. Dit is natuurlijk niet de beste manier om Tic-Tac-Toe te spelen, en je zult probleemloos de computer verslaan elke keer dat je speelt. Maar door deze eenvoudige spelstrategie te kiezen, kun je je concentreren op andere aspecten van de programmering, zoals hoe je het raster intern representeert en hoe je kunt bepalen wanneer een speler het spel heeft gewonnen of wanneer het spel in een gelijkspel is geëindigd.
(In "Java-programmeerwedstrijd: arrays aan het eenvoudige Tic-Tac-Toe-programma toevoegen" wordt u gevraagd om een betere strategie voor het programma te bedenken om de plays te bepalen.)
Hier is een voorbeeld van het display van de console voor een compleet spel:
Welkom bij Tic-Tac-Toe. Voer je eerste zet in: A1 X | | --- | --- | --- | | --- | --- | --- | | Ik speel op A2: X | O | --- | --- | --- | | --- | --- | --- | | Voer je volgende zet in: B1 X | O | --- | --- | --- X | | --- | --- | --- | | Ik speel op A3: X | O | O --- | --- | --- X | | --- | --- | --- | | Voer je volgende zet in: C 1 X | O | O --- | --- | --- X | | --- | --- | --- X | | Je hebt me verslagen!
Hier zijn enkele hints om u op weg te helpen:
-
De beste manier om het raster weer te geven, is met een array. Gebruik voor nu negen variabelen, met de namen A1, A2, A3, B1, B2, B3, C1, C2 en C3.
-
Als u het int-type voor de rastervariabelen gebruikt, kunt u vervolgens 1 gebruiken om aan te geven dat een vierkant een X en 2 bevat om aan te geven dat een vierkant een O bevat.
-
Acht mogelijke rijen kunnen tot winst leiden. Een speler wint als een van de volgende combinaties van vierkanten ofwel 1 (voor X) of 2 (voor O) is:
A1 - A2 - A3 A1 - B1 - C1 A1 - B2 - C3 B1 - B2 - B3 A2 - B2 - C2 A3 - B2 - C1 C1 - C2 - C3 A3 - B3 - C3
-
Er zijn twee manieren om te bepalen of het spel gelijkspel is. De eerste is om alle negen vierkanten te controleren: als geen van de vierkanten leeg is en geen van beide spelers heeft gewonnen, is het spel gelijkspel. De tweede is om de zetten te tellen: als er negen zetten zijn gemaakt en geen van beide spelers heeft gewonnen, is het spel gelijkspel.
U vindt een oplossing voor deze programmeeruitdaging op het tabblad Downloads van de productpagina Java All-in-One voor modellen, 4e editie.
Veel succes!