Yo lo hice en lenguaje C para mi primer semestre en ciencias.
Para convertirlo a lenguaje C++ necesitarás rediseñarlo en diseño orientado a objetos:
Necesitarías las clases:
Tablero
Jugador
Humano (Hereda de Jugador)
Computadora (Hereda de Jugador)
Mientras tanto te dejo con el código en lenguaje C. Destaco que como lo hice para Linux, entonces los acentos, eñes y signos "¿" e "¡" posiblemente no se puedan ver en Windows.
/*Ese programa Juega Gato con el usuario
aunque no es muy inteligente :D
Creado por π.*/
#include
#include
#include
/* Casillas:
6 |7 |8 Valores:
--+--+-- 'X' = -1 Computadora
3 |4 |5 ' ' = 0
--+--+-- 'O' = 1 Usuario
0 |1 |2
*/
int c[9]={0,0,0,0,0,0,0,0,0}, turno, jugador;
char denuevo;
char tirada(int i); /*Necesaria en print_gato, retorna 'X', 'O' o ' '*/
int ganador(); /*Deduce si hay un ganador, regresa -1, 0 o 1*/
int volado(); /*Regresa 1 o 0 al azar*/
void print_gato(); /*Imprime el tablero de Gato*/
void turno_jugador();
void turno_computadora();
char tirada(int i){
switch (i){
case (-1):
return 'X';
break;
case (1):
return 'O';
break;
default:
return ' ';
}
}
void print_gato(){
printf("\n %c |%c |%c\n --+--+--\n %c |%c |%c\n --+--+--\n %c |%c |%c\n", tirada(c[6]), tirada(c[7]), tirada(c[8]), tirada(c[3]), tirada(c[4]), tirada(c[5]), tirada(c[0]), tirada(c[1]), tirada(c[2]));
}
int volado(){
time_t t;
srand(time(&t));
return rand()%2;
}
int ganador(){
if ((c[0]+c[1]+c[2]==3)|| (c[3]+c[4]+c[5]==3)|| (c[6]+c[7]+c[8]==3)|| (c[6]+c[3]+c[0]==3)|| (c[7]+c[4]+c[1]==3)|| (c[8]+c[5]+c[2]==3)|| (c[6]+c[4]+c[2]==3)|| (c[8]+c[4]+c[0]==3)) return 1;
else if ((c[0]+c[1]+c[2]==-3)|| (c[3]+c[4]+c[5]==-3)|| (c[6]+c[7]+c[8]==-3)|| (c[6]+c[3]+c[0]==-3)|| (c[7]+c[4]+c[1]==-3)|| (c[8]+c[5]+c[2]==-3)|| (c[6]+c[4]+c[2]==-3)|| (c[8]+c[4]+c[0]==-3)) return -1;
else return 0;
}
void turno_jugador(){
int quieres;
printf("\nEs tu turno, ¿En cuál casilla quieres tirar? [1-9] ");
scanf("%d",&quieres);
if ((quieres>9)|| (quieres<1)|| (c[quieres-1]!=0)){
do{
printf("\nNo puedes tirar ahí, intenta en otra casilla: [1-9] ");
fflush(stdin);
scanf("%d",&quieres);
}while ((quieres>9)|| (quieres<1)|| (c[quieres-1]!=0));
}
c[quieres-1]=1;
jugador = 0;
}
void turno_computadora(){
int quiero;
time_t t;
printf("\nEs mi turno, elijo la casilla... ");
do{
srand(time(&t));
quiero=rand()%9;
}while (c[quiero]!=0);
printf("%d\n", quiero + 1);
c[quiero]=-1;
jugador = 1;
}
int main(){
int h;
printf("\n¡Juguemos GATO!\n\nLas casillas están enumeradas así:\n 7 |8 |9\n --+--+--\n 4 |5 |6\n --+--+--\n 1 |2 |3\n");
do{
printf("\nUn volado y...\n");
jugador = volado(); /*El primer turno se decide por medio de un volado*/
turno = 0;
do{
turno++;
if (jugador) turno_jugador(); else turno_computadora();
print_gato();
}while ((!ganador())&&(turno<=8));
switch (ganador()){
case 0:
printf("\n¡Qué empate!\n");
break;
case 1:
printf("\n¡Has ganado!\n");
break;
case -1:
printf("\n¡Yo gané!\n");
break;
}
printf("¿Quieres jugar de nuevo? (s o n) ");
scanf("%s", &denuevo);
if (denuevo>=97) denuevo-=32;
if ((denuevo!='S')&&(denuevo!='N'))printf( "\nTomaré eso como un no\n");
for (h=0;h<=8;h++) c[h]=0;
}while (denuevo=='S');
return 0;
}
2007-02-10 15:55:58
·
answer #1
·
answered by Anonymous
·
3⤊
0⤋
eres un ******* no te salio babosete de ****** de seguro sos un negro envidioso decime cuantas copas tenes vos yo me aviento el mario bros en c++ ****** acm1pt lml 666 from the hell
2015-03-17 04:13:02
·
answer #2
·
answered by tochi 1
·
0⤊
0⤋