Huis Persoonlijke financiën Java Programming Challenge: Klasse toevoegen aan het eenvoudige Tic-Tac-Toe programma

Java Programming Challenge: Klasse toevoegen aan het eenvoudige Tic-Tac-Toe programma

Video: What Most Schools Don't Teach 2024

Video: What Most Schools Don't Teach 2024
Anonim

In deze uitdaging verbeter je je Tic-Tac-Toe-spel door een Java-programmeerklasse toe te voegen, waardoor het programma een rudimentaire strategie-inspanning kan leveren bij het bepalen van de computer. moves.

In Java Programming Challenge: een eenvoudig Tic-Tac-Toe spel Je wordt uitgedaagd om een ​​programma te schrijven om het eenvoudige spel Tic-Tac-Toe te spelen. In deze uitdaging wijzigt u de broncode van uw vorige oplossing om de computer te helpen strategieën te bepalen.

Hoewel de spelregels heel eenvoudig zijn, kan het creëren van een computerprogramma dat het spel kan spelen, complex zijn. Een aantal potentieel gecompliceerde details moeten in het programma worden opgenomen. Specifiek:

  • Het programma moet een manier hebben om de status van elk van de negen vierkanten waaruit het Tic-Tac-Toe-bord bestaat, intern weer te geven.

  • Het programma moet een manier bieden om een ​​beweging voor beide spelers te registreren en moet ervoor zorgen dat elke beweging geldig is (een speler mag bijvoorbeeld niet spelen in een vierkant dat al bezet is door een X of een O.

  • Het programma moet kunnen bepalen wanneer een van de spelers heeft gewonnen door naar alle acht van de mogelijke drie-in-een-rij-combinaties te kijken: de drie rijen, de drie kolommen en de twee diagonalen.

  • Het programma moet ook kunnen bepalen wanneer het spel gelijkspel is - dat wil zeggen, wanneer alle negen vierkanten zijn gespeeld en geen van beide spelers heeft gewonnen.

Tegelijkertijd is het programma moet de details van de interactie met de gebruiker beheren door de gebruiker te vragen zijn of haar zet in te voeren, het spel van de computer aan te kondigen, een bijgewerkte weergave van het bord na elk spel te tonen en een winnaar te verklaren of een gelijkspel aan te kondigen wanneer het spel afgelopen is.

In deze uitdaging wordt je gevraagd om deze twee elementen van het Tic-Tac-Toe-programma te scheiden: het deel van Het programma dat de status en voortgang van het spel beheert en het deel van het programma dat de interactie met de gebruiker afhandelt. U doet dat door een klasse genaamd TicTacToeBoard te maken die methoden biedt die kunnen worden aangeroepen om een ​​compleet spel te spelen. Vervolgens wordt u gevraagd om een ​​programma te schrijven dat de klasse TicTacToeBoard gebruikt om een ​​menselijke tegenstander een spelletje Tic-Tac-Toe tegen de computer te laten spelen.

Vanuit het perspectief van de gebruiker zal dit programma identiek werken aan het programma dat is gemaakt om de eenvoudige Tic-Tac-Toe-speluitdaging op te lossen, met één verschil: voor deze versie van het spel maakt het programma een rudimentaire poging richting strategie bij het bepalen de bewegingen van de computer.De computer speelt niet perfect, dus het is nog steeds gemakkelijk te verslaan. Maar het levert wel wat meer op dan alleen maar spelen op het eerste lege veld dat het ziet.

De volgende tabel bevat de methoden die de klasse TicTacToeBoard moet implementeren. Vergeet niet dat je er twee moet maken. Java-bestanden om deze uitdaging op te lossen. De eerste, TicTacToeBoard. java, implementeert de klasse TicTacToeBoard. De tweede, simpelweg TicTacToe genaamd. java, is het programma dat de gebruiker zal uitvoeren om een ​​spelletje Tic-Tac-Toe tegen de computer te spelen.

De TicTacToeBoard-klasse
Constructor Beschrijving
TicTacToeBoard Creëert een nieuw TicTacToeBoard met alle lege vakjes leeg.
Methode Beschrijving
void reset () Hiermee wordt de status van elk vierkant opnieuw ingesteld op leeg.
int getSquare (tekenreeks vierkant) Retourneert de status van het vierkant met een vierkant, wat een van de reeksen A1, A2, A3, B1, B2, B3, C1, C2 of C3 moet zijn. Retourneert 0 als het vierkant leeg is, 1 als het een X bevat en 2 als het een O bevat. Gegenereerde uitzondering IllegalArgumentException als vierkant niet een van de toegestane waarden is.
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 spelafsluitingsvoorwaarden zijn als volgt:

1: als een rij, kolom of diagonaal alle X's bevat.

2: Als een rij, kolom of diagonaal alle Os 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 moet een elementaire poging 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 tekenreeks bevat nieuwe regeltekens om de rijen weer te geven, evenals scheidingslijnen op afzonderlijke consolelijnen, zoals in dit voorbeeld:

O | | O

- | - | -

| X |

- | - | -

| X |

Als u niet tevreden bent, kunt u de oplossing vinden op het tabblad Downloads van de productpagina Java All-in-One voor modellen, 4e editie.

Veel succes!

Java Programming Challenge: Klasse toevoegen aan het eenvoudige Tic-Tac-Toe programma

Bewerkers keuze

Hoe u Flash-video maakt en codeert - dummies

Hoe u Flash-video maakt en codeert - dummies

Als de pagina's die u maakt, zijn gewonnen ' t kan worden bekeken op mobiele apparaten (zoals een iPad of een smartphone), kunt u webpagina's maken met prachtige Flash-video. Adobe Flash Professional CS6 heeft een eigen ingebouwde video-encoder. Full-motionvideo in Flash is iets heel moois. U past de video aan voor het bekijken door de doelgroep ...

Hoe een aanpasbare interface te maken in CSS3 - dummies

Hoe een aanpasbare interface te maken in CSS3 - dummies

De grote variëteit en soorten schermen gebruikt om informatie weer te geven, maakt het nodig dat uw CSS3-commando's de gebruiker toestaan ​​om het formaat van de elementen naar wens aan te passen. In de meeste gevallen kunt u de gebruiker eenvoudig toestaan ​​om het element op elke gewenste grootte te maken. Er kunnen zich echter situaties voordoen waarin u de grootte van de grootte moet controleren ...

Hoe u een eenvoudige tabel op uw webpagina maakt - dummies

Hoe u een eenvoudige tabel op uw webpagina maakt - dummies

Tabellen laten u organiseer informatie op uw webpagina en geef het een georganiseerde uitstraling die uw bezoekers nuttig zullen vinden. Bij gebruik zoals bedoeld, hebben tabellen rijen en kolommen. Voor elke spot waar een rij en kolom elkaar kruisen, hebt u een tabelcel. Elke cel kan zijn eigen opmaak hebben: de gegevens erin ...

Bewerkers keuze

Hoe Postproduction Shareninging Filters werken - dummies

Hoe Postproduction Shareninging Filters werken - dummies

Verscherpingsfilters werken in postproductie door de randen (of aangrenzende gebieden met tonaal contrast) te benadrukken aan elkaar) in een afbeelding. Ze creëren een fijne highlight aan de donkere kant van de rand en een piepklein lowlight aan de lichtere kant van de rand. Dit toegevoegde contrast zorgt ervoor dat de randen er scherper uitzien vanaf een ...

