Hola! tengo este proyecto de crear un juego gato. Tengo listo lo de ir seleccionando casillas, nombre de jugador, etc. Lo que se me dificulta o falta es cómo validar al ganador, o sea, en qué parte o cómo o con qué hacer la comparación de casillas para definir al ganador, tenía una idea con un if, pero no me funciona. También en el momento en que el jugador seleccione una casilla ocupada, lo regrese al paso en donde selecciona casilla, había pensado en un do-while con un switch, pero tampoco funciona. si me pudieran ayudar gracias, esto es lo que llevo:
#include <stdio.h>
#include <stdlib.h>
char gato[3][3];
struct jugador{
char nombre[50]
}j1,j2;
int main (){
int x, y, i;
printf("Jugador X ingresa tu nombre:");
scanf("%s", &j1);
printf("Jugador O ingresa tu nombre:");
scanf("%s", &j2);
system("cls");
for(i=0; i<100; i++){
printf("*****GATO*****\n");
printf("|%c| |%c| |%c|\n", gato[0][0], gato[0][1], gato[0][2]);
printf("-----------\n");
printf("|%c| |%c| |%c|\n", gato[1][0], gato[1][1], gato[1][2]);
printf("-----------\n");
printf("|%c| |%c| |%c|\n", gato[2][0], gato[2][1], gato[2][2]);
if(i%2!=0){
printf("%s, elige tu casilla en coordenadas x y y: \n", &j2);
printf("Coordenada x:\n");
scanf("%d", &x);
printf("\n coordenada y:\n");
scanf("%d", &y);
y=y-1;
x=x-1;
if (gato[y][x]==' ',gato[y][x]==0){
gato[y][x]= 'O';}
else{
printf("elige otra casilla\n");
system("pause");
}
system("cls");
}
else{
printf("%s, elige tu casilla en coordenadas x y y: \n", &j1);
printf("Coordenada x:\n");
scanf("%d", &x);
printf("\n coordenada y:\n");
scanf("%d", &y);
y=y-1;
x=x-1;
if (gato[y][x]==' ',gato[y][x]==0){
gato[y][x]= 'X';
}
else{
printf("elige otra casilla\n");
system("pause");
}
system("cls");
}
}
printf("Ganó el jugador");
system("pause");
return 0;
}
MOD: etiqueta GeSHi.
mírate estos tutos quiza te sirvan
https://www.youtube.com/playlist?list=PLw8RQJQ8K1yQZyhplheIkd5qtuYXM-qtx
Hola que tal, hace poco me encargaron en el colegio un proyecto y opte por hacer un gato, eso de usar coordenadas (al momento de ingresarlas) en lo personal es un poco incomodo, espero y te ayude:
/**
Alumno: Luis Eduardo Garza Medina
programa: Juego
Nombre: Gato
El juego posee un menu amigable con el usuario, entendible
para cualquier usuario.
para el menu solo se usan las teclas: 'i', 'e' y 's';
y para jugar son los numeros, donde para acceder a una casilla debe presionarse
el siguiente numero:
1 2 3
4 5 6
7 8 9
el jugador uno es representado por un '1' equivalente a X
el jugador dos es representado por un '2' equivalente a O
Al finalizar el programa, este indica los resultados finales de cada jugador.
*/
#include <stdio.h>
#include<windows.h>
#define uno gato[0][0]
#define dos gato[0][1]
#define tres gato[0][2]
#define cuatro gato[1][0]
#define cinco gato[1][1]
#define seis gato[1][2]
#define siete gato[2][0]
#define ocho gato[2][1]
#define nueve gato[2][2]
//el compilador sustituye la cadena en #define
short gato[3][3] ={{0,0,0}, //definimos matriz
{0,0,0},
{0,0,0}};
short won[2]; //definimos array
int verifica(){ //comprobamos si un jugador ya ganó
if(uno == dos && dos == tres)
return uno;
if(uno == cuatro && cuatro == siete)
return uno;
if(uno == cinco && cinco == nueve)
return uno;
if(tres == cinco && cinco == siete)
return tres;
if(tres == seis && seis == nueve)
return tres;
if(cuatro == cinco && cinco == seis)
return cuatro;
if(siete == ocho && ocho == nueve)
return siete;
if(dos == cinco && cinco == ocho)
return dos;
return 0;
}
void mostrar(){ //ponemos en pantalla el gato
system("cls");
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++)
if(j < 2)
printf("%d|", gato[i][j]);
else
printf("%d", gato[i][j]);
if(i < 2)
printf("\n-----\n");
else
printf("\n");
}
}
void instrucciones(){ //funcion que muestra las instrucciones del jueo
system("cls");
printf("Los controles son los numeros del 1 al 9, por ejemplo:\n\n");
printf("para acceder a la casilla superior izquierda se presiona 1\n\n");
printf("para acceder a la casilla inferorior intermedia se presiona 8\n\n");
system("pause");
}
int main (){
short numero, k;
char opcion;
while(1){//while infinito
system("cls"); //limpia la pantalla
printf("JUEGO DEL GATO\n\n");
printf("Menu\n\n");
printf("presiona 'i' para ver instrucciones:\n");
printf("Presiona 'e' para comenzar\n");
printf("Presiona 's' para salir\n\n");
scanf("%s", &opcion);
switch(opcion){
case 'i':
instrucciones();
break;
case 'e':
memset(gato, 0, sizeof(gato));//inicializa la matriz con valores de 0
for(k = 1; k <= 9; k++){ //este for se repite 9 veces porque son 9 casillas
mostrar();
scanf("%d", &numero);
if(numero == 1)
if(k % 2 == 0) //la operacion del modulo ayuda a determinar de quien es el turno
uno = 2;
else
uno = 1;
else if(numero == 2)
if(k % 2 == 0)
dos = 2;
else
dos = 1;
else if(numero == 3)
if(k % 2 == 0)
tres = 2;
else
tres = 1;
else if(numero == 4)
if(k % 2 == 0)
cuatro = 2;
else
cuatro = 1;
else if(numero == 5)
if(k % 2 == 0)
cinco = 2;
else
cinco = 1;
else if(numero == 6)
if(k % 2 == 0)
seis = 2;
else
seis = 1;
else if(numero == 7)
if(k % 2 == 0)
siete = 2;
else
siete = 1;
else if(numero == 8)
if(k % 2 == 0)
ocho = 2;
else
ocho = 1;
else if(numero == 9)
if(k % 2 == 0)
nueve = 2;
else
nueve = 1;
int ganador = verifica();//le asignamos a ganador el valor que retorne la funcion verifica
if(ganador > 0){
mostrar();
printf("\nEl jugador %d es el GANADOR", ganador);
won[ganador - 1]++; //aumentamos en 1 el contador del ganador
break;
}
}
system("pause>null");
break;
case 's':
system("cls");
printf("El jugador 1 gano: %d partidas\n", won[0]);
printf("El jugador 2 gano: %d partidas\n", won[1]);
printf("Gracias por jugar!\n\n");
return 0;
break;
default:
break;
}
}
}