Tic-Tac-Toe-pelin luominen C++:ssa

Tic Tac Toe Pelin Luominen C Ssa



Tic-tac-toe on mielenkiintoinen, vanha ja klassinen peli, joka on viihdyttänyt sukupolvia. Tic-tac-toe:ssa kaksi pelaajaa kilpailee 9-neliöruudukossa, joka on merkitty hash-kuviolla. Jokainen pelaaja ottaa vuoronsa ja asettaa symbolin (O tai X) johonkin tyhjään ruutuun. Tässä artikkelissa tutkimme kuinka luoda tic-tac-toe-peli C++-ohjelmointikielellä. Seuraava esimerkki opastaa sinua yksinkertaisen, mutta mukaansatempaavan tic-tac-toe-pelin rakentamisessa. Se kattaa keskeiset käsitteet, koodien erittelyt ja huomiot interaktiivisen pelikokemuksen luomiseksi.

Luo Tic-Tac-Toe-peli C++:ssa

Seuraava esimerkki tarjoaa tämän interaktiivisen kahden pelaajan tic-tac-toe-pelin tekemisen perusteet. Se esittelee yksinkertaisen ja helpon lähestymistavan ohjelmointiin C++:lla ja tarjoaa hyvin dokumentoidun lähdekoodin lapsuuden haasteiden elämiseen ystävien kanssa uudessa digitaalisessa muodossa. Katsotaanpa seuraava koodi.

Esimerkki: Peruskonsolipohjainen Tic-Tac-Toe ilman 2D-taulukkoa

Tässä esimerkissä käytämme 2D-taulukkoa, funktioita ja if-else-ehtoja tehdäksemme tic-tac-toe-pelin C++:ssa. Tässä pelissä kaksi pelaajaa saa vuorotellen syöttää siirtonsa, ja se määrittää pelin tilan tarkistamalla voittajan tai tasatilanteen. Katso seuraava annettu koodi:







#include

käyttäen nimiavaruutta std ;

mitätön piirustuslauta ( hiiltyä hallitus [ 3 ] [ 3 ] ) ;

bool isMoveValid ( hiiltyä hallitus [ 3 ] [ 3 ] , int rivi , int kol ) ;

bool isBoardFull ( hiiltyä hallitus [ 3 ] [ 3 ] ) ;

hiiltyä checkWinner ( hiiltyä hallitus [ 3 ] [ 3 ] ) ;

int pää ( ) {

hiiltyä hallitus [ 3 ] [ 3 ] = { { '' , '' , '' } , { '' , '' , '' } , { '' , '' , '' } } ;

int rivi , kol ;

hiiltyä nykyinen Player = 'X' ;

sillä aikaa ( totta ) {

piirustuslauta ( hallitus ) ;

cout << 'Pelaaja' << nykyinen Player << ' vuoro. Syötä rivi (1-3) ja sarake (1-3): ' ;

syöminen >> rivi >> kol ;

rivi --;

kol --;

jos ( isMoveValid ( hallitus , rivi , kol ) ) {

hallitus [ rivi ] [ kol ] = nykyinen Player ;

hiiltyä voittaja = checkWinner ( hallitus ) ;

jos ( voittaja != '' ) {

piirustuslauta ( hallitus ) ;

cout << 'Pelaaja' << voittaja << 'on voittaja! \n ' ;

tauko ;

}

jos ( isBoardFull ( hallitus ) ) {

piirustuslauta ( hallitus ) ;

cout << 'Se on tasapeli! \n ' ;

tauko ;

}

nykyinen Player = ( nykyinen Player == 'X' ) ? 'o' : 'X' ;

} muu {

cout << 'Virheellinen siirto. Valitse toinen solu. \n ' ;

} }

palata 0 ;

}

mitätön piirustuslauta ( hiiltyä hallitus [ 3 ] [ 3 ] ) {

cout << 'b| \t 1 \t | \t 2 \t | \t 3 \t | \n ' ;

cout << '___________________________ \n ' ;

varten ( int m = 0 ; m < 3 ; m ++ ) {

cout << m + 1 << '| ' ;

varten ( int t = 0 ; t < 3 ; t ++ ) {

cout << '' << hallitus [ m ] [ t ] ;

jos ( t < 2 ) cout << ' \t | \t ' ;

}

cout << ' \t | \n ' ;

jos ( m < 2 ) cout << '____________________________ \n ' ;

}

cout << ' \n ' ; }

bool isMoveValid ( hiiltyä hallitus [ 3 ] [ 3 ] , int rivi , int kol ) {

palata ( rivi >= 0 && rivi < 3 && kol >= 0 && kol < 3 && hallitus [ rivi ] [ kol ] == '' ) ;

}

