Paso 2: El código fuente
#include < stdio.h >#include < conio.h >
#include < stdlib.h >
#include < windows.h >
int tabla [10] = {2,2,2,2,2,2,2,2,2,2};
int vuelta = 1, bandera = 0;
int jugador, comp;
void menu();
vaya vacío (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}; Esta es la variable global
centro del eje se establece en el cornor izquierda superior de la pantalla
void gotoxy (int x, int y)
{
Coord. X = x;
Coord. Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
int main()
{
System("CLS");
Menu();
getch();
}
void menu()
{
int opción;
System("CLS");
printf("\n---MENU---");
printf ("\n1: jugar con X");
printf ("\n2: jugar con O");
printf ("\n3: salida");
printf ("\nEnter su opción: >");
scanf ("%d" & elección);
activar = 1;
Switch (elección)
{
caso 1:
jugador = 1;
Comp = 0;
player_first();
rotura;
caso 2:
jugador = 0;
COMP = 1;
start_game();
rotura;
caso 3:
Exit(1);
por defecto:
Menu();
}
}
int make2()
{
Si (tablero [5] == 2)
Retorno 5;
Si (tablero [2] == 2)
retorno 2;
Si (tablero [4] == 2)
retorno 4;
Si (tablero [6] == 2)
retorno 6;
Si (tablero [8] == 2)
retorno 8;
return 0;
}
int make4()
{
Si (tabla [1] == 2).
retorno 1;
Si (tablero [3] == 2)
retorno 3;
Si (tablero [7] == 2)
retorno 7;
Si (tablero [9] == 2)
retorno 9;
return 0;
}
int posswin (int p)
{
p == 1 entonces X p == 0 entonces O
int i;
int check_val, pos;
if(p == 1)
check_val = 18;
otra cosa
check_val = 50;
i = 1;
mientras (i < = 9) //row check
{
Si (tablero [i] * tablero [i + 1] * tablero [+ 2] == check_val)
{
Si (tablero [i] == 2).
volver i;
Si (tablero [i + 1] == 2).
volver i + 1;
Si (tablero [+ 2] == 2)
volver i + 2;
}
i += 3;
}
i = 1;
mientras (i < = 3) //column check
{
Si (tabla [i] * [+ 3] del tablero * tablero [+ 6] == check_val)
{
Si (tablero [i] == 2).
volver i;
Si (tablero [+ 3] == 2).
volver + 3;
Si (tablero [+ 6] == 2).
volver + 6;
}
i ++;
}
Si (tabla [1] * [5] del tablero * tablero [9] == check_val)
{
Si (tabla [1] == 2).
retorno 1;
Si (tablero [5] == 2)
Retorno 5;
Si (tablero [9] == 2)
retorno 9;
}
Si (tablero [3] * [5] del tablero * tablero [7] == check_val)
{
Si (tablero [3] == 2)
retorno 3;
Si (tablero [5] == 2)
Retorno 5;
Si (tablero [7] == 2)
retorno 7;
}
return 0;
}
vaya vacío (int n)
{
if(Turn % 2)
tabla [n] = 3;
otra cosa
tabla [n] = 5;
a su vez ++;
}
void player_first()
{
int pos;
check_draw();
draw_board();
gotoxy(30,18);
printf ("su vuelta: >");
scanf ("%d" & pos);
Si (tablero [pos]! = 2)
player_first();
if(pos == posswin(Player))
{
Go(POS);
draw_board();
gotoxy(30,20);
TextColor(128+red);
printf ("jugador gana");
getch();
Exit(0);
}
Go(POS);
draw_board();
start_game();
}
void start_game()
{
p == 1 entonces X p == 0 entonces O
if(posswin(COMP))
{
Go(posswin(COMP));
bandera = 1;
}
otra cosa
if(posswin(Player))
Go(posswin(Player));
otra cosa
if(make2())
Go(make2());
otra cosa
Go(make4());
draw_board();
if(flag)
{
gotoxy(30,20);
TextColor(128+red);
printf ("victorias del equipo");
getch();
}
otra cosa
player_first();
}
void check_draw()
{
if(Turn > 9)
{
gotoxy(30,20);
TextColor(128+red);
printf ("sorteo juego");
getch();
Exit(0);
}
}
void draw_board()
{
int j;
para (j = 9; j < 17; j ++)
{
gotoxy(35,j);
printf("| |");
}
gotoxy(28,11);
printf("-----------------------");
gotoxy(28,14);
printf("-----------------------");
para (j = 1; j < 10; j ++)
{
Si (tabla [j] == 3)
put_X_O('X',j);
otra cosa
Si (tabla [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)
{
mientras que (m > 3)
{
y += 3;
-m = 3;
}
}
Si (pos % 3 == 0)
x += 16;
otra cosa
{
pos % = 3;
pos--;
while(POS)
{
x+= 8;
pos--;
}
}
gotoxy(x,y);
printf("%c",CH);
}