Hjem Personlig finansiering Java Programmeringsutfordring: Legge klasse til det enkle Tic-Tac-Toe-programmet

Java Programmeringsutfordring: Legge klasse til det enkle Tic-Tac-Toe-programmet

Video: Java Tutorial for Beginners [2019] 2024

Video: Java Tutorial for Beginners [2019] 2024
Anonim

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.

TicTacToeBoard Class
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!

Java Programmeringsutfordring: Legge klasse til det enkle Tic-Tac-Toe-programmet

Redaktørens valg

Vanlige visuelle studio-tastaturgenveier - dummier

Vanlige visuelle studio-tastaturgenveier - dummier

Du kan få tilgang til mange av funksjonene du bruker i Visual Studio til Lag en Silverlight-applikasjon gjennom tastaturgenveier. Her er de vanlige snarveiene som hjelper deg med å utføre oppgaver raskt i Visual Studio. Tastatur snarvei Handling Ctrl + Alt + F1 Åpne Visual Studio Documentation Ctrl + Shift + B Bygg programmet Ctrl + F5 Kjør prosjektet Ctrl + Alt + X Åpne verktøykassen hvis ...

Velg riktig format for e-postmarkedsføringsmeldingen din - dummies

Velg riktig format for e-postmarkedsføringsmeldingen din - dummies

Som Du komponerer markedsførings-e-postene dine, husk at formatet på e-posten din visuelt kommuniserer hovedideen til innholdet før publikum selv begynner å lese det. Forbrukerne forventer at formatet på e-posten din samsvarer med informasjonen den inneholder, slik at bruk av riktig format bidrar til å bygge publikums tillit. Velg ...

Kombinere flere samtaler til handling i din markedsføring e-post - dummies

Kombinere flere samtaler til handling i din markedsføring e-post - dummies

Din e-postmarkedsføringslisten består sannsynligvis av prospekter og kunder i ulike stadier av kjøpesyklusen med litt forskjellige interesser, så en del av publikum vil aldri være klar til å reagere umiddelbart på hver handling. Selv om alle på din e-postliste er klare til handling, er dine anrop til handling ...

Redaktørens valg

Opprett en Pivot-tabell YTD-totalvisning for Excel-rapporten - dummies

Opprett en Pivot-tabell YTD-totalvisning for Excel-rapporten - dummies

En nyttig rapportvisning I et Excel-pivottabell er YTD-totalsvisningen. Noen ganger er det nyttig å fange et løp-total-visning for å analysere bevegelsen av tall på en årlig basis (YTD) basis. Denne figuren illustrerer et pivottabell som viser en løpende total omsetning per måned for hvert år. I denne visningen er du ...

Opprett en pivottabel ved hjelp av Excels interne datamodell - dummies

Opprett en pivottabel ved hjelp av Excels interne datamodell - dummies

I enkelte tilfeller vil du kanskje opprett et pivottabell fra grunnen ved hjelp av Excels eksisterende interne datamodell som kildedata. Her er trinnene for å gjøre det: Velg Sett inn → PivotTable fra båndet. Dialogboksen Create PivotTable åpnes. Velg alternativet Bruk en ekstern datakilde, som vist, og klikk deretter på ...

Hvordan lage en standard snikker i Power Pivot - dummies

Hvordan lage en standard snikker i Power Pivot - dummies

Slicers tilbyr et brukervennlig grensesnitt med som du kan filtrere en Power Pivot pivottabell. Det er på tide å lage din første slicer. Bare følg disse trinnene:

Redaktørens valg

Alarmhendelsen i GameMaker: Studio-dummies

Alarmhendelsen i GameMaker: Studio-dummies

Alarmer er utmerket for når du vil ha tid Handlinger i din spill i GameMaker: Studio. For eksempel, hvis du vil at spilleren bare skal skyte kuler en gang hvert annet sekund, kan du sette en alarm for det. Hvis du vil når nye fiendtlige fly vises, kan du sette en alarm for det ...

Flytt retningsaktive handlinger i GameMaker: Studio - dummies

Flytt retningsaktive handlinger i GameMaker: Studio - dummies

I GameMaker: Studio, Flytt-fanen er den første kategorien i vinduet Objektegenskaper. Her er en liste over hver av handlingene du kan tilordne objektene. I følgende definisjoner brukes begrepet Instance for å referere til hva handlingen påvirker. Men du konfigurerer handlingen i objektet ...

Andre hendelser i GameMaker: Studio - dummies

Andre hendelser i GameMaker: Studio - dummies

I GameMaker: Studio, Andre hendelser er de som ikke anses verdige av sitt eget sted på menyen Event. Disse andre hendelsene kan være ganske kjempebra. Menyelementene er ganske mye selvforklarende, så det er ikke nødvendig med detaljer her. For fullstendige beskrivelser av hver av disse elementene, kan du alltid trykke F1 i GameMaker og ...