bool isBoardFull ( hiiltyä hallitus [ 3 ] [ 3 ] ) {

varten ( int m = 0 ; m < 3 ; m ++ ) {

varten ( int t = 0 ; t < 3 ; t ++ ) {

jos ( hallitus [ m ] [ t ] == '' ) {

palata väärä ;

} } }

palata totta ; }

hiiltyä checkWinner ( hiiltyä hallitus [ 3 ] [ 3 ] ) {

varten ( int m = 0 ; m < 3 ; m ++ ) {

jos ( hallitus [ m ] [ 0 ] == hallitus [ m ] [ 1 ] && hallitus [ m ] [ 1 ] == hallitus [ m ] [ 2 ] && hallitus [ m ] [ 0 ] != '' ) {

palata hallitus [ m ] [ 0 ] ;

}

jos ( hallitus [ 0 ] [ m ] == hallitus [ 1 ] [ m ] && hallitus [ 1 ] [ m ] == hallitus [ 2 ] [ m ] && hallitus [ 0 ] [ m ] != '' ) {

palata hallitus [ 0 ] [ m ] ;

} }

jos ( hallitus [ 0 ] [ 0 ] == hallitus [ 1 ] [ 1 ] && hallitus [ 1 ] [ 1 ] == hallitus [ 2 ] [ 2 ] && hallitus [ 0 ] [ 0 ] != '' ) {

palata hallitus [ 0 ] [ 0 ] ;

}

jos ( hallitus [ 0 ] [ 2 ] == hallitus [ 1 ] [ 1 ] && hallitus [ 1 ] [ 1 ] == hallitus [ 2 ] [ 0 ] && hallitus [ 0 ] [ 2 ] != '' ) {

palata hallitus [ 0 ] [ 2 ] ;

}

palata '' ;

}

Tässä on erittely sen toiminnoista:



'#include ' on esiprosessoriohje, joka sisältää I/O-virtakirjaston syöttö-/tulostustoimintoja varten. 'Nimitilan std' käyttö mahdollistaa cout-, cin- jne. -funktioiden suoran käytön C++-ohjelmassa ilman 'std::-etuliitettä'.



Tässä ohjelmassa on neljä funktioprototyyppiä – ne ovat drawBoard(), isMoveValid(), isBoardFull() ja checkWinner(). Funktioilmoitus tunnetaan funktion prototyyppinä. Vaikka se tulee ohjelman päätoiminnon jälkeen, sitä käytetään. Päätoiminto sisältää pelisilmukan ja logiikan pelaajien vuorojen ja liikkeiden hallitsemiseksi. Päätoiminnossa pelilauta alustetaan välilyönneillä.





hiiltyä hallitus [ 3 ] [ 3 ] = { { '' , '' , '' } , { '' , '' , '' } , { '' , '' , '' } } ;

Tämän jälkeen määritetään kaksi rivi- ja sarakemuuttujaa tallentamaan pelaajan siirtosyötteen. 'char currentPlayer = 'X';' määrittää, että 'X'-pelaaja menee ensin.

Nyt alkaa (tosi) -pelisilmukka, ja se jatkuu, kunnes on olemassa voittaja tai tasapeli. Tämä 'while' -silmukka kutsuu 'drawBoard();' taulun näyttämiseen. Kun taulu on näkyvissä konsolissa, käyttäjää pyydetään valitsemaan solu, joka merkitään seuraavassa koodilausekkeessa:



cout << 'Pelaaja' << nykyinen Player << ' vuoro. Syötä rivi ja sarake (1-3): ' ;

Pelaaja syöttää siirtonsa kohtaan 'cin >> rivi >> col;'.

Kun solu valitaan merkitsemistä varten, ohjelma tarkistaa ensin syötteen oikeellisuuden ja varmistaa, ettei solu ole jo täytetty kutsumalla isMoveValid()-funktiota.

hallitus [ rivi ] [ kol ] = nykyinen Player ;

Tämä lausunto asettaa pelaajan merkin laudalle.

hiiltyä voittaja = checkWinner ( hallitus ) ;

