Kā izveidot pamata teksta spēli programmā C++

Ka Izveidot Pamata Teksta Speli Programma C



Uz tekstu balstītas spēles ir balstītas uz teksta rakstzīmēm un komandrindas saskarni mijiedarbībai ar spēlētāju. Tiem nav grafisku attēlu, skaņu vai animāciju. Lietotājs ievada komandu caur konsoles logu.

Kā izveidot pamata teksta spēli programmā C++

Teksta spēles C++ ļauj spēlētājam ievadīt komandas caur konsoles logu, un programma apstrādā spēlētāja kustības. Šeit esmu izveidojis uz tekstu balstītu tic-tac-toe spēli, kas ļauj lietotājam spēlēt divas iespējas. Lietotājs var spēlēt ar C++ kompilatoru vai ar līdzcilvēku. Šai spēlei ir funkcija, kas turpina summēt uzvarējušā spēlētāja punktu skaitu. Pēc pirmās spēles iznākuma paziņošanas ir pieejama revanša iespēja.

Spēles uzvaras noteikumi

Divi spēlētāji spēlē tic-tac-toe spēli, alternatīvi novietojot X un 0 vienā no deviņām pieejamajām laukumiem trīs reizes trīs režģī. Spēli uzvar pirmais spēlētājs, kurš iegūst trīs secīgas atzīmes vertikālā, horizontālā vai diagonālā virzienā. Katram spēlētājam ir jādomā gudri un jāraugās uz otra spēlētāja nākamo gājienu.







Uz tekstu balstītas tic-tac-toe spēles izstrādes kodam ir dažādas sadaļas, kas sadalītas atkarībā no funkcionalitātes. Pirmajā sadaļā lietotājs izlemj, vai spēlēt ar datoru vai līdzcilvēku. Pēc pastiprināšanas režīma noteikšanas programma pieprasa lietotājam ievadi. Abi spēlētāji ievada ievadi viens pēc otra.



//Pieņemt ieguldījumu no spēlētājiem
nederīgs atskaņotāja ievade ( Spēlētājs & spēlētājs ) {
starpt poz ;
cout << endl ;
cout << ' \t ' << spēlētājs. getName ( ) << 'Pagriezieties:' ;
cout << ' \t Ievadiet pozīciju ' <> poz ;
poz - = 1 ;
ja ( tukšsIndekss [ poz ] == 1 ) {
cout << '-----Pozīcija nav tukša-------' << endl ;
atskaņotāja ievade ( spēlētājs ) ;
} cits {
tukšsIndekss [ poz ] = 1 ;
tukšsCount - = 1 ;
spēlētājs. getName ( ) . salīdzināt ( 'Spēlētājs I' ) == 0 ? dēlis [ poz ] = 'X' : dēlis [ poz ] = 'O' ;
}

}

Pēc ievades saņemšanas no lietotāja tas pārbauda uzvaras noteikumu. Funkcijai checkWin() ir divi parametri p1 un p2, lai pārbaudītu, vai spēlētājs ir uzvarējis vai nē. Dažādi mainīgie tiek deklarēti funkcijā i, j un k ir veseli skaitļu mainīgie, kas deklarēti cilpai, un karodziņš ir Būla funkcija, lai pārbaudītu uzvaras nosacījumu. Cilpa sākas no pašas pirmās pozīcijas un turpina atkārtot visas deviņas pozīcijas. Pirmais_simbols ir rakstzīme, kas var būt 0 vai X, ja tā ir patiesa, tad visas iespējamās kombinācijas tiek pārbaudītas uzvarošajam noteikumam. Pretējā gadījumā iterators pāriet uz nākamo pozīciju, un tas pats turpinās, līdz tiek pārbaudītas visas iespējamās pozīcijas. Ja karodziņš ir iestatīts kā patiess, tad tiek pasludināts uzvarētājs, un programma lūdz izdarīt izvēli vēlreiz.



