Kako stvoriti osnovnu igru ​​temeljenu na tekstu u C++

Kako Stvoriti Osnovnu Igru Temeljenu Na Tekstu U C



Igre temeljene na tekstu oslanjaju se na tekstualne znakove i sučelje naredbenog retka za interakciju s igračem. Nemaju grafičke slike, zvukove ili animacije. Korisnik unosi naredbu kroz prozor konzole.

Kako stvoriti osnovnu igru ​​temeljenu na tekstu u C++

Tekstualne igre u C++-u omogućuju igraču unos naredbi kroz prozor konzole, a program obrađuje poteze igrača. Ovdje sam stvorio tekstualnu igru ​​tic-tac-toe koja korisniku omogućuje dvije mogućnosti igranja. Korisnik se može igrati s C++ kompajlerom ili s drugim čovjekom. Ova igra ima značajku koja stalno zbraja rezultat za pobjedničkog igrača. Nakon što je objavljen ishod prve utakmice, dostupna je opcija revanša.

Pravila za pobjedu u igri

Dva igrača igraju igru ​​tic-tac-toe, naizmjenično postavljajući X i 0 u jedno od devet dostupnih mjesta na mreži tri puta tri. Igru pobjeđuje onaj igrač koji prvi dobije tri svoje uzastopne oznake u okomitom, vodoravnom ili dijagonalnom smjeru. Svaki igrač mora pametno razmišljati i unaprijed gledati na sljedeći potez drugog igrača.







Kôd za dizajniranje tekstualne igre tic-tac-toe ima različite odjeljke, podijeljene na temelju funkcionalnosti. U prvom dijelu korisnik odlučuje hoće li se igrati s računalom ili sučovjekom. Nakon odabira načina pojačanja, program od korisnika traži unos. Oba igrača unose jedan za drugim.



//Primajte podatke od igrača
poništiti playerInput ( Igrač i igrač ) {
int poz ;
cout << endl ;
cout << ' \t ' << igrač. getName ( ) << ' Skretanje: ' ;
cout << ' \t Unesite poziciju ' <> poz ;
poz - = 1 ;
ako ( prazanIndeks [ poz ] == 1 ) {
cout << '-----Pozicija nije prazna-------' << endl ;
playerInput ( igrač ) ;
} drugo {
prazanIndeks [ poz ] = 1 ;
prazniBroj - = 1 ;
igrač. getName ( ) . usporediti ( 'Igrač I' ) == 0 ? odbor [ poz ] = 'X' : odbor [ poz ] = 'O' ;
}

}

Nakon unosa od korisnika, provjerava pravilo pobjede. Funkcija checkWin() ima dva parametra p1 i p2 za provjeru je li igrač pobijedio ili nije. Različite varijable deklarirane su u funkciji i, j i k su cjelobrojne varijable deklarirane za petlju, a zastavica je Booleova funkcija za provjeru uvjeta pobjede. Petlja počinje od prve pozicije i ponavlja se za svih devet pozicija. Prvi_simbol je znak koji može biti 0 ili X ako je istinit, tada se provjeravaju sve moguće kombinacije za pobjedničko pravilo. U suprotnom, iterator se pomiče na sljedeću poziciju i isto se nastavlja dok se sve moguće pozicije ne provjere. Ako je zastavica postavljena na istinitu, tada se proglašava pobjednik, a program traži ponovno odabiranje.



