Kako ustvariti osnovno besedilno igro v C++

Kako Ustvariti Osnovno Besedilno Igro V C



Besedilne igre se zanašajo na besedilne znake in vmesnik ukazne vrstice za interakcijo z igralcem. Nimajo grafičnih slik, zvokov ali animacij. Uporabnik vnese ukaz skozi okno konzole.

Kako ustvariti osnovno besedilno igro v C++

Besedilne igre v C++ omogočajo igralcu vnos ukazov skozi okno konzole, program pa obdeluje poteze igralca. Tukaj sem ustvaril besedilno igro tik-tak-prsti, ki uporabniku omogoča dve možnosti igranja. Uporabnik se lahko igra s prevajalnikom C++ ali s sočlovekom. Ta igra ima funkcijo, ki nenehno sešteva rezultat zmagovalnemu igralcu. Po objavi izida prve igre je na voljo možnost ponovitve.

Pravila za zmago v igri

Dva igralca igrata igro tic-tac-toe, pri čemer izmenično postavljata X in 0 na eno od devetih razpoložljivih mest na mreži tri proti tri. Igro zmaga tisti igralec, ki prvi doseže tri svoje zaporedne oznake v navpični, vodoravni ali diagonalni smeri. Vsak igralec mora pametno razmišljati in vnaprej gledati na naslednjo potezo drugega igralca.







Koda za oblikovanje besedilne igre tic-tac-toe ima različne razdelke, razdeljene na podlagi funkcionalnosti. V prvem delu se uporabnik odloči, ali se bo igral z računalnikom ali s sočlovekom. Po odločitvi o načinu ojačanja program vpraša uporabnika za vnos. Oba igralca drug za drugim vneseta vnos.



//Upoštevajte prispevke igralcev
praznina playerInput ( Igralec & igralec ) {
int poz ;
cout << konec ;
cout << ' \t ' << igralec. getName ( ) << ' Obrat: ' ;
cout << ' \t Vnesite položaj ' <> poz ;
poz - = 1 ;
če ( prazniIndex [ poz ] == 1 ) {
cout << '-----Položaj ni prazen-------' << konec ;
playerInput ( igralec ) ;
} drugače {
prazniIndex [ poz ] = 1 ;
emptyCount - = 1 ;
igralec. getName ( ) . primerjati ( 'Igralec I' ) == 0 ? tabla [ poz ] = 'X' : tabla [ poz ] = 'O' ;
}

}

Po prejemu vnosov od uporabnika preveri zmagovalno pravilo. Funkcija checkWin() ima dva parametra p1 in p2 za preverjanje, ali je igralec zmagal ali ne. V funkciji so deklarirane različne spremenljivke i, j in k so celoštevilske spremenljivke, deklarirane za zanko, zastavica pa je logična funkcija za preverjanje zmagovalnega pogoja. Zanka se začne s prvega položaja in se ponavlja za vseh devet položajev. Prvi_simbol je znak, ki je lahko 0 ali X, če je resničen, se za zmagovalno pravilo preverijo vse možne kombinacije. V nasprotnem primeru se iterator premakne na naslednji položaj in enako nadaljuje, dokler niso preverjeni vsi možni položaji. Če je zastavica nastavljena na resnično, se razglasi zmagovalec in program zahteva, da se znova odloči.



