Kuinka luoda perustekstipohjainen peli C++:lla

Kuinka Luoda Perustekstipohjainen Peli C Lla



Tekstipohjaiset pelit käyttävät tekstimerkkejä ja komentorivikäyttöliittymää vuorovaikutuksessa pelaajan kanssa. Niissä ei ole graafisia kuvia, ääniä tai animaatioita. Käyttäjä syöttää komennon konsoli-ikkunan kautta.

Kuinka luoda perustekstipohjainen peli C++:lla

C++:n tekstipohjaisissa peleissä pelaaja voi syöttää komentoja konsoli-ikkunan kautta, ja ohjelma käsittelee pelaajan liikkeet. Täällä olen luonut tekstipohjaisen tic-tac-toe-pelin, joka antaa käyttäjälle kaksi vaihtoehtoa pelata. Käyttäjä voi joko pelata C++-kääntäjällä tai toisen ihmisen kanssa. Tässä pelissä on ominaisuus, joka jatkuvasti laskee yhteen voittavan pelaajan pisteet. Kun ensimmäisen pelin tulos on julkistettu, uusintaotteluvaihtoehto on käytettävissä.

Pelin voittamisen säännöt

Kaksi pelaajaa pelaa tic-tac-toe-peliä ja asettavat X:n ja 0:n vaihtoehtoisesti johonkin yhdeksästä kolmesta kolmesta ruudukosta. Pelin voittaa se pelaaja, joka saa ensimmäisenä kolme peräkkäistä pistettä pysty-, vaaka- tai diagonaalisuunnassa. Jokaisen pelaajan tulee ajatella viisaasti ja katsoa eteenpäin toisen pelaajan seuraavaan siirtoon.







Tekstipohjaisen tic-tac-toe-pelin suunnittelun koodissa on eri osiot, jotka on jaettu toiminnallisuuden perusteella. Ensimmäisessä osiossa käyttäjä päättää leikkiikö tietokoneen vai kanssaihmisen kanssa. Kun vahvistustapa on päätetty, ohjelma pyytää käyttäjältä syötteitä. Molemmat pelaajat syöttävät syöttönsä peräkkäin.



//Ota palaute pelaajilta
mitätön PlayerInput ( Pelaaja & pelaaja ) {
int pos ;
cout << endl ;
cout << ' \t ' << pelaaja. getName ( ) << ' Vuoro: ' ;
cout << ' \t Syötä paikka ' <> pos ;
pos - = 1 ;
jos ( tyhjä hakemisto [ pos ] == 1 ) {
cout << '-----Sijainti ei tyhjä -------' << endl ;
PlayerInput ( pelaaja ) ;
} muu {
tyhjä hakemisto [ pos ] = 1 ;
tyhjä Count - = 1 ;
pelaaja. getName ( ) . vertailla ( 'Pelaaja I' ) == 0 ? lauta [ pos ] = 'X' : lauta [ pos ] = 'o' ;
}

}

Otettuaan syötteitä käyttäjältä se tarkistaa voittosäännön. CheckWin()-funktiossa on kaksi parametria p1 ja p2, joilla tarkistetaan, onko pelaaja voittanut vai ei. Eri muuttujat ilmoitetaan funktiossa i, j ja k ovat silmukalle ilmoitettuja kokonaislukumuuttujia ja lippu on Boolen funktio, jolla tarkistetaan voittoehto. Silmukka alkaa aivan ensimmäisestä paikasta ja jatkaa iterointia kaikki yhdeksän asemaa. Ensimmäinen_symboli on merkki, joka voi olla 0 tai X, jos se on totta, niin kaikki mahdolliset yhdistelmät tarkistetaan voittosääntöä varten. Muussa tapauksessa iteraattori siirtyy seuraavaan paikkaan, ja sama jatkuu, kunnes kaikki mahdolliset paikat on tarkistettu. Jos lippu on asetettu tosi, voittaja julistetaan ja ohjelma pyytää tekemään valinnan uudelleen.