jos ( voittaja != '' ) {

piirustuslauta ( hallitus ) ;

cout << 'Pelaaja' << voittaja << 'voitto! \n ' ;

Nämä lausunnot tarkistavat voittajan aina, kun pelaaja merkitsee merkinnän laudalle. Voittajan nimi julkaistaan, jos voittaja löytyy, ja ohjelma poistuu pelikierrosta.

jos ( isBoardFull ( hallitus ) ) {

Tämä lausunto tarkistaa tasapelin. Tasatilanne syntyy, kun pöytä on täynnä eikä voittajaa ole. Tässä tapauksessa 'Se on tasapeli!' on painettu näytölle.

nykyinen Player = ( nykyinen Player == 'X' ) ? 'o' : 'X' ;

Tämä lausunto muuttaa pelaajat antamaan jokaiselle pelaajalle mahdollisuuden pelata oma vuoronsa.

cout << 'Virheellinen siirto. Valitse toinen solu. \n ' ;

Jos siirto ei kelpaa, käyttäjää kehotetaan syöttämään uudelleen ja valitsemaan mikä tahansa muu solu.

Pääfunktion jälkeen alkavat funktiomääritykset aiemmin ilmoitettuille funktioprototyypeille. Ensimmäinen tässä määritelty funktio on drawBoard(), jota käytetään piirtämään tic-tac-toe-levy konsoliin. DrawBoard()-funktio tulostaa taulun nykyisen tilan, mukaan lukien ruudukkoviivat.

Seuraava tässä määritelty funktio on isMoveValid(). Tätä toimintoa käytetään määrittämään, onko siirto sallittu sekä laudan sisällä että tyhjässä solussa. IsBoardFull()-funktiota käytetään tarkistamaan, onko lauta vielä täynnä. Tämä on tasatilanteen ehto, kun voittajaa ei ole. IsBoardFull() tarkistaa, ovatko kaikki pelilaudan paikat täytetty, mikä osoittaa tasatilanteen, jos voittajaa ei ole. Jos voittaja löytyy, se voidaan selvittää käyttämällä checkWinner()-funktiota. CheckWinner() tarkistaa kaikki mahdolliset voittolinjat saman pelaajan merkin ('X' tai 'O') varalta ja palauttaa voittajan merkin, jos se löytyy, tai välilyönnin ' ', jos voittajaa ei vielä ole. Seuraava on ohjelman tulos. Se näyttää jokaisen pelaajan jokaisen vuoron.

Ensinnäkin taulu on selkeä; pelaajaa 'X' kehotetaan valitsemaan solu, joka merkitään. Tässä pelaaja “X” syöttää numerot 2 ja 2. Rivin 2 ja sarakkeen 2 solut on merkitty. Katso merkittyä taulua seuraavassa:

Nyt on pelaajan O vuoro. Pelaajaa kehotetaan valitsemaan solu, joka merkitään. Pelaaja 'O' valitsee 1 riville ja 1 sarakkeelle. Valittu solu on merkitty pelaajalle 'O', kuten seuraavassa ulostulopätkässä näkyy:

Jokaisen pelaajan kaikki vuorot noudattavat samaa kaavaa. On pelaajan X vuoro, ja pelaaja valitsee 1 riville ja 2 sarakkeelle. Katso seuraavat tulosotokset:

Nyt vuoro on pelaajalla 'O'. Pelaaja valitsee 1 riville ja 3 sarakkeelle.

Seuraava vuoro on jälleen pelaajalla “X”. Pelaaja valitsee 3 riville ja 1 sarakkeelle.

Pelaaja 'O' valitsee 3 riville ja 2 sarakkeelle.

Pelaaja “X” valitsee toisen rivin ja kolmannen sarakkeen.

Pelaaja 'O' valitsee nyt toisen rivin ja ensimmäisen sarakkeen.

Pelaaja “X” valitsee tällä kertaa kolmannen rivin ja kolmannen sarakkeen.

Kukaan pelaaja ei voinut tehdä mitään viivaa vaaka-, pysty- tai vinottain, joten se on tasapeli. Valitulle syötejoukolle ei ole voittajaa.

Kaiken kaikkiaan koodi sisältää pääpelisilmukan, joka vastaa pelin tilan ja käyttäjän syötteiden käsittelystä, sekä useita aputoimintoja, joita käytetään laudan piirtämiseen, siirtojen vahvistamiseen, täysien pelien tarkistamiseen ja voittajan määrittämiseen. .

Johtopäätös

Tic-tac-toe-pelin kehittäminen C++:lla on erinomainen käytännön harjoitus ohjelmointitaitojen vahvistamiseen. Artikkeli selittää tarkasti, kuinka tic-tac-toe luodaan C++:ssa. Tässä artikkelissa annetut vaiheittaiset ohjeet sisälsivät 2D-taulukon, toiminnot ja jos-else-ehdot, jotta lukijat ymmärtävät pelimekaniikkaa, käyttäjien vuorovaikutuksia ja tehokkaan koodin jäsentelyn. Koodin yksityiskohtainen läpikäynti ja ydinpelin kannalta ratkaisevien toimintojen selitykset antavat lukijoille arvokasta tietoa sekä C++-ohjelmointikäytännöistä että yksinkertaisen pelikehityksen monimutkaisuudesta.