poništiti checkWin ( Igrač i p1,Igrač i p2 ) {
int ja,j,k ;
bool zastava = lažno ;
char prvi_simbol ;
za ( ja = 0 ; ja < 8 ; ja ++ ) {
prvi_simbol = odbor [ pobjednička lista [ ja ] . red [ 0 ] ] ;

ako ( ( prvi_simbol ! = 'X' ) && ( prvi_simbol ! = 'O' ) ) {
zastava = lažno ;
nastaviti ;
}
zastava = pravi ;
za ( j = 0 ; j < 3 ; j ++ ) {
ako ( prvi_simbol ! = odbor [ pobjednička lista [ ja ] . red [ j ] ] ) {
zastava = lažno ;
pauza ;
}
}
ako ( zastava ) {
gameOn = 0 ;
ako ( prvi_simbol == 'X' ) {
cout << '-----------------------' << endl ;
cout << ' \t Igrač JA SAM POBIJEDIO' << endl ;
cout << '-----------------------' << endl ;
p1. pobijedio ( ) ;
} drugo {
p2. pobijedio ( ) ;
ako ( protiv Računala ) {
cout << '-----------------------' << endl ;
cout << ' \t Računalo je POBIJEDILO' << endl ;
cout << '-----------------------' << endl ;
} drugo {
cout << '-----------------------' << endl ;
cout << ' \t Igrač II je POBIJEDIO' << endl ;
cout << '-----------------------' << endl ;

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

Ovaj dio koda prikazuje rezultat igre. Ako se igra protiv računala, prikazuje se rezultat za igrača 1 i računalo, u suprotnom se prikazuje rezultat za igrača 1 i igrača 2.





poništiti displayScore ( Igrač i p1, Igrač i p2 ) {
cout << endl ;
cout << ' \t POSTIĆI: \t ' ;
ako ( protiv Računala )
cout << 'Igrač I:' << p1. getScore ( ) << ' \t Računalo: ' << p2. getScore ( ) << endl ;
drugo
cout << 'Igrač I:' << p1. getScore ( ) << ' \t Igrač II: ' << p2. getScore ( ) << endl ;
}

Ovo je glavni kod za izvođenje igre tic-tac-toe za dva igrača. Korisnik može birati između niza postupaka koji će se provesti pomoću naredbe switch case. Ovaj kod pruža korisničko sučelje za igranje igre na C++ kompajleru, a kod se nastavlja izvršavati sve dok korisnik ne odabere opciju izlaza.

int glavni ( )
{
int CH ;

dok ( 1 ) {
cout << ' ----------JELOVNIK----------' << endl ;
cout << ' \t 1. Igra za 1 igrača' << endl ;
cout << ' \t 2. Igra za 2 igrača' << endl ;
cout << ' \t 3. Za izlaz ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Odaberite opciju' <> CH ;
sklopka ( CH ) {
slučaj 1 : {
igra * igra = novi igra ;
igra - > toplina ( ) ;
igra - > OnePlayerGame ( ) ;
}
pauza ;
slučaj 2 : {
igra * igra = novi igra ;
igra - > toplina ( ) ;
igra - > Igra za dvaIgrača ( ) ;
}
pauza ;
slučaj 3 :
povratak 0 ;
zadano :
cout << 'OOPs nevažeća opcija! POKUŠAJTE PONOVO' ;
}

}
povratak 0 ;
}

Potpuni kôd za tekstualnu igru ​​Tic-Tac-Toc

Ovo je potpuni kôd za dizajn i izvođenje tekstualne igre tic-tac-toe.



#include
#uključi
#include
#uključi
#uključi
korištenjem imenski prostor std ;

typedef strukturirati {
int * red ;
} WinList ;


razreda Igrač {
privatna :
naziv niza ;
int postići ;
javnost :
Igrač ( ) : Igrač { '' } { }
Igrač ( niz n ) : postići { 0 } , Ime { n } { }

poništiti pobijedio ( ) {
//povećati rezultat
postići ++ ;
}
int getScore ( ) { povratak ovaj - > postići ; }

niz getName ( ) { povratak ovaj - > Ime ; }
} ;

razreda igra {
privatna :
char odbor [ 9 ] ;
int prazanIndeks [ 9 ] ;
int gameOn, againstComputer ;
int prazniBroj ;
WinList winlist [ 8 ] ;

poništiti displayBoard ( ) {
cout << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << odbor [ 0 ] << ' | ' << odbor [ 1 ] << ' | ' << odbor [ 2 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << odbor [ 3 ] << ' | ' << odbor [ 4 ] << ' | ' << odbor [ 5 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << odbor [ 6 ] << ' | ' << odbor [ 7 ] << ' | ' << odbor [ 8 ] << endl ;
cout << '   |   |   ' << endl ;
cout << endl ;
}

poništiti računaloInput ( ) {
int poz ;
poz = rand ( ) % 10 ;
ako ( prazanIndeks [ poz ] == 1 ) {
ako ( prazniBroj < 0 )
povratak ;
računaloInput ( ) ;
} drugo {
cout << 'Računalo bira: ' << poz + 1 << endl ;
prazanIndeks [ poz ] = 1 ;
prazniBroj - = 1 ;
odbor [ poz ] = 'O' ;
}

}

poništiti playerInput ( Igrač i igrač ) {
int poz ;
cout << endl ;
cout << ' \t ' << igrač. getName ( ) << ' Skretanje: ' ;
cout << ' \t Unesite poziciju ' <> poz ;
poz - = 1 ;
ako ( prazanIndeks [ poz ] == 1 ) {
cout << '-----Pozicija nije prazna-------' << endl ;
playerInput ( igrač ) ;
} drugo {
prazanIndeks [ poz ] = 1 ;
prazniBroj - = 1 ;
igrač. getName ( ) . usporediti ( 'Igrač I' ) == 0 ? odbor [ poz ] = 'X' : odbor [ poz ] = 'O' ;
}

}

poništiti checkWin ( Igrač i p1,Igrač i p2 ) {
int ja,j,k ;
bool zastava = lažno ;
char prvi_simbol ;
za ( ja = 0 ; ja < 8 ; ja ++ ) {
prvi_simbol = odbor [ pobjednička lista [ ja ] . red [ 0 ] ] ;

ako ( ( prvi_simbol ! = 'X' ) && ( prvi_simbol ! = 'O' ) ) {
zastava = lažno ;
nastaviti ;
}
zastava = pravi ;
za ( j = 0 ; j < 3 ; j ++ ) {
ako ( prvi_simbol ! = odbor [ pobjednička lista [ ja ] . red [ j ] ] ) {
zastava = lažno ;
pauza ;
}
}
ako ( zastava ) {
gameOn = 0 ;
ako ( prvi_simbol == 'X' ) {
cout << '-----------------------' << endl ;
cout << ' \t Igrač JA SAM POBIJEDIO' << endl ;
cout << '-----------------------' << endl ;
p1. pobijedio ( ) ;
} drugo {
p2. pobijedio ( ) ;
ako ( protiv Računala ) {
cout << '-----------------------' << endl ;
cout << ' \t Računalo je POBIJEDILO' << endl ;
cout << '-----------------------' << endl ;
} drugo {
cout << '-----------------------' << endl ;
cout << ' \t Igrač II je POBIJEDIO' << endl ;
cout << '-----------------------' < 0 ) && ( gameOn ! = 0 ) ) {

ako ( protiv Računala )
ruka == 1 ? računaloInput ( ) : playerInput ( p2 ) ;
drugo
ruka == 1 ? playerInput ( p1 ) : playerInput ( p2 ) ;
ruka = ! ruka ;
displayBoard ( ) ;
checkWin ( p1,p2 ) ;
}
ako ( prazniBroj <= 0 ) {
cout << '      -----------------------' << endl ;
cout << ' \t Nema POBJEDNIKA' << endl ;
cout << '      -----------------------' << endl ;
}
cout << endl ;
cout <> revanš ;
ako ( ( revanš == 'I' ) || ( revanš == 'i' ) ) {
toplina ( ) ;
igra ( p1,p2 ) ;
}

}
poništiti displayScore ( Igrač i p1, Igrač i p2 ) {
cout << endl ;
cout << ' \t POSTIĆI: \t ' ;
ako ( protiv Računala )
cout << 'Igrač I:' << p1. getScore ( ) << ' \t Računalo: ' << p2. getScore ( ) << endl ;
drugo
cout << 'Igrač I:' << p1. getScore ( ) << ' \t Igrač II: ' << p2. getScore ( ) << endl ;
}

javnost :
igra ( ) : prazniBroj { 0 } , gameOn { 1 } , protiv Računala { 0 } {
toplina ( ) ;
pobjednička lista [ 0 ] . red = novi int [ 3 ] { 0 , 1 , 2 } ;
pobjednička lista [ 1 ] . red = novi int [ 3 ] { 3 , 4 , 5 } ;
pobjednička lista [ 2 ] . red = novi int [ 3 ] { 6 , 7 , 8 } ;
pobjednička lista [ 3 ] . red = novi int [ 3 ] { 0 , 3 , 6 } ;
pobjednička lista [ 4 ] . red = novi int [ 3 ] { 1 , 4 , 7 } ;
pobjednička lista [ 5 ] . red = novi int [ 3 ] { 2 , 5 , 8 } ;
pobjednička lista [ 6 ] . red = novi int [ 3 ] { 0 , 4 , 8 } ;
pobjednička lista [ 7 ] . red = novi int [ 3 ] { 2 , 4 , 6 } ;
}

poništiti toplina ( ) {
gameOn = 1 ;

prazniBroj = 0 ;
srand ( vrijeme ( 0 ) ) ;
za ( veličina_t ja = 0 ; ja < 10 ; ja ++ ) {
prazanIndeks [ ja ] = 0 ;
odbor [ ja ] = ( ja + 1 ) + '0' ;
prazniBroj ++ ;
}
prazniBroj -- ;
}

poništiti OnePlayerGame ( ) {
//Stvaranje playera
Igrač str ( 'Igrač I' ) ;
Igrač c ( 'Računalo' ) ;
cout << '       -----------------------' << endl ;
cout << ' \t Igrač I: X \t Računalo: O' << endl ;
cout << '       -----------------------' << endl ;
cout << endl ;
protiv Računala = 1 ;
igra ( c, str ) ;

}

poništiti Igra za dvaIgrača ( ) {
//Stvaranje playera
Igrač str ( 'Igrač I' ) ;
Igrač c ( 'Igrač II' ) ;
cout << '       -----------------------' << endl ;
cout << ' \t Igrač I: X \t Igrač II: O' << endl ;
cout << '       -----------------------' << endl ;
cout << endl ;
protiv Računala = 0 ;
igra ( c, str ) ;
}
} ;

int glavni ( )
{
int CH ;

dok ( 1 ) {
cout << ' ----------JELOVNIK----------' << endl ;
cout << ' \t 1. Igra za 1 igrača' << endl ;
cout << ' \t 2. Igra za 2 igrača' << endl ;
cout << ' \t 3. Za izlaz ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Odaberite opciju' <> CH ;
sklopka ( CH ) {
slučaj 1 : {
igra * igra = novi igra ;
igra - > toplina ( ) ;
igra - > OnePlayerGame ( ) ;
}
pauza ;
slučaj 2 : {
igra * igra = novi igra ;
igra - > toplina ( ) ;
igra - > Igra za dvaIgrača ( ) ;
}
pauza ;
slučaj 3 :
povratak 0 ;
zadano :
cout << 'OOPs nevažeća opcija! POKUŠAJTE PONOVO' ;
}

}
povratak 0 ;
}

Ovo je potpuni kod za izvođenje igre tic-tac-toe, koja se može igrati u dva načina, bilo s računalom ili drugim čovjekom. Ovo je svestran kod, uključujući sve moguće naredbe. Kada korisnik unese poziciju koja je već popunjena, on ne prebriše tu poziciju i ovaj potez smatra nevažećim.

Do sada je igrač jedan odabrao prvu kutiju, a zatim je u sljedećem potezu računalo označilo šestu kutiju:

Oba igrača su do sada odabrala dvije kutije, au sljedećem potezu igrač I odabire sedmu kutiju što rezultira stvaranjem uzastopnog okomitog uzorka:

Korisnik odabire koristiti računalo za igranje igre, tako da nakon što je poduzeo tri poteza, korisnik je pobijedio na računalu i jedan rezultat se dodaje u zapis igrača 1. Nakon završetka prvog meča, kompajler traži revanš. Korisnik odabire opcije i program se vraća na glavni dio. Nakon odabira opcije tri prevodilac postoji izvršenje koda.

Zaključak

Igre temeljene na tekstu oslanjaju se na tekstualne znakove i sučelje naredbenog retka za interakciju s igračem. Nemaju grafičke slike, zvukove ili animacije. Korisnik unosi naredbu kroz prozor konzole. Jednostavna tekstualna igra tic-tac-toe napravljena je pomoću C++. Koristi različite naredbe za izradu igre koja se može igrati s računalom ili drugim igračem.