Video: Welcome to our Hour of Code on Khan Academy 2024
Ditt uppdrag, om du bestämmer dig för att acceptera det, är att skapa ett Java-program som kan spela ett spel Tic-Tac-Toe med användaren.
Som du säkert vet är Tic-Tac-Toe ett enkelt spel som oftast spelas med papper och penna. Först gör du ett enkelt 3 x 3 rutnät på papperet. Då två spelare växlar varv genom att markera Xs och Os i tomma utrymmen på rutnätet. Den första spelaren som gör tre av hans eller hennes betyg i en horisontell, vertikal eller diagonal rad vinner. Om alla mellanslag i rutnätet är fyllda innan någon spelare markerar tre i rad, är spelet en rita.
Här följer reglerna och instruktionerna för denna utmaning:
-
Datorn spelar mot människan. Människan flyttar först och är X. Datorn är O.
-
Programmet bör börja med att visa ett kort välkomstmeddelande, och sedan bör du fråga spelaren för hans eller hennes första drag. Till exempel:
Välkommen till Tic-Tac-Toe. Vänligen ange ditt första drag:
-
För att ange rutans rutor, använd bokstäverna A, B och C för kolumnerna och siffrorna 1, 2 och 3 för raderna, så här:
A1 B1 C1 A2 B2 C2 A3 B3 C3
För att placera en X i den övre vänstra rutan skulle den mänskliga spelaren ange texten A1 när programmet uppmanar spelaren till en flytta.
När människan går i rörelse, ska programmet visa aktuell status på kortet på konsolen.
-
Använd X för att markera människans spelningar och O för att markera datorns spelningar. Använd vertikala strecktecken (som finns på tangentbordet med backslash-tecknet, precis ovanför Enter-tangenten) och bindestreck för att rita brädet i ett enkelt rutnät.
Till exempel, om användaren har skrivit in A1 som sitt första drag, skulle programmet visa följande:
X | | --- | --- | --- | | --- | --- | --- | |
-
Efter människans rörelse bestämmer programmet sitt drag, meddelar det till användaren, visar en uppdaterad styrelse och ber om användarens rörelse.
Du kan till exempel se detta:
Jag ska spela A2: X | O | --- | --- | --- | | --- | --- | --- | | Vänligen ange ditt nästa drag:
-
Spelet fortsätter tills en spelare har gjort tre i rad eller alla rutor har fyllts utan vinnare. Ditt program måste kunna avgöra om en spelare har gjort tre i rad och vann spelet. (Detta är den svåraste delen av denna programutmaning.)
-
När spelet är över visar programmet ett meddelande som anger resultatet av spelet: "Du slog mig! "Om den mänskliga spelaren vinner" slog jag dig! "Om datorspelaren vinner eller" det är oavgjort! "Om spelet slutar i rita.
-
Människans och datorspelarna kan bara spela de rutor som inte redan är upptagna av någon spelare.
-
Programmet slutar när spelet vunnits av endera spelaren eller spelet är oavgjort. Om du vill spela igen måste du köra programmet igen.
Observera att du är fri att använda vilken metod du vill bestämma hur datorn ska göra sina drag. Jag föreslår att du alltid spelar datorn i den första tomma rutan. Det här är uppenbarligen inte det bästa sättet att spela Tic-Tac-Toe, och du kommer inte ha något problem att slå på datorn varje gång du spelar. Men genom att välja denna enkla spelstrategi kan du fokusera på andra aspekter av programmeringen, till exempel hur man internt representerar rutnätet och hur man bestämmer när en spelare har vunnit spelet eller när spelet har avslutats i rita.
(I "Java Programmeringsutmaning: Lägga till arrayer till Simple Tic-Tac-Toe-programmet" uppmanas du att hitta en bättre strategi för programmet för att bestämma dess spelningar.)
Här är ett exempel på Konsolvisningen för ett komplett spel:
Välkommen till Tic-Tac-Toe. Ange ditt första steg: A1 X | | --- | --- | --- | | --- | --- | --- | | Jag kommer att spela på A2: X | O | --- | --- | --- | | --- | --- | --- | | Ange ditt nästa steg: B1 X | O | --- | --- | --- X | | --- | --- | --- | | Jag kommer att spela på A3: X | O | O --- | --- | --- X | | --- | --- | --- | | Ange ditt nästa steg: C 1 X | O | O --- | --- | --- X | | --- | --- | --- X | | Du slår mig!
Här är några tips för att komma igång:
-
Det bästa sättet att representera rutnätet är med en matris. Använd nu nio variabler med namnet A1, A2, A3, B1, B2, B3, C1, C2 och C3.
-
Om du använder int-typen för rutnivariablerna kan du sedan använda 1 för att ange att en kvadrat innehåller en X och 2 för att indikera att en kvadrat innehåller en O.
-
Åtta möjliga rader kan leda till en seger. En spelare vinner om någon av följande kombinationer av kvadrater är antingen 1 (för X) eller 2 (för O):
A1 - A2 - A3 A1 - B1 - C1 A1 - B2 - C3 B1 - B2 - B3 A2 - B2 - C2 A3 - B2 - C1 C1 - C2 - C3 A3 - B3 - C3
-
Det finns två sätt att bestämma om spelet är oavgjort. Den första är att kontrollera alla nio rutorna: Om ingen av rutorna är tomma och ingen spelare har vunnit, är spelet en rita. Den andra är att räkna rörelserna: Om nio drag har gjorts och ingen spelare har vunnit, är spelet en rita.
Du kan hitta en lösning på den här programmeringsutmaningen på fliken Hämtningar i Java All-in-One for Dummies, 4: e utgåva produktsida.
Lycka till!