Bueno pues acá les dejo un pequeño código de este juego en C :D se puede mejorar pero básicamente es la "base", espero que les sirva de algo, ¡saludos!
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include <conio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
int a1=0, a2=0, a3=0, b1=0, b2=0, b3=0, d1=0, d2=0, d3=0, dec, bandera=0,columna=0,fila=0, ganador = 0, juego=1, turno=0, ocupado = 0;
char nombre1[15], nombre2[15], gato[200];
HANDLE hConsoleOutput;
COORD coord;
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 10;
coord.Y=10;
SetConsoleCursorPosition(hConsoleOutput,coord);
while (juego ==1)
{
a1=0;
a2=0;
a3=0;
b1=0;
b2=0;
b3=0;
d1=0;
d2=0;
d3=0;
bandera=0;
columna=0;
fila=0;
ganador = 0;
dec = 0;
turno = 0;
ocupado = 0;
system ("CLS");
printf ("JUEGO DEL GATO\n\n");
printf ("Creado por: Lah-Vahn.\n\n");
printf ("Seleccione que desea hacer:\n");
printf ("1.-Jugar.\n");
printf ("2.-Instrucciones.\n");
printf ("3.-Salir.\n");
scanf ("%i",& dec);
switch (dec){
case 1:
system ("CLS");
printf ("Ingrese nombre del jugador 1:\n");
scanf ("%s",&nombre1);
printf ("Ingrese nombre del jugador 2:\n");
scanf ("%s",&nombre2);
system ("CLS");
printf (" | | \n------------- \n | | \n-------------\n | | \n\n");
while (ganador == 0){
if (bandera == 0 && ganador == 0)
{
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=6;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Turno de %s.\n\n",nombre1);
printf ("Ingresa fila:\n");
scanf ("%i",&fila);
printf ("Ingresa columna:\n");
scanf ("%i",&columna);
//Revisión de espacios ocupados
if (fila == 0 && columna == 0 && (a1==1 || a1==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 0 && columna == 1 && (a2==1 || a2==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 0 && columna == 2 && (a3==1 || a3==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 1 && columna == 0 && (b1==1 || b1==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 1 && columna == 1 && (b2==1 || b2==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 1 && columna == 2 && (b3==1 || b3==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 2 && columna == 0 && (d1==1 || d1==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 2 && columna == 1 && (d2==1 || d2==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 2 && columna == 2 && (d3==1 || d3==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
//Aquí comienza la asignación
if (fila == 0 && columna == 0 && a1==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 1;
coord.Y=0;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
a1 = 1;
ocupado = 0;
}
if (fila == 0 && columna == 1 && a2==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 6;
coord.Y=0;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
a2 = 1;
ocupado = 0;
}
if (fila == 0 && columna == 2 && a3==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 11;
coord.Y=0;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
a3 = 1;
ocupado = 0;
}
if (fila == 1 && columna == 0 && b1==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 1;
coord.Y=2;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
b1 = 1;
ocupado = 0;
}
if (fila == 1 && columna == 1 && b2==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 6;
coord.Y=2;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
b2 = 1;
ocupado = 0;
}
if (fila == 1 && columna == 2 && b3==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 11;
coord.Y=2;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
b3 = 1;
ocupado = 0;
}
if (fila == 2 && columna == 0 && d1==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 1;
coord.Y=4;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
d1 = 1;
ocupado = 0;
}
if (fila == 2 && columna == 1 && d2==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 6;
coord.Y=4;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
d2 = 1;
ocupado = 0;
}
if (fila == 2 && columna == 2 && d3==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 11;
coord.Y=4;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("x");
d3 = 1;
ocupado = 0;
}
if (fila>2 || fila<0 || columna>2 || columna<0){
printf ("Has ingresado valores erroneos.\n");
}
//comienza comprobaciòn de ganador
if (a1+a2+a3==3 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre1);
ganador = 1;
}
if (b1+b2+b3==3 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre1);
ganador = 1;
}
if (d1+d2+d3==3 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre1);
ganador = 1;
}
if (a1+b1+d1==3 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre1);
ganador = 1;
}
if (a2+b2+d2==3 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre1);
ganador = 1;
}
if (a3+b3+d3==3 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre1);
ganador = 1;
}
if (a1+b2+d3==3 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre1);
ganador = 1;
}
if (a3+b2+d1==3 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre1);
ganador = 1;
}
if (ocupado == 0){
bandera = 1;
turno = turno + 1;
}
if (turno == 9 && ganador == 0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Ha sido un empate.\n");
ganador = 1;
}
}
//turno del jugador 2
if (bandera == 1 && ganador==0)
{
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=6;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Turno de %s.\n\n",nombre2);
printf ("Ingresa fila:\n");
scanf ("%i",&fila);
printf ("Ingresa columna:\n");
scanf ("%i",&columna);
//Revisión de espacios ocupados
if (fila == 0 && columna == 0 && (a1==1 || a1==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 0 && columna == 1 && (a2==1 || a2==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 0 && columna == 2 && (a3==1 || a3==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 1 && columna == 0 && (b1==1 || b1==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 1 && columna == 1 && (b2==1 || b2==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 1 && columna == 2 && (b3==1 || b3==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 2 && columna == 0 && (d1==1 || d1==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 2 && columna == 1 && (d2==1 || d2==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
if (fila == 2 && columna == 2 && (d3==1 || d3==5)){
printf ("Ya esta ocupado.");
ocupado = 1;
}
//Aquí comienza la asignación
if (fila == 0 && columna == 0 && a1==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 1;
coord.Y=0;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
a1 = 5;
ocupado = 0;
}
if (fila == 0 && columna == 1 && a2==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 6;
coord.Y=0;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
a2 = 5;
ocupado = 0;
}
if (fila == 0 && columna == 2 && a3==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 11;
coord.Y=0;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
a3 = 5;
ocupado = 0;
}
if (fila == 1 && columna == 0 && b1==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 1;
coord.Y=2;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
b1 = 5;
ocupado = 0;
}
if (fila == 1 && columna == 1 && b2==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 6;
coord.Y=2;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
b2 = 5;
ocupado = 0;
}
if (fila == 1 && columna == 2 && b3==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 11;
coord.Y=2;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
b3 = 5;
ocupado = 0;
}
if (fila == 2 && columna == 0 && d1==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 1;
coord.Y=4;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
d1 = 5;
ocupado = 0;
}
if (fila == 2 && columna == 1 && d2==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 6;
coord.Y=4;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
d2 = 5;
ocupado = 0;
}
if (fila == 2 && columna == 2 && d3==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 11;
coord.Y=4;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf("o");
d3 = 5;
ocupado = 0;
}
if (fila>2 || fila<0 || columna>2 || columna<0){
printf ("Has ingresado valores erroneos.\n");
}
//comienza comprobaciòn de ganador
if (a1+a2+a3==15 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre2);
ganador = 1;
}
if (b1+b2+b3==15 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre2);
ganador = 1;
}
if (d1+d2+d3==15 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre2);
ganador = 1;
}
if (a1+b1+d1==15 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre2);
ganador = 1;
}
if (a2+b2+d2==15 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre2);
ganador = 1;
}
if (a3+b3+d3==15 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre2);
ganador = 1;
}
if (a1+b2+d3==15 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre2);
ganador = 1;
}
if (a3+b2+d1==15 && ganador==0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Gana %s!\n",nombre2);
ganador = 1;
}
if (ocupado == 0){
bandera = 0;
turno = turno + 1;
}
if (turno == 9 && ganador == 0){
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X= 0;
coord.Y=13;
SetConsoleCursorPosition(hConsoleOutput,coord);
printf ("Ha sido un empate.\n");
ganador = 1;
}
}
}
break;
case 2:
system ("CLS");
printf ("INSTRUCCIONES\n\n");
printf ("1.-Ingrese el numero 1 para jugar, el 2 para las instrucciones y el 3 para salir.\n");
printf ("2.-Al jugar ingrese el nombre de los dos jugadores.\n");
printf ("3.-Ingrese la fila y columna donde desea colocar su tiro.\n");
printf ("4.-Ganara el jugador que logre 3 tiros consecutivos en linea recta.\n\n");
break;
case 3:
exit(1);
break;
default:
printf ("Error en el valor Ingresado.\n");
break;
}
system("PAUSE");
}
}
Muy bueno bro! Se ve excelente!!!
Muchas gracias por compartirlo!
Saludos!
ANTRAX