Com crear un joc bàsic basat en text en C++

Com Crear Un Joc Basic Basat En Text En C



Els jocs basats en text es basen en caràcters de text i una interfície de línia d'ordres per a la interacció amb el jugador. No tenen imatges gràfiques, sons o animacions. L'usuari introdueix l'ordre a través de la finestra de la consola.

Com crear un joc bàsic basat en text en C++

Els jocs basats en text en C++ permeten al jugador introduir ordres a través d'una finestra de consola i el programa processa els moviments del jugador. Aquí, he creat un joc de tic-tac-toe basat en text que permet a l'usuari jugar dues opcions. L'usuari pot jugar amb el compilador C++ o amb un altre humà. Aquest joc té una característica que continua sumant la puntuació del jugador guanyador. Un cop s'anunciï el resultat del primer joc, hi ha una opció de represa disponible.

Regles per guanyar el joc

Dos jugadors juguen un joc de tic-tac-toe, col·locant X i 0 alternativament en un dels nou espais disponibles en una graella de tres per tres. La partida la guanya el primer jugador que aconsegueix tres de les seves marques consecutives en direcció vertical, horitzontal o diagonal. Cada jugador ha de pensar amb intel·ligència i mirar endavant al següent moviment de l'altre jugador.







El codi per dissenyar un joc de tic-tac-toe basat en text té diferents seccions, dividides en funció de la funcionalitat. A la primera secció, l'usuari decideix si jugar amb un ordinador o amb un altre humà. Després de decidir el mode de guany, el programa demana l'entrada a l'usuari. Els dos jugadors introdueixen l'entrada un darrere l'altre.



//Rebre aportacions dels jugadors
buit jugador d'entrada ( Jugador & jugador ) {
int pos ;
cout << endl ;
cout << ' \t ' << jugador. getName ( ) << ' Turn: ' ;
cout << ' \t Introduïu la posició ' <> pos ;
pos - = 1 ;
si ( emptyIndex [ pos ] == 1 ) {
cout << '-----La posició no està buida-------' << endl ;
jugador d'entrada ( jugador ) ;
} altra cosa {
emptyIndex [ pos ] = 1 ;
emptyCount - = 1 ;
jugador. getName ( ) . comparar ( 'Jugador I' ) == 0 ? pissarra [ pos ] = 'X' : pissarra [ pos ] = 'O' ;
}

}

Després de rebre les aportacions de l'usuari, verifica la regla de victòria. La funció checkWin() té dos paràmetres p1 i p2 per comprovar si el jugador ha guanyat o no. Es declaren diferents variables a la funció i, j i k són variables senceres declarades per al bucle i la bandera és una funció booleana per comprovar la condició de victòria. El bucle comença des de la primera posició i continua iterant per a les nou posicions. El primer_símbol és un caràcter que pot ser 0 o X si és cert, llavors totes les combinacions possibles es comproven per a la regla guanyadora. En cas contrari, l'iterador es mou a la següent posició, i el mateix continua fins que es comproven totes les posicions possibles. Si la bandera es configura com a vertadera, es declara un guanyador i el programa demana que torni a triar.



