Video: Java Tutorial for Beginners [2019] 2025
I denne utfordringen forbedrer du ditt Tic-Tac-Toe-spill ved å legge til en Java-programmeringsklasse, som gjør at programmet kan gjøre en rudimentær innsats mot strategi når du bestemmer datamaskinens beveger seg.
I Java Programming Challenge: En enkel Tic-Tac-Toe-spill du utfordres til å skrive et program for å spille det enkle spillet Tic-Tac-Toe. I denne utfordringen, endrer du kildekoden for din tidligere løsning for å hjelpe deg med å strategisere datamaskinen.
Selv om reglene i spillet er veldig enkle, kan det være komplisert å lage et dataprogram som kan spille spillet. En rekke potensielt kompliserte detaljer må inkorporeres i programmet. Spesielt:
-
Programmet må ha en måte å internt representere statusen til hver av de ni rutene som utgjør Tic-Tac-Toe-bordet.
-
Programmet må gi en måte å registrere et trekk for hver spiller, og må sørge for at hvert trekk er gyldig (for eksempel kan en spiller ikke spille i en firkant som allerede er opptatt av en X eller en O.
-
Programmet må kunne bestemme når en spiller har vunnet ved å se på alle åtte av de mulige tre-i-rad-kombinasjonene: De tre radene, de tre kolonnene, og de to diagonalene.
-
Programmet må også kunne bestemme når spillet er uavgjort - det vil si når alle ni rutene er spilt og ingen av spillerne har vunnet.
Samtidig har programmet må håndtere detaljene i samspillet med brukeren ved å be brukeren å gå inn i hans eller hennes trekk, kunngjøre datamaskinens spill, vise en oppdatert representasjon av brettet etter hvert spill, og erklære en vinner eller kunngjør uavgjort når spillet er over.
I denne utfordringen blir du bedt om å skille disse to elementene i Tic-Tac-Toe-programmet: den delen av e program som styrer status og fremdrift av spillet og den delen av programmet som håndterer samspillet med brukeren. Du vil gjøre det ved å opprette en klasse som heter TicTacToeBoard, som gir metoder som kan kalles for å spille et komplett spill. Deretter blir du bedt om å skrive et program som bruker TicTacToeBoard-klassen for å tillate en menneskelig motstander å spille et spill Tic-Tac-Toe mot datamaskinen.
Fra brukerens perspektiv vil dette programmet fungere identisk med programmet som er opprettet for å løse den enkle Tic-Tac-Toe-spillutfordringen, med en forskjell: For denne versjonen av spillet, gjør programmet en rudimentær innsats mot strategi når man bestemmer datamaskinens bevegelser.Datamaskinen spiller ikke perfekt, så det er fortsatt lett beatable. Men det gjør litt innsats utover bare å spille i det første tomme torget det ser.
Følgende tabell viser metodene som klassen TicTacToeBoard skal implementere. Husk at du må lage to. java-filer for å løse denne utfordringen. Den første, TicTacToeBoard. java, implementerer klassen TicTacToeBoard. Den andre, som bare heter TicTacToe. java, er programmet brukeren vil kjøre for å spille et spill Tic-Tac-Toe mot datamaskinen.
Constructor | Beskrivelse |
---|---|
TicTacToeBoard | Oppretter en ny TicTacToeBoard med alle torgene tomme. |
Metode | Beskrivelse |
ugyldig nullstilling () | Tilbakestiller statusen til hvert felt for å tømme. |
int getSquare (String square) | Returnerer statusen til torget som er angitt med torget, som må være en av strengene A1, A2, A3, B1, B2, B3, C1, C2 eller C3. Returnerer 0 hvis plassen er tom, 1 hvis den inneholder en X og 2 hvis den inneholder en O. Kaster ulovligArgumentException hvis firkant ikke er en av de tillatte verdiene. |
void playAt (String square, int player) | Markerer angitt kvadrat (A1, A2, A3, B1, B2, B3, C1, C2 eller C3) for den angitte spilleren (1 for X, 2 for O). Kaster ut IllegalArgumentException hvis firkantet ikke er en av de tillatte verdiene, spilleren er ikke 1 eller 2, eller den angitte firkanten er ikke tom. |
int isGameOver () | Bestemmer om spillet er over. Returnerer 0 hvis spillet ikke er over, 1 hvis X har vunnet spillet, 2 hvis O har vunnet spillet, og 3 hvis kampen er uavgjort. Spillavslutningsforholdene er som følger:
1: Hvis en rad, kolonne eller diagonal inneholder alle Xs. 2: Hvis en rad, kolonne eller diagonal inneholder alle Os. 3: Hvis det ikke er tomme firkanter og verken X eller O har vunnet. |
int getNextMove () | Returnerer et heltall som representerer neste trekk for datamaskinens motstander. Denne metoden bør gjøre en rudimentær innsats for å velge et godt trekk, i henhold til følgende strategi:
* Hvis senteret (kvadrat B2) er tomt, spill midtpunktet. * Hvis senteret ikke er tomt, men noen av de fire hjørnene (firkantene A1, A3, C1 eller C3) er tomme, spiller du en av hjørnene (det spiller ingen rolle hvilken). * Hvis senteret ikke er tomt og ingen hjørner er tomme, spiller du en av kantene (firkantene A2, B1, B3 eller C2). |
String toString () | Returnerer en streng som representerer styrets nåværende status. Strengen inneholder nybegynne tegn for å vise radene, samt separatorlinjer på separate konsolllinjer, som i dette eksempelet:
O | | O - | - | - | X | - | - | - | X | |
Hvis du er stumped, kan du finne løsningen på fanen Nedlastinger i Java All-in-One for Dummies, 4. utgave produktside.
Lykke til!