praznina checkWin ( Igralec & p1, igralec & p2 ) {
int jaz,j,k ;
bool zastava = lažno ;
char prvi_simbol ;
za ( jaz = 0 ; jaz < 8 ; jaz ++ ) {
prvi_simbol = tabla [ seznam zmagovalcev [ jaz ] . vrstica [ 0 ] ] ;

če ( ( prvi_simbol ! = 'X' ) && ( prvi_simbol ! = 'O' ) ) {
zastava = lažno ;
nadaljevati ;
}
zastava = prav ;
za ( j = 0 ; j < 3 ; j ++ ) {
če ( prvi_simbol ! = tabla [ seznam zmagovalcev [ jaz ] . vrstica [ j ] ] ) {
zastava = lažno ;
odmor ;
}
}
če ( zastava ) {
Igra se je začela = 0 ;
če ( prvi_simbol == 'X' ) {
cout << '-----------------------' << konec ;
cout << ' \t Igralec, ki sem ga ZMAGAL' << konec ;
cout << '-----------------------' << konec ;
                    p1. zmagal ( ) ;
} drugače {
p2. zmagal ( ) ;
če ( protiRačunalniku ) {
cout << '-----------------------' << konec ;
cout << ' \t Računalnik je ZMAGAL' << konec ;
cout << '-----------------------' << konec ;
} drugače {
cout << '-----------------------' << konec ;
cout << ' \t Igralec II je ZMAGAL' << konec ;
cout << '-----------------------' << konec ;

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

Ta del kode prikazuje rezultat igre. Če je igra proti računalniku, se prikaže rezultat za igralca 1 in računalnik, sicer pa se prikaže rezultat za igralca 1 in igralca 2.





praznina displayScore ( Igralec & p1, igralec & p2 ) {
cout << konec ;
cout << ' \t REZULTAT: \t ' ;
če ( protiRačunalniku )
cout << 'Igralec I:' << p1. getScore ( ) << ' \t Računalnik: ' << p2. getScore ( ) << konec ;
drugače
cout << 'Igralec I:' << p1. getScore ( ) << ' \t Igralec II: ' << p2. getScore ( ) << konec ;
}

To je glavna koda za izvedbo igre tic-tac-toe za dva igralca. Uporabnik lahko izbira med številnimi postopki, ki jih je treba izvesti z uporabo stavka switch case. Ta koda zagotavlja uporabniku prijazen vmesnik za igranje igre na prevajalniku C++ in koda se izvaja, dokler uporabnik ne izbere možnosti za izhod.

int glavni ( )
{
int pogl ;

medtem ( 1 ) {
cout << '      ----------MENU----------' << konec ;
cout << ' \t 1. Igra za 1 igralca' << konec ;
cout << ' \t 2. Igra za 2 igralca' << konec ;
cout << ' \t 3. Za izhod ' << konec ;
cout << '      ----------' << konec ;
cout << konec ;
cout << ' \t Izberite možnost' <> pogl ;
stikalo ( pogl ) {
Ovitek 1 : {
Igra * igra = novo Igra ;
igra - > toplota ( ) ;
igra - > OnePlayerGame ( ) ;
}
odmor ;
Ovitek 2 : {
Igra * igra = novo Igra ;
igra - > toplota ( ) ;
igra - > TwoPlayerGame ( ) ;
}
odmor ;
Ovitek 3 :
vrnitev 0 ;
privzeto :
cout << 'OOPs Neveljavna možnost! POSKUSITE ZNOVA' ;
}

}
vrnitev 0 ;
}

Popolna koda za besedilno igro Tic-Tac-Toc

To je popolna koda za načrtovanje in izvedbo besedilne igre tic-tac-toe.



#include
#include
#include
#include
#include
uporabo imenski prostor std ;

typedef struct {
int * vrstica ;
} WinList ;


razred Igralec {
zasebno :
ime niza ;
int rezultat ;
javnosti :
Igralec ( ) : Igralec { '' } { }
Igralec ( niz n ) : rezultat { 0 } , ime { n } { }

praznina zmagal ( ) {
//povečanje rezultata
rezultat ++ ;
}
int getScore ( ) { vrnitev to - > rezultat ; }

niz getName ( ) { vrnitev to - > ime ; }
} ;

razred Igra {
zasebno :
char tabla [ 9 ] ;
int prazniIndex [ 9 ] ;
int gameOn, againstComputer ;
int emptyCount ;
WinList winlist [ 8 ] ;

praznina displayBoard ( ) {
cout << konec ;
cout << '   |   |   ' << konec ;
cout << ' ' << tabla [ 0 ] << ' | ' << tabla [ 1 ] << ' | ' << tabla [ 2 ] << konec ;
cout << '   |   |   ' << konec ;
cout << '-----------' << konec ;
cout << '   |   |   ' << konec ;
cout << ' ' << tabla [ 3 ] << ' | ' << tabla [ 4 ] << ' | ' << tabla [ 5 ] << konec ;
cout << '   |   |   ' << konec ;
cout << '-----------' << konec ;
cout << '   |   |   ' << konec ;
cout << ' ' << tabla [ 6 ] << ' | ' << tabla [ 7 ] << ' | ' << tabla [ 8 ] << konec ;
cout << '   |   |   ' << konec ;
cout << konec ;
}

praznina computerInput ( ) {
int poz ;
poz = rand ( ) % 10 ;
če ( prazniIndex [ poz ] == 1 ) {
če ( emptyCount < 0 )
vrnitev ;
computerInput ( ) ;
} drugače {
cout << 'Izberi računalnik:' << poz + 1 << konec ;
prazniIndex [ poz ] = 1 ;
emptyCount - = 1 ;
tabla [ poz ] = 'O' ;
}

}

praznina playerInput ( Igralec & igralec ) {
int poz ;
cout << konec ;
cout << ' \t ' << igralec. getName ( ) << ' Obrat: ' ;
cout << ' \t Vnesite položaj ' <> poz ;
poz - = 1 ;
če ( prazniIndex [ poz ] == 1 ) {
cout << '-----Položaj ni prazen-------' << konec ;
playerInput ( igralec ) ;
} drugače {
prazniIndex [ poz ] = 1 ;
emptyCount - = 1 ;
igralec. getName ( ) . primerjati ( 'Igralec I' ) == 0 ? tabla [ poz ] = 'X' : tabla [ poz ] = 'O' ;
}

}

praznina checkWin ( Igralec & p1, igralec & p2 ) {
int jaz,j,k ;
bool zastava = lažno ;
char prvi_simbol ;
za ( jaz = 0 ; jaz < 8 ; jaz ++ ) {
prvi_simbol = tabla [ seznam zmagovalcev [ jaz ] . vrstica [ 0 ] ] ;

če ( ( prvi_simbol ! = 'X' ) && ( prvi_simbol ! = 'O' ) ) {
zastava = lažno ;
nadaljevati ;
}
zastava = prav ;
za ( j = 0 ; j < 3 ; j ++ ) {
če ( prvi_simbol ! = tabla [ seznam zmagovalcev [ jaz ] . vrstica [ j ] ] ) {
zastava = lažno ;
odmor ;
}
}
če ( zastava ) {
Igra se je začela = 0 ;
če ( prvi_simbol == 'X' ) {
cout << '-----------------------' << konec ;
cout << ' \t Igralec, ki sem ga ZMAGAL' << konec ;
cout << '-----------------------' << konec ;
                    p1. zmagal ( ) ;
} drugače {
p2. zmagal ( ) ;
če ( protiRačunalniku ) {
cout << '-----------------------' << konec ;
cout << ' \t Računalnik je ZMAGAL' << konec ;
cout << '-----------------------' << konec ;
} drugače {
cout << '-----------------------' << konec ;
cout << ' \t Igralec II je ZMAGAL' << konec ;
cout << '-----------------------' < 0 ) && ( Igra se je začela ! = 0 ) ) {

če ( protiRačunalniku )
roka == 1 ? computerInput ( ) : playerInput ( p2 ) ;
drugače
roka == 1 ? playerInput ( p1 ) : playerInput ( p2 ) ;
roka = ! roka ;
displayBoard ( ) ;
checkWin ( p1,p2 ) ;
}
če ( emptyCount <= 0 ) {
cout << '      -----------------------' << konec ;
cout << ' \t Brez ZMAGOVALCA' << konec ;
cout << '      -----------------------' << konec ;
}
cout << konec ;
cout <> povratna tekma ;
če ( ( povratna tekma == 'IN' ) || ( povratna tekma == 'in' ) ) {
toplota ( ) ;
igrati ( p1,p2 ) ;
}

}
praznina displayScore ( Igralec & p1, igralec & p2 ) {
cout << konec ;
cout << ' \t REZULTAT: \t ' ;
če ( protiRačunalniku )
cout << 'Igralec I:' << p1. getScore ( ) << ' \t Računalnik: ' << p2. getScore ( ) << konec ;
drugače
cout << 'Igralec I:' << p1. getScore ( ) << ' \t Igralec II: ' << p2. getScore ( ) << konec ;
}

javnosti :
Igra ( ) : emptyCount { 0 } , Igra se je začela { 1 } , proti Računalniku { 0 } {
toplota ( ) ;
seznam zmagovalcev [ 0 ] . vrstica = novo int [ 3 ] { 0 , 1 , 2 } ;
seznam zmagovalcev [ 1 ] . vrstica = novo int [ 3 ] { 3 , 4 , 5 } ;
seznam zmagovalcev [ 2 ] . vrstica = novo int [ 3 ] { 6 , 7 , 8 } ;
seznam zmagovalcev [ 3 ] . vrstica = novo int [ 3 ] { 0 , 3 , 6 } ;
seznam zmagovalcev [ 4 ] . vrstica = novo int [ 3 ] { 1 , 4 , 7 } ;
seznam zmagovalcev [ 5 ] . vrstica = novo int [ 3 ] { 2 , 5 , 8 } ;
seznam zmagovalcev [ 6 ] . vrstica = novo int [ 3 ] { 0 , 4 , 8 } ;
seznam zmagovalcev [ 7 ] . vrstica = novo int [ 3 ] { 2 , 4 , 6 } ;
}

praznina toplota ( ) {
Igra se je začela = 1 ;

emptyCount = 0 ;
srand ( čas ( 0 ) ) ;
za ( velikost_t jaz = 0 ; jaz < 10 ; jaz ++ ) {
prazniIndex [ jaz ] = 0 ;
tabla [ jaz ] = ( jaz + 1 ) + '0' ;
emptyCount ++ ;
}
emptyCount -- ;
}

praznina OnePlayerGame ( ) {
//Ustvarjanje predvajalnika
Igralec p ( 'Igralec I' ) ;
Igralec c ( 'Računalnik' ) ;
cout << '       -----------------------' << konec ;
cout << ' \t Igralec I: X \t Računalnik: O' << konec ;
cout << '       -----------------------' << konec ;
cout << konec ;
protiRačunalniku = 1 ;
igrati ( c, str ) ;

}

praznina TwoPlayerGame ( ) {
//Ustvarjanje predvajalnika
Igralec p ( 'Igralec I' ) ;
Igralec c ( 'Igralec II' ) ;
cout << '       -----------------------' << konec ;
cout << ' \t Igralec I: X \t Igralec II: O' << konec ;
cout << '       -----------------------' << konec ;
cout << konec ;
protiRačunalniku = 0 ;
igrati ( c, str ) ;
}
} ;

int glavni ( )
{
int pogl ;

medtem ( 1 ) {
cout << '      ----------MENU----------' << konec ;
cout << ' \t 1. Igra za 1 igralca' << konec ;
cout << ' \t 2. Igra za 2 igralca' << konec ;
cout << ' \t 3. Za izhod ' << konec ;
cout << '      ----------' << konec ;
cout << konec ;
cout << ' \t Izberite možnost' <> pogl ;
stikalo ( pogl ) {
Ovitek 1 : {
Igra * igra = novo Igra ;
igra - > toplota ( ) ;
igra - > OnePlayerGame ( ) ;
}
odmor ;
Ovitek 2 : {
Igra * igra = novo Igra ;
igra - > toplota ( ) ;
igra - > TwoPlayerGame ( ) ;
}
odmor ;
Ovitek 3 :
vrnitev 0 ;
privzeto :
cout << 'OOPs Neveljavna možnost! POSKUSITE ZNOVA' ;
}

}
vrnitev 0 ;
}

To je popolna koda za izvedbo igre tic-tac-toe, ki se lahko igra v dveh načinih, bodisi z računalnikom ali s sočlovekom. To je vsestranska koda, ki vključuje vse možne ukaze. Ko uporabnik vnese položaj, ki je že zapolnjen, tega položaja ne prepiše in ta premik šteje za neveljavno.

Do zdaj je prvi igralec izbral prvo polje, nato pa je v naslednji vrsti računalnik označil šesto polje:

Oba igralca sta do zdaj izbrala obe polji in v naslednjem krogu igralec I izbere sedmo polje, kar ima za posledico ustvarjanje zaporednega navpičnega vzorca:

Uporabnik se odloči za uporabo računalnika za igranje igre, tako da po treh potezah uporabnik zmaga na računalniku in en rezultat se doda v zapis igralca 1. Po končanem prvem dvoboju prevajalnik zahteva ponovitev. Uporabnik se odloči med možnostmi in program se vrne v glavni del. Po izbiri možnosti tri prevajalnik izvaja kodo.

Zaključek

Besedilne igre se zanašajo na besedilne znake in vmesnik ukazne vrstice za interakcijo z igralcem. Nimajo grafičnih slik, zvokov ali animacij. Uporabnik vnese ukaz skozi okno konzole. Uporabniku prijazna besedilna igra tic-tac-toe je zgrajena s C++. Uporablja različne ukaze za izdelavo igre, ki jo je mogoče igrati z računalnikom ali drugim igralcem.