buit checkWin ( Jugador & p1, Jugador & p2 ) {
int i,j,k ;
bool bandera = fals ;
char primer_símbol ;
per ( i = 0 ; i < 8 ; i ++ ) {
primer_símbol = pissarra [ llista guanyadora [ i ] . fila [ 0 ] ] ;

si ( ( primer_símbol ! = 'X' ) && ( primer_símbol ! = 'O' ) ) {
bandera = fals ;
continuar ;
}
bandera = veritat ;
per ( j = 0 ; j < 3 ; j ++ ) {
si ( primer_símbol ! = pissarra [ llista guanyadora [ i ] . fila [ j ] ] ) {
bandera = fals ;
trencar ;
}
}
si ( bandera ) {
comença el joc = 0 ;
si ( primer_símbol == 'X' ) {
cout << '-----------------------' << endl ;
cout << ' \t Jugador que vaig guanyar' << endl ;
cout << '-----------------------' << endl ;
p1. va guanyar ( ) ;
} altra cosa {
p2. va guanyar ( ) ;
si ( contra l'ordinador ) {
cout << '-----------------------' << endl ;
cout << ' \t L'ordinador GUANYA' << endl ;
cout << '-----------------------' << endl ;
} altra cosa {
cout << '-----------------------' << endl ;
cout << ' \t El jugador II GUANYA' << endl ;
cout << '-----------------------' << endl ;

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

Aquesta part del codi mostra la puntuació del joc. Si el joc és contra un ordinador, es mostra la puntuació del jugador 1 i l'ordinador, en cas contrari, es mostra la puntuació del jugador 1 i del jugador 2.





buit displayScore ( Jugador & p1, jugador & p2 ) {
cout << endl ;
cout << ' \t PUNTUACIÓ: \t ' ;
si ( contra l'ordinador )
cout << 'Jugador I:' << p1. getScore ( ) << ' \t Ordinador: ' << p2. getScore ( ) << endl ;
altra cosa
cout << 'Jugador I:' << p1. getScore ( ) << ' \t Jugador II: ' << p2. getScore ( ) << endl ;
}

Aquest és el codi principal per a l'execució del joc tic-tac-toe per a dos jugadors. L'usuari pot seleccionar entre una varietat de procediments que s'han de dur a terme mitjançant la declaració switch case. Aquest codi proporciona una interfície fàcil d'utilitzar per jugar a un joc en un compilador C++, i el codi continua executant-se fins que l'usuari selecciona l'opció de sortida.

int principal ( )
{
int cap ;

mentre ( 1 ) {
cout << '      ----------MENÚ-----------' << endl ;
cout << ' \t 1. Joc d'1 jugador' << endl ;
cout << ' \t 2. Joc de 2 jugadors' << endl ;
cout << ' \t 3. Per sortir ' << endl ;
cout << '    ----------------------------' << endl ;
cout << endl ;
cout << ' \t Seleccioneu una opció' <> cap ;
interruptor ( cap ) {
Caixa 1 : {
Joc * joc = nou Joc ;
joc - > calor ( ) ;
joc - > OnePlayerGame ( ) ;
}
trencar ;
Caixa 2 : {
Joc * joc = nou Joc ;
joc - > calor ( ) ;
joc - > TwoPlayerGame ( ) ;
}
trencar ;
Caixa 3 :
tornar 0 ;
per defecte :
cout << 'OOP opció no vàlida! TORNA-HO A INTENTAR' ;
}

}
tornar 0 ;
}

Codi complet per a un joc Tic-Tac-Toc basat en text

Aquest és un codi complet per al disseny i l'execució d'un joc de tic-tac-toe basat en text.



#inclou
#include
#include
#include
#inclou
utilitzant espai de noms std ;

typedef estructura {
int * fila ;
} WinList ;


classe Jugador {
privat :
nom de cadena ;
int puntuació ;
públic :
Jugador ( ) : Jugador { '' } { }
Jugador ( corda n ) : puntuació { 0 } , nom { n } { }

buit va guanyar ( ) {
//incrementa la puntuació
puntuació ++ ;
}
int getScore ( ) { tornar això - > puntuació ; }

cadena getName ( ) { tornar això - > nom ; }
} ;

classe Joc {
privat :
char pissarra [ 9 ] ;
int emptyIndex [ 9 ] ;
int gameOn, contra l'ordinador ;
int emptyCount ;
WinList llista de guanyadors [ 8 ] ;

buit tauler de visualització ( ) {
cout << endl ;
cout << ' | | | | ' << endl ;
cout << ' ' << pissarra [ 0 ] << ' | ' << pissarra [ 1 ] << ' | ' << pissarra [ 2 ] << endl ;
cout << ' | | | | ' << endl ;
cout << '-----------' << endl ;
cout << ' | | | | ' << endl ;
cout << ' ' << pissarra [ 3 ] << ' | ' << pissarra [ 4 ] << ' | ' << pissarra [ 5 ] << endl ;
cout << ' | | | | ' << endl ;
cout << '-----------' << endl ;
cout << ' | | | | ' << endl ;
cout << ' ' << pissarra [ 6 ] << ' | ' << pissarra [ 7 ] << ' | ' << pissarra [ 8 ] << endl ;
cout << ' | | | | ' << endl ;
cout << endl ;
}

buit entrada d'ordinador ( ) {
int pos ;
pos = rand ( ) % 10 ;
si ( emptyIndex [ pos ] == 1 ) {
si ( emptyCount < 0 )
tornar ;
entrada d'ordinador ( ) ;
} altra cosa {
cout << 'Elecció de l'ordinador:' << pos + 1 << endl ;
emptyIndex [ pos ] = 1 ;
emptyCount - = 1 ;
pissarra [ pos ] = 'O' ;
}

}

buit jugador d'entrada ( Jugador & jugador ) {
int pos ;
cout << endl ;
cout << ' \t ' << jugador. getName ( ) << ' Turn: ' ;
cout << ' \t Introduïu la posició ' <> pos ;
pos - = 1 ;
si ( emptyIndex [ pos ] == 1 ) {
cout << '-----La posició no està buida-------' << endl ;
jugador d'entrada ( jugador ) ;
} altra cosa {
emptyIndex [ pos ] = 1 ;
emptyCount - = 1 ;
jugador. getName ( ) . comparar ( 'Jugador I' ) == 0 ? pissarra [ pos ] = 'X' : pissarra [ pos ] = 'O' ;
}

}

buit checkWin ( Jugador & p1, Jugador & p2 ) {
int i,j,k ;
bool bandera = fals ;
char primer_símbol ;
per ( i = 0 ; i < 8 ; i ++ ) {
primer_símbol = pissarra [ llista guanyadora [ i ] . fila [ 0 ] ] ;

si ( ( primer_símbol ! = 'X' ) && ( primer_símbol ! = 'O' ) ) {
bandera = fals ;
continuar ;
}
bandera = veritat ;
per ( j = 0 ; j < 3 ; j ++ ) {
si ( primer_símbol ! = pissarra [ llista guanyadora [ i ] . fila [ j ] ] ) {
bandera = fals ;
trencar ;
}
}
si ( bandera ) {
comença el joc = 0 ;
si ( primer_símbol == 'X' ) {
cout << '-----------------------' << endl ;
cout << ' \t Jugador que vaig guanyar' << endl ;
cout << '-----------------------' << endl ;
p1. va guanyar ( ) ;
} altra cosa {
p2. va guanyar ( ) ;
si ( contra l'ordinador ) {
cout << '-----------------------' << endl ;
cout << ' \t L'ordinador GUANYA' << endl ;
cout << '-----------------------' << endl ;
} altra cosa {
cout << '-----------------------' << endl ;
cout << ' \t El jugador II GUANYA' << endl ;
cout << '-----------------------' < 0 ) && ( comença el joc ! = 0 ) ) {

si ( contra l'ordinador )
== 1 ? entrada d'ordinador ( ) : jugador d'entrada ( p2 ) ;
altra cosa
== 1 ? jugador d'entrada ( p1 ) : jugador d'entrada ( p2 ) ;
= ! ;
tauler de visualització ( ) ;
checkWin ( p1,p2 ) ;
}
si ( emptyCount <= 0 ) {
cout << '    ---------------------------' << endl ;
cout << ' \t Cap GUANYADOR' << endl ;
cout << '    ---------------------------' << endl ;
}
cout << endl ;
cout <> represa ;
si ( ( represa == 'I' ) || ( represa == 'i' ) ) {
calor ( ) ;
jugar ( p1,p2 ) ;
}

}
buit displayScore ( Jugador & p1, jugador & p2 ) {
cout << endl ;
cout << ' \t PUNTUACIÓ: \t ' ;
si ( contra l'ordinador )
cout << 'Jugador I:' << p1. getScore ( ) << ' \t Ordinador: ' << p2. getScore ( ) << endl ;
altra cosa
cout << 'Jugador I:' << p1. getScore ( ) << ' \t Jugador II: ' << p2. getScore ( ) << endl ;
}

públic :
Joc ( ) : emptyCount { 0 } , comença el joc { 1 } , contra l'ordinador { 0 } {
calor ( ) ;
llista guanyadora [ 0 ] . fila = nou int [ 3 ] { 0 , 1 , 2 } ;
llista guanyadora [ 1 ] . fila = nou int [ 3 ] { 3 , 4 , 5 } ;
llista guanyadora [ 2 ] . fila = nou int [ 3 ] { 6 , 7 , 8 } ;
llista guanyadora [ 3 ] . fila = nou int [ 3 ] { 0 , 3 , 6 } ;
llista guanyadora [ 4 ] . fila = nou int [ 3 ] { 1 , 4 , 7 } ;
llista guanyadora [ 5 ] . fila = nou int [ 3 ] { 2 , 5 , 8 } ;
llista guanyadora [ 6 ] . fila = nou int [ 3 ] { 0 , 4 , 8 } ;
llista guanyadora [ 7 ] . fila = nou int [ 3 ] { 2 , 4 , 6 } ;
}

buit calor ( ) {
comença el joc = 1 ;

emptyCount = 0 ;
srand ( temps ( 0 ) ) ;
per ( mida_t i = 0 ; i < 10 ; i ++ ) {
emptyIndex [ i ] = 0 ;
pissarra [ i ] = ( i + 1 ) + '0' ;
emptyCount ++ ;
}
emptyCount -- ;
}

buit OnePlayerGame ( ) {
//Creant el reproductor
Jugador pàg ( 'Jugador I' ) ;
Jugador c ( 'ordinador' ) ;
cout << '     ---------------------------' << endl ;
cout << ' \t Jugador I: X \t Ordinador: O' << endl ;
cout << '     ---------------------------' << endl ;
cout << endl ;
contra l'ordinador = 1 ;
jugar ( c, pàg ) ;

}

buit TwoPlayerGame ( ) {
//Creant el reproductor
Jugador pàg ( 'Jugador I' ) ;
Jugador c ( 'Jugador II' ) ;
cout << '     ---------------------------' << endl ;
cout << ' \t Jugador I: X \t Jugador II: O' << endl ;
cout << '     ---------------------------' << endl ;
cout << endl ;
contra l'ordinador = 0 ;
jugar ( c, pàg ) ;
}
} ;

int principal ( )
{
int cap ;

mentre ( 1 ) {
cout << '      ----------MENÚ-----------' << endl ;
cout << ' \t 1. Joc d'1 jugador' << endl ;
cout << ' \t 2. Joc de 2 jugadors' << endl ;
cout << ' \t 3. Per sortir ' << endl ;
cout << '    ----------------------------' << endl ;
cout << endl ;
cout << ' \t Seleccioneu una opció' <> cap ;
interruptor ( cap ) {
Caixa 1 : {
Joc * joc = nou Joc ;
joc - > calor ( ) ;
joc - > OnePlayerGame ( ) ;
}
trencar ;
Caixa 2 : {
Joc * joc = nou Joc ;
joc - > calor ( ) ;
joc - > TwoPlayerGame ( ) ;
}
trencar ;
Caixa 3 :
tornar 0 ;
per defecte :
cout << 'OOP opció no vàlida! TORNA-HO A INTENTAR' ;
}

}
tornar 0 ;
}

Aquest és un codi complet per a l'execució del joc tic-tac-toe, que es pot jugar en dos modes, ja sigui amb un ordinador o amb un altre humà. Aquest és un codi versàtil, que inclou totes les ordres possibles. Quan l'usuari introdueix una posició que ja està ocupada, no sobreescriu aquesta posició i considera que aquest moviment no és vàlid.

Fins ara, el jugador 1 ha seleccionat la primera casella i, al torn següent, l'ordinador ha marcat la sisena casella:

Els dos jugadors han seleccionat les dues caselles fins ara i en el següent torn el jugador que jo tria la setena casella resultant en crear un patró vertical consecutiu:

L'usuari tria utilitzar l'ordinador per jugar un joc, de manera que després de fer tres moviments, l'usuari guanya des de l'ordinador i s'afegeix una puntuació al registre del jugador 1. Un cop acabat el primer partit, el compilador demana la represa. L'usuari decideix entre les opcions i el programa torna a la secció principal. Després de triar l'opció tres, el compilador existeix l'execució de codi.

Conclusió

Els jocs basats en text es basen en caràcters de text i una interfície de línia d'ordres per a la interacció amb el jugador. No tenen imatges gràfiques, sons o animacions. L'usuari introdueix l'ordre a través de la finestra de la consola. El joc fàcil d'utilitzar basat en text es construeix amb C++. Utilitza diferents ordres per fer un joc que es pot jugar amb un ordinador o amb un altre jugador.