Tic Tac Toe
C/Visual C
6.951 visualizaciones desde el 6 de Octubre del 2017
Un simple juego del gatito o Tic Tac Toe, donde puedes jugar contra la maquina.





(1)














#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include <windows.h>
int board[10] = { 2,2,2,2,2,2,2,2,2,2 };
int turn = 1, flag = 0;
int player, comp;void menu();
void go(int n);
void start_game();
void check_draw();
void draw_board();
void player_first();
void put_X_O(char ch, int pos);
COORD coord = { 0,0 }; // this is global variable
//center of axis is set to the top left cornor of the screen
void gotoxy(int x, int y)
{coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}void main()
{system("title Tic Tac Toe");
system("color 4c");
system("cls");
menu();
system("pause");
}void menu()
{int choice;
system("cls");
printf("\n --------MENU-------- \n");
printf("\n 1 .- Jugar con X");
printf("\n 2 .- Jugar con O");
printf("\n 3 .- Salir \n");
scanf_s("%d", &choice);
turn = 1;switch (choice)
{ case 1: player = 1; comp = 0;player_first();
break;
case 2: player = 0; comp = 1;start_game();
break;
case 3:exit(1);
default:menu();
}}int make2()
{if (board[5] == 2)
return 5;
if (board[2] == 2)
return 2;
if (board[4] == 2)
return 4;
if (board[6] == 2)
return 6;
if (board[8] == 2)
return 8;
return 0;
}int make4()
{if (board[1] == 2)
return 1;
if (board[3] == 2)
return 3;
if (board[7] == 2)
return 7;
if (board[9] == 2)
return 9;
return 0;
}int posswin(int p)
{ // p==1 then X p==0 then O
int i;
int check_val = 0, pos = 0;
if (p == 1)
check_val = 18;else
check_val = 50; i = 1;while (i <= 9)//row check
{if (board[i] * board[i + 1] * board[i + 2] == check_val)
{if (board[i] == 2)
return i;
if (board[i + 1] == 2)
return i + 1;if (board[i + 2] == 2)
return i + 2; }i += 3;
} i = 1;while (i <= 3)//column check
{if (board[i] * board[i + 3] * board[i + 6] == check_val)
{if (board[i] == 2)
return i;
if (board[i + 3] == 2)
return i + 3;if (board[i + 6] == 2)
return i + 6; }i++;
}if (board[1] * board[5] * board[9] == check_val)
{if (board[1] == 2)
return 1;
if (board[5] == 2)
return 5;
if (board[9] == 2)
return 9;
}if (board[3] * board[5] * board[7] == check_val)
{if (board[3] == 2)
return 3;
if (board[5] == 2)
return 5;
if (board[7] == 2)
return 7;
}return 0;
}void go(int n)
{if (turn % 2)
board[n] = 3;
else
board[n] = 5;
turn++;
}void player_first()
{int pos;
check_draw();
draw_board();
gotoxy(30, 18);
printf(" Tu turno (Pon el numero de la casilla del tablero) : ");
scanf_s("%d", &pos);
if (board[pos] != 2)
player_first();
if (pos == posswin(player))
{go(pos);
draw_board();
gotoxy(30, 20);
//textcolor(128+RED);
printf(" Ganaste! ");
_getch();
exit(0);
}go(pos);
draw_board();
start_game();
}void start_game()
{ // p==1 then X p==0 then O
if (posswin(comp))
{go(posswin(comp));
flag = 1; }else if (posswin(player))
go(posswin(player));
else if (make2())
go(make2());
else
go(make4());
draw_board();
if (flag)
{gotoxy(30, 20);
//textcolor(128+RED);
printf(" La computadora gano ");
_getch();
}else
player_first();
}void check_draw()
{if (turn > 9)
{gotoxy(30, 20);
//textcolor(128+RED);
printf(" Empate ");
_getch();
exit(0);
}}void draw_board()
{int j;
for (j = 9; j<17; j++)
{gotoxy(35, j);
printf("| |");
}gotoxy(28, 11);
printf("-----------------------");
gotoxy(28, 14);
printf("-----------------------");
for (j = 1; j<10; j++)
{if (board[j] == 3)
put_X_O('X', j);
else if (board[j] == 5)
put_X_O('O', j);
}}void put_X_O(char ch, int pos)
{int m;
int x = 31, y = 10;
m = pos;if (m > 3)
{while (m > 3)
{y += 3;
m -= 3;
} }if (pos % 3 == 0)
x += 16;
else
{pos %= 3;
pos--;
while (pos)
{x += 8;
pos--;
} }gotoxy(x, y);
printf("%c", ch);
}
Comentarios sobre la versión: 1.0 (1)