nederīgs checkWin ( Spēlētājs & p1, Spēlētājs & p2 ) {
starpt es, j, k ;
bool karogs = viltus ;
char pirmais_simbols ;
priekš ( i = 0 ; i < 8 ; i ++ ) {
pirmais_simbols = dēlis [ uzvarētāju saraksts [ i ] . rinda [ 0 ] ] ;

ja ( ( pirmais_simbols ! = 'X' ) && ( pirmais_simbols ! = 'O' ) ) {
karogs = viltus ;
Turpināt ;
}
karogs = taisnība ;
priekš ( j = 0 ; j < 3 ; j ++ ) {
ja ( pirmais_simbols ! = dēlis [ uzvarētāju saraksts [ i ] . rinda [ j ] ] ) {
karogs = viltus ;
pārtraukums ;
}
}
ja ( karogs ) {
spēle On = 0 ;
ja ( pirmais_simbols == 'X' ) {
cout << '------------------------' << endl ;
cout << ' \t Spēlētājs, kuru es UZVARĒJU' << endl ;
cout << '------------------------' << endl ;
p1. uzvarēja ( ) ;
} cits {
p2. uzvarēja ( ) ;
ja ( pret datoru ) {
cout << '------------------------' << endl ;
cout << ' \t Dators UZVARĒJA' << endl ;
cout << '------------------------' << endl ;
} cits {
cout << '------------------------' << endl ;
cout << ' \t Spēlētājs II UZVARĒJA' << endl ;
cout << '------------------------' << endl ;

}
}
displayScore ( p1, p2 ) ;
pārtraukums ;
}

Šī koda daļa parāda spēles rezultātu. Ja spēle notiek pret datoru, tad tiek rādīts 1. spēlētāja un datora rezultāts, pretējā gadījumā tiek rādīts 1. un 2. spēlētāja rezultāts.





nederīgs displayScore ( Spēlētājs & p1, atskaņotājs & p2 ) {
cout << endl ;
cout << ' \t Rezultāts: \t ' ;
ja ( pret datoru )
cout << ' Spēlētājs I: ' << p1. getScore ( ) << ' \t Dators: ' << p2. getScore ( ) << endl ;
cits
cout << ' Spēlētājs I: ' << p1. getScore ( ) << ' \t Spēlētājs II: ' << p2. getScore ( ) << endl ;
}

Šis ir galvenais kods tic-tac-toe spēles izpildei diviem spēlētājiem. Lietotājs var izvēlēties no dažādām procedūrām, kas jāveic, izmantojot slēdža gadījuma paziņojumu. Šis kods nodrošina lietotājam draudzīgu saskarni spēles spēlēšanai C++ kompilatorā, un kods tiek izpildīts, līdz lietotājs izvēlas izejas opciju.

starpt galvenais ( )
{
starpt ch ;

kamēr ( 1 ) {
cout << '      ----------IZVĒLNE----------' << endl ;
cout << ' \t 1. 1 spēlētāja spēle' << endl ;
cout << ' \t 2. 2 spēlētāju spēle' << endl ;
cout << ' \t 3. Lai izietu ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Izvēlieties opciju' <> ch ;
slēdzis ( ch ) {
lietu 1 : {
Spēle * spēle = jauns Spēle ;
spēle - > karstums ( ) ;
spēle - > onePlayerGame ( ) ;
}
pārtraukums ;
lietu 2 : {
Spēle * spēle = jauns Spēle ;
spēle - > karstums ( ) ;
spēle - > twoPlayerGame ( ) ;
}
pārtraukums ;
lietu 3 :
atgriezties 0 ;
noklusējuma :
cout << 'OOP, nederīga opcija! MĒĢINIET VĒLREIZ' ;
}

}
atgriezties 0 ;
}

Pilnīgs kods uz tekstu balstītai Tic-Tac-Toc spēlei

Šis ir pilnīgs kods uz tekstu balstītas tic-tac-toe spēles izstrādei un izpildei.



#include
#iekļaut
#include
#include
#include
izmantojot nosaukumvieta std ;

typedef struktūra {
starpt * rinda ;
} WinList ;


klasē Spēlētājs {
Privāts :
virknes nosaukums ;
starpt rezultāts ;
publiski :
Spēlētājs ( ) : Spēlētājs { '' } { }
Spēlētājs ( virkne n ) : rezultāts { 0 } , vārds { n } { }

nederīgs uzvarēja ( ) {
//palieliniet rezultātu
rezultāts ++ ;
}
starpt getScore ( ) { atgriezties šis - > rezultāts ; }

virkne getName ( ) { atgriezties šis - > nosaukums ; }
} ;

klasē Spēle {
Privāts :
char dēlis [ 9 ] ;
starpt tukšsIndekss [ 9 ] ;
starpt spēle On, pret datoru ;
starpt tukšsCount ;
WinList uzvarētāju saraksts [ 8 ] ;

nederīgs displeja dēlis ( ) {
cout << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << dēlis [ 0 ] << ' | ' << dēlis [ 1 ] << ' | ' << dēlis [ 2 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << dēlis [ 3 ] << ' | ' << dēlis [ 4 ] << ' | ' << dēlis [ 5 ] << endl ;
cout << '   |   |   ' << endl ;
cout << '-----------' << endl ;
cout << '   |   |   ' << endl ;
cout << ' ' << dēlis [ 6 ] << ' | ' << dēlis [ 7 ] << ' | ' << dēlis [ 8 ] << endl ;
cout << '   |   |   ' << endl ;
cout << endl ;
}

nederīgs datora ievade ( ) {
starpt poz ;
poz = rand ( ) % 10 ;
ja ( tukšsIndekss [ poz ] == 1 ) {
ja ( tukšsCount < 0 )
atgriezties ;
datora ievade ( ) ;
} cits {
cout << 'Izvēlieties datoru:' << poz + 1 << endl ;
tukšsIndekss [ poz ] = 1 ;
tukšsCount - = 1 ;
dēlis [ poz ] = 'O' ;
}

}

nederīgs atskaņotāja ievade ( Spēlētājs & spēlētājs ) {
starpt poz ;
cout << endl ;
cout << ' \t ' << spēlētājs. getName ( ) << 'Pagriezieties:' ;
cout << ' \t Ievadiet pozīciju ' <> poz ;
poz - = 1 ;
ja ( tukšsIndekss [ poz ] == 1 ) {
cout << '-----Pozīcija nav tukša-------' << endl ;
atskaņotāja ievade ( spēlētājs ) ;
} cits {
tukšsIndekss [ poz ] = 1 ;
tukšsCount - = 1 ;
spēlētājs. getName ( ) . salīdzināt ( 'Spēlētājs I' ) == 0 ? dēlis [ poz ] = 'X' : dēlis [ poz ] = 'O' ;
}

}

nederīgs checkWin ( Spēlētājs & p1, Spēlētājs & p2 ) {
starpt es, j, k ;
bool karogs = viltus ;
char pirmais_simbols ;
priekš ( i = 0 ; i < 8 ; i ++ ) {
pirmais_simbols = dēlis [ uzvarētāju saraksts [ i ] . rinda [ 0 ] ] ;

ja ( ( pirmais_simbols ! = 'X' ) && ( pirmais_simbols ! = 'O' ) ) {
karogs = viltus ;
Turpināt ;
}
karogs = taisnība ;
priekš ( j = 0 ; j < 3 ; j ++ ) {
ja ( pirmais_simbols ! = dēlis [ uzvarētāju saraksts [ i ] . rinda [ j ] ] ) {
karogs = viltus ;
pārtraukums ;
}
}
ja ( karogs ) {
spēle On = 0 ;
ja ( pirmais_simbols == 'X' ) {
cout << '------------------------' << endl ;
cout << ' \t Spēlētājs, kuru es UZVARĒJU' << endl ;
cout << '------------------------' << endl ;
p1. uzvarēja ( ) ;
} cits {
p2. uzvarēja ( ) ;
ja ( pret datoru ) {
cout << '------------------------' << endl ;
cout << ' \t Dators UZVARĒJA' << endl ;
cout << '------------------------' << endl ;
} cits {
cout << '------------------------' << endl ;
cout << ' \t Spēlētājs II UZVARĒJA' << endl ;
cout << '------------------------' < 0 ) && ( spēle On ! = 0 ) ) {

ja ( pret datoru )
roka == 1 ? datora ievade ( ) : atskaņotāja ievade ( p2 ) ;
cits
roka == 1 ? atskaņotāja ievade ( p1 ) : atskaņotāja ievade ( p2 ) ;
roka = ! roka ;
displeja dēlis ( ) ;
checkWin ( p1, p2 ) ;
}
ja ( tukšsCount <= 0 ) {
cout << '      -----------------------' << endl ;
cout << ' \t Nav UZVARĒTĀJA' << endl ;
cout << '      -----------------------' << endl ;
}
cout << endl ;
cout <> pārspēle ;
ja ( ( pārspēle == 'UN' ) || ( pārspēle == 'un' ) ) {
karstums ( ) ;
spēlēt ( p1, p2 ) ;
}

}
nederīgs displayScore ( Spēlētājs & p1, atskaņotājs & p2 ) {
cout << endl ;
cout << ' \t Rezultāts: \t ' ;
ja ( pret datoru )
cout << ' Spēlētājs I: ' << p1. getScore ( ) << ' \t Dators: ' << p2. getScore ( ) << endl ;
cits
cout << ' Spēlētājs I: ' << p1. getScore ( ) << ' \t Spēlētājs II: ' << p2. getScore ( ) << endl ;
}

publiski :
Spēle ( ) : tukšsCount { 0 } , gameOn { 1 } , pret datoru { 0 } {
karstums ( ) ;
uzvarētāju saraksts [ 0 ] . rinda = jauns starpt [ 3 ] { 0 , 1 , 2 } ;
uzvarētāju saraksts [ 1 ] . rinda = jauns starpt [ 3 ] { 3 , 4 , 5 } ;
uzvarētāju saraksts [ 2 ] . rinda = jauns starpt [ 3 ] { 6 , 7 , 8 } ;
uzvarētāju saraksts [ 3 ] . rinda = jauns starpt [ 3 ] { 0 , 3 , 6 } ;
uzvarētāju saraksts [ 4 ] . rinda = jauns starpt [ 3 ] { 1 , 4 , 7 } ;
uzvarētāju saraksts [ 5 ] . rinda = jauns starpt [ 3 ] { 2 , 5 , 8 } ;
uzvarētāju saraksts [ 6 ] . rinda = jauns starpt [ 3 ] { 0 , 4 , 8 } ;
uzvarētāju saraksts [ 7 ] . rinda = jauns starpt [ 3 ] { 2 , 4 , 6 } ;
}

nederīgs karstums ( ) {
spēle On = 1 ;

tukšsCount = 0 ;
srand ( laiks ( 0 ) ) ;
priekš ( izmērs_t i = 0 ; i < 10 ; i ++ ) {
tukšsIndekss [ i ] = 0 ;
dēlis [ i ] = ( i + 1 ) + '0' ;
tukšsCount ++ ;
}
tukšsCount -- ;
}

nederīgs onePlayerGame ( ) {
//Atskaņotāja izveide
Spēlētājs p ( 'Spēlētājs I' ) ;
Spēlētājs c ( 'Dators' ) ;
cout << '       -----------------------' << endl ;
cout << ' \t Spēlētājs I: X \t Dators: O' << endl ;
cout << '       -----------------------' << endl ;
cout << endl ;
pret datoru = 1 ;
spēlēt ( c, lpp ) ;

}

nederīgs twoPlayerGame ( ) {
//Atskaņotāja izveide
Spēlētājs p ( 'Spēlētājs I' ) ;
Spēlētājs c ( 'Spēlētājs II' ) ;
cout << '       -----------------------' << endl ;
cout << ' \t Spēlētājs I: X \t Spēlētājs II: O' << endl ;
cout << '       -----------------------' << endl ;
cout << endl ;
pret datoru = 0 ;
spēlēt ( c, lpp ) ;
}
} ;

starpt galvenais ( )
{
starpt ch ;

kamēr ( 1 ) {
cout << '      ----------IZVĒLNE----------' << endl ;
cout << ' \t 1. 1 spēlētāja spēle' << endl ;
cout << ' \t 2. 2 spēlētāju spēle' << endl ;
cout << ' \t 3. Lai izietu ' << endl ;
cout << '      ----------' << endl ;
cout << endl ;
cout << ' \t Izvēlieties opciju' <> ch ;
slēdzis ( ch ) {
lietu 1 : {
Spēle * spēle = jauns Spēle ;
spēle - > karstums ( ) ;
spēle - > onePlayerGame ( ) ;
}
pārtraukums ;
lietu 2 : {
Spēle * spēle = jauns Spēle ;
spēle - > karstums ( ) ;
spēle - > twoPlayerGame ( ) ;
}
pārtraukums ;
lietu 3 :
atgriezties 0 ;
noklusējuma :
cout << 'OOP, nederīga opcija! MĒĢINIET VĒLREIZ' ;
}

}
atgriezties 0 ;
}

Šis ir pilnīgs kods tic-tac-toe spēles izpildei, ko var spēlēt divos režīmos vai nu ar datoru, vai ar līdzcilvēku. Šis ir daudzpusīgs kods, kas ietver visas iespējamās komandas. Kad lietotājs ievada pozīciju, kas jau ir aizpildīta, tas nepārraksta šo pozīciju un uzskata šo kustību par nederīgu.

Līdz šim pirmais spēlētājs ir izvēlējies pirmo lodziņu un tad nākamajā kārtā dators atzīmēja sesto lodziņu:

Abi spēlētāji līdz šim ir izvēlējušies divus lodziņus, un nākamajā gājienā spēlētājs I izvēlas septīto lodziņu, kā rezultātā tiek izveidots secīgs vertikāls raksts:

Lietotājs izvēlas izmantot datoru spēles spēlēšanai, tāpēc pēc trīs gājienu veikšanas lietotājs uzvarēja no datora un 1. spēlētāja ierakstam tiek pievienots viens rezultāts. Pēc pirmā mača beigām kompilators pieprasa atkārtotu maču. Lietotājs izlemj no opcijām, un programma atgriežas galvenajā sadaļā. Pēc trešās opcijas izvēles kompilators eksistē koda izpildi.

Secinājums

Uz tekstu balstītas spēles ir balstītas uz teksta rakstzīmēm un komandrindas saskarni mijiedarbībai ar spēlētāju. Tiem nav grafisku attēlu, skaņu vai animāciju. Lietotājs ievada komandu caur konsoles logu. Lietotājam draudzīgā teksta tic-tac-toe spēle ir veidota, izmantojot C++. Tas izmanto dažādas komandas, lai izveidotu spēli, kuru var spēlēt ar datoru vai citu spēlētāju.