HDR Work-Flow voor foto's met één belichting - dummies

HDR Work-Flow voor foto's met één belichting - dummies

In grote lijnen, enkele belichting hoog dynamisch bereik volgt dezelfde workflow als HDR-fotografie tussen haakjes. Er kunnen kleine verschillen zijn, dus hier is een overzicht van de werkstroom: configureer uw camera voor single-shot HDR. Het enige dat u zoekt, is de beste foto die u kunt maken. Besteed aandacht aan de lichtomstandigheden, het onderwerp, beweging en ...

Geavanceerde compacte en superzoomcamera's voor HDR-fotografie - dummies

Geavanceerde compacte en superzoomcamera's voor HDR-fotografie - dummies

Stap omhoog van compacte digitale camera's binnen het budgetbereik, vindt u duurdere compacte digitale camera's voor HDR-fotografie, ook wel high-end compacts, superzoomlenzen en dSLR-look-alikes genoemd. Er zijn zoveel vaak overlappende categorieën dat het je hoofd laat draaien. De twee dingen die deze reeks camera's gemeen hebben, zijn hun ...

Bewerkers keuze

In te schakelen Class Tracking in QuickBooks 2013 - dummies

In te schakelen Class Tracking in QuickBooks 2013 - dummies

Om activity-based costing te gebruiken (ABC ) in QuickBooks 2013 moet u de QuickBooks Class Tracking-functie inschakelen. Met Class Tracking kunt u inkomsten- en onkostentransacties categoriseren als niet alleen vallen in inkomsten- en uitgavenrekeningen, maar ook als vallen in bepaalde klassen. Volg deze stappen om Class Tracking in QuickBooks in te schakelen: Kies Bewerken → Voorkeuren ...

Gebruikt om een ​​exemplaar van een QuickBooks-gegevensbestand te gebruiken - dummies

Gebruikt om een ​​exemplaar van een QuickBooks-gegevensbestand te gebruiken - dummies

Ongeacht of de client verzendt handmatig een accountantskopie van een QuickBooks-gegevensbestand, e-mails een accountantsexemplaar, of verzendt een accountantskopie via de Intuit-bestandsoverdrachtservice, u gebruikt de kopie van de accountant door Bestand → Verzend bedrijfsdossier → Accountantskopie → Open & converteer overzetten te kiezen Bestand commando. Wanneer u deze opdracht kiest, geeft QuickBooks een ...

Hoe Audit Trails te gebruiken in QuickBooks - dummies

Hoe Audit Trails te gebruiken in QuickBooks - dummies

Als u besluit om meerdere gebruikers toegang te geven tot de QuickBooks-gegevens bestand, zult u de QuickBooks Audit Trail-functie waarderen, die bijhoudt wie welke wijzigingen aan het QuickBooks-gegevensbestand aanbrengt. U kunt transacties niet verwijderen uit de lijst of geschiedenis van de audittrail, behalve door gegevens te archiveren en te condenseren. Audit trail inschakelen ...