mitätön checkWin ( Pelaaja & p1, Pelaaja & p2 ) {
int minä, j, k ;
bool lippu = väärä ;
hiiltyä ensimmäinen_symboli ;
varten ( i = 0 ; i < 8 ; i ++ ) {
ensimmäinen_symboli = lauta [ voittolista [ i ] . rivi [ 0 ] ] ;

jos ( ( ensimmäinen_symboli ! = 'X' ) && ( ensimmäinen_symboli ! = 'o' ) ) {
lippu = väärä ;
jatkaa ;
}
lippu = totta ;
varten ( j = 0 ; j < 3 ; j ++ ) {
jos ( ensimmäinen_symboli ! = lauta [ voittolista [ i ] . rivi [ j ] ] ) {
lippu = väärä ;
tauko ;
}
}
jos ( lippu ) {
gameOn = 0 ;
jos ( ensimmäinen_symboli == 'X' ) {
cout << '------------------------' << endl ;
cout << ' \t Pelaaja, jonka voitin' << endl ;
cout << '------------------------' << endl ;
p1. voitti ( ) ;
} muu {
p2. voitti ( ) ;
jos ( tietokonetta vastaan ) {
cout << '------------------------' << endl ;
cout << ' \t Tietokone voitti' << endl ;
cout << '------------------------' << endl ;
} muu {
cout << '------------------------' << endl ;
cout << ' \t Pelaaja II VOI' << endl ;
cout << '------------------------' << endl ;

}
}
displayScore ( p1, p2 ) ;
tauko ;
}

Tämä koodin osa näyttää pelin tuloksen. Jos peli pelataan tietokonetta vastaan, näytetään pelaajan 1 ja tietokoneen tulos, muussa tapauksessa pelaajan 1 ja pelaajan 2 tulos.





mitätön displayScore ( Pelaaja & p1, pelaaja & p2 ) {
cout << endl ;
cout << ' \t PISTEET: \t ' ;
jos ( tietokonetta vastaan )
cout << 'Pelaaja I:' << p1. getScore ( ) << ' \t Tietokone: ' << p2. getScore ( ) << endl ;
muu
cout << 'Pelaaja I:' << p1. getScore ( ) << ' \t Pelaaja II: ' << p2. getScore ( ) << endl ;
}

Tämä on pääkoodi kahden pelaajan tic-tac-toe-pelin suorittamiseen. Käyttäjä voi valita useista suoritettavista toimenpiteistä kytkintapauslausekkeen avulla. Tämä koodi tarjoaa käyttäjäystävällisen käyttöliittymän pelin pelaamiseen C++-kääntäjällä, ja koodi jatkuu, kunnes käyttäjä valitsee poistumisvaihtoehdon.

int pää ( )
{
int ch ;

sillä aikaa ( 1 ) {
cout << '      -----------VALIKKO----------' << endl ;
cout << ' \t 1. 1 pelaajan peli' << endl ;
cout << ' \t 2. 2 pelaajan peli' << endl ;
cout << ' \t 3. Poistuaksesi ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Valitse vaihtoehto' <> ch ;
vaihtaa ( ch ) {
tapaus 1 : {
Peli * peli = Uusi Peli ;
peli - > lämpöä ( ) ;
peli - > onePlayerGame ( ) ;
}
tauko ;
tapaus 2 : {
Peli * peli = Uusi Peli ;
peli - > lämpöä ( ) ;
peli - > TwoPlayerGame ( ) ;
}
tauko ;
tapaus 3 :
palata 0 ;
oletuksena :
cout << 'OOP Virheellinen vaihtoehto! YRITÄ UUDELLEEN' ;
}

}
palata 0 ;
}

Täydellinen koodi tekstipohjaiseen Tic-Tac-Toc-peliin

Tämä on täydellinen koodi tekstipohjaisen tic-tac-toe-pelin suunnitteluun ja toteuttamiseen.



#include
#sisällytä
#include
#sisällytä
#include
käyttämällä nimiavaruus std ;

typedef struct {
int * rivi ;
} WinList ;


luokkaa Pelaaja {
yksityinen :
merkkijonon nimi ;
int pisteet ;
julkinen :
Pelaaja ( ) : Pelaaja { '' } { }
Pelaaja ( merkkijono n ) : pisteet { 0 } , nimi { n } { }

mitätön voitti ( ) {
//lisää pisteitä
pisteet ++ ;
}
int getScore ( ) { palata Tämä - > pisteet ; }

merkkijono getName ( ) { palata Tämä - > nimi ; }
} ;

luokkaa Peli {
yksityinen :
hiiltyä hallitus [ 9 ] ;
int tyhjä hakemisto [ 9 ] ;
int gameOn, tietokonetta vastaan ;
int tyhjä Count ;
WinList voittolista [ 8 ] ;

mitätön näyttötaulu ( ) {
cout << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << lauta [ 0 ] << ' | ' << lauta [ 1 ] << ' | ' << lauta [ 2 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << lauta [ 3 ] << ' | ' << lauta [ 4 ] << ' | ' << lauta [ 5 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << lauta [ 6 ] << ' | ' << lauta [ 7 ] << ' | ' << lauta [ 8 ] << endl ;
cout << '   |   |   ' << endl ;
cout << endl ;
}

mitätön tietokoneen syöttö ( ) {
int pos ;
pos = rand ( ) % 10 ;
jos ( tyhjä hakemisto [ pos ] == 1 ) {
jos ( tyhjä Count < 0 )
palata ;
tietokoneen syöttö ( ) ;
} muu {
cout << 'Valitse tietokone:' << pos + 1 << endl ;
tyhjä hakemisto [ pos ] = 1 ;
tyhjä Count - = 1 ;
lauta [ pos ] = 'o' ;
}

}

mitätön PlayerInput ( Pelaaja & pelaaja ) {
int pos ;
cout << endl ;
cout << ' \t ' << pelaaja. getName ( ) << ' Vuoro: ' ;
cout << ' \t Syötä paikka ' <> pos ;
pos - = 1 ;
jos ( tyhjä hakemisto [ pos ] == 1 ) {
cout << '-----Sijainti ei tyhjä -------' << endl ;
PlayerInput ( pelaaja ) ;
} muu {
tyhjä hakemisto [ pos ] = 1 ;
tyhjä Count - = 1 ;
pelaaja. getName ( ) . vertailla ( 'Pelaaja I' ) == 0 ? lauta [ pos ] = 'X' : lauta [ pos ] = 'o' ;
}

}

mitätön checkWin ( Pelaaja & p1, Pelaaja & p2 ) {
int minä, j, k ;
bool lippu = väärä ;
hiiltyä ensimmäinen_symboli ;
varten ( i = 0 ; i < 8 ; i ++ ) {
ensimmäinen_symboli = lauta [ voittolista [ i ] . rivi [ 0 ] ] ;

jos ( ( ensimmäinen_symboli ! = 'X' ) && ( ensimmäinen_symboli ! = 'o' ) ) {
lippu = väärä ;
jatkaa ;
}
lippu = totta ;
varten ( j = 0 ; j < 3 ; j ++ ) {
jos ( ensimmäinen_symboli ! = lauta [ voittolista [ i ] . rivi [ j ] ] ) {
lippu = väärä ;
tauko ;
}
}
jos ( lippu ) {
gameOn = 0 ;
jos ( ensimmäinen_symboli == 'X' ) {
cout << '------------------------' << endl ;
cout << ' \t Pelaaja, jonka voitin' << endl ;
cout << '------------------------' << endl ;
p1. voitti ( ) ;
} muu {
p2. voitti ( ) ;
jos ( tietokonetta vastaan ) {
cout << '------------------------' << endl ;
cout << ' \t Tietokone voitti' << endl ;
cout << '------------------------' << endl ;
} muu {
cout << '------------------------' << endl ;
cout << ' \t Pelaaja II VOI' << endl ;
cout << '------------------------' < 0 ) && ( gameOn ! = 0 ) ) {

jos ( tietokonetta vastaan )
käsi == 1 ? tietokoneen syöttö ( ) : PlayerInput ( p2 ) ;
muu
käsi == 1 ? PlayerInput ( p1 ) : PlayerInput ( p2 ) ;
käsi = ! käsi ;
näyttötaulu ( ) ;
checkWin ( p1, p2 ) ;
}
jos ( tyhjä Count <= 0 ) {
cout << '      -----------------------' << endl ;
cout << ' \t Ei VOITTAJA' << endl ;
cout << '      -----------------------' << endl ;
}
cout << endl ;
cout <> uusintaottelu ;
jos ( ( uusintaottelu == 'JA' ) || ( uusintaottelu == 'ja' ) ) {
lämpöä ( ) ;
pelata ( p1, p2 ) ;
}

}
mitätön displayScore ( Pelaaja & p1, pelaaja & p2 ) {
cout << endl ;
cout << ' \t PISTEET: \t ' ;
jos ( tietokonetta vastaan )
cout << 'Pelaaja I:' << p1. getScore ( ) << ' \t Tietokone: ' << p2. getScore ( ) << endl ;
muu
cout << 'Pelaaja I:' << p1. getScore ( ) << ' \t Pelaaja II: ' << p2. getScore ( ) << endl ;
}

julkinen :
Peli ( ) : tyhjä Count { 0 } , GameOn { 1 } , Tietokonetta vastaan { 0 } {
lämpöä ( ) ;
voittolista [ 0 ] . rivi = Uusi int [ 3 ] { 0 , 1 , 2 } ;
voittolista [ 1 ] . rivi = Uusi int [ 3 ] { 3 , 4 , 5 } ;
voittolista [ 2 ] . rivi = Uusi int [ 3 ] { 6 , 7 , 8 } ;
voittolista [ 3 ] . rivi = Uusi int [ 3 ] { 0 , 3 , 6 } ;
voittolista [ 4 ] . rivi = Uusi int [ 3 ] { 1 , 4 , 7 } ;
voittolista [ 5 ] . rivi = Uusi int [ 3 ] { 2 , 5 , 8 } ;
voittolista [ 6 ] . rivi = Uusi int [ 3 ] { 0 , 4 , 8 } ;
voittolista [ 7 ] . rivi = Uusi int [ 3 ] { 2 , 4 , 6 } ;
}

mitätön lämpöä ( ) {
gameOn = 1 ;

tyhjä Count = 0 ;
srand ( aika ( 0 ) ) ;
varten ( koko_t i = 0 ; i < 10 ; i ++ ) {
tyhjä hakemisto [ i ] = 0 ;
hallitus [ i ] = ( i + 1 ) + '0' ;
tyhjä Count ++ ;
}
tyhjä Count -- ;
}

mitätön onePlayerGame ( ) {
//Soittimen luominen
Pelaaja p ( 'Pelaaja I' ) ;
Pelaaja c ( 'Tietokone' ) ;
cout << '       -----------------------' << endl ;
cout << ' \t Pelaaja I: X \t Tietokone: O' << endl ;
cout << '       -----------------------' << endl ;
cout << endl ;
tietokonetta vastaan = 1 ;
pelata ( c, p ) ;

}

mitätön TwoPlayerGame ( ) {
//Soittimen luominen
Pelaaja p ( 'Pelaaja I' ) ;
Pelaaja c ( 'Pelaaja II' ) ;
cout << '       -----------------------' << endl ;
cout << ' \t Pelaaja I: X \t Pelaaja II: O' << endl ;
cout << '       -----------------------' << endl ;
cout << endl ;
tietokonetta vastaan = 0 ;
pelata ( c, p ) ;
}
} ;

int pää ( )
{
int ch ;

sillä aikaa ( 1 ) {
cout << '      -----------VALIKKO----------' << endl ;
cout << ' \t 1. 1 pelaajan peli' << endl ;
cout << ' \t 2. 2 pelaajan peli' << endl ;
cout << ' \t 3. Poistuaksesi ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Valitse vaihtoehto' <> ch ;
vaihtaa ( ch ) {
tapaus 1 : {
Peli * peli = Uusi Peli ;
peli - > lämpöä ( ) ;
peli - > onePlayerGame ( ) ;
}
tauko ;
tapaus 2 : {
Peli * peli = Uusi Peli ;
peli - > lämpöä ( ) ;
peli - > TwoPlayerGame ( ) ;
}
tauko ;
tapaus 3 :
palata 0 ;
oletuksena :
cout << 'OOP Virheellinen vaihtoehto! YRITÄ UUDELLEEN' ;
}

}
palata 0 ;
}

Tämä on täydellinen koodi tic-tac-toe-pelin suorittamiseen, jota voidaan pelata kahdessa tilassa, joko tietokoneen tai kanssaihmisen kanssa. Tämä on monipuolinen koodi, joka sisältää kaikki mahdolliset komennot. Kun käyttäjä syöttää paikan, joka on jo täytetty, se ei korvaa tätä paikkaa ja pitää tätä siirtoa virheellisenä.

Tähän asti pelaaja yksi on valinnut ensimmäisen laatikon ja sitten seuraavalla kierroksella tietokone merkitsi kuudennen laatikon:

Molemmat pelaajat ovat valinneet kaksi laatikkoa tähän asti ja seuraavassa vuorossa pelaaja I valitsee seitsemännen laatikon, jolloin syntyy peräkkäinen pystykuvio:

Käyttäjä päättää käyttää tietokonetta pelin pelaamiseen, joten kolmen siirron jälkeen käyttäjä voitti tietokoneelta ja pelaaja 1:n tietueeseen lisätään yksi piste. Ensimmäisen ottelun päätyttyä kääntäjä pyytää uusintaottelun. Käyttäjä päättää vaihtoehdoista ja ohjelma palaa pääosioon. Valittuaan vaihtoehdon kolme kääntäjä suorittaa koodin.

Johtopäätös

Tekstipohjaiset pelit käyttävät tekstimerkkejä ja komentorivikäyttöliittymää vuorovaikutuksessa pelaajan kanssa. Niissä ei ole graafisia kuvia, ääniä tai animaatioita. Käyttäjä syöttää komennon konsoli-ikkunan kautta. Käyttäjäystävällinen tekstipohjainen tic-tac-toe-peli on rakennettu C++:lla. Se käyttää erilaisia ​​komentoja pelin tekemiseen, jota voidaan pelata joko tietokoneen tai toisen pelaajan kanssa.