Hur man gör en TIC TAC TOE spel med C++ (2 / 4 steg)
Steg 2: Källkoden
#include < stdio.h >#include < conio.h >
#include < stdlib.h >
#include < windows.h >
int styrelsen [10] = {2,2,2,2,2,2,2,2,2,2}.
int vända = 1, flagga = 0;
int spelare, comp;
void menu();
void gå 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}. Detta är global variabel
centrera av axel är inställd på den övre vänstra cornor på skärmen
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 val;
system("CLS");
printf("\n---Menu---");
printf ("\n1: spela med X");
printf ("\n2: spela med O");
printf ("\n3: Exit");
printf ("\nEnter ditt val: >");
scanf ("%d", och val);
vända = 1;
Switch (val)
{
fall 1:
Player = 1;
komp = 0;
player_first();
bryta;
fall 2:
Player = 0;
komp = 1;
start_game();
bryta;
fall 3:
Exit(1);
standard:
Menu();
}
}
int make2()
{
om (ombord [5] == 2)
returnera 5.
om (ombord [2] == 2)
returnera 2.
om (ombord [4] == 2)
returnera 4.
om (ombord [6] == 2)
returnera 6.
om (ombord [8] == 2)
returnera 8.
Return 0;
}
int make4()
{
om (styrelsen [1] == 2).
tillbaka 1.
om (ombord [3] == 2)
returnera 3.
om (ombord [7] == 2)
returnera 7.
om (ombord [9] == 2)
returnera 9.
Return 0;
}
int posswin (int p)
{
p == 1 sedan X p == 0 då O
int i;
int check_val, pos;
IF(p == 1)
check_val = 18;
annat
check_val = 50;
Jag = 1;
medan (jag < = 9) //row check
{
om (ombord [i] * ombord [jag + 1] * ombord [jag + 2] == check_val)
{
om (ombord [i] == 2).
tillbaka i;
om (ombord [jag + 1] == 2).
tillbaka i + 1.
om (ombord [jag + 2] == 2)
tillbaka i + 2.
}
Jag + = 3.
}
Jag = 1;
medan (jag < = 3) //column check
{
om (styrelsen [i] * ombord [jag + 3] * ombord [i + 6] == check_val)
{
om (ombord [i] == 2).
tillbaka i;
om (ombord [jag + 3] == 2).
tillbaka i + 3.
om (ombord [i + 6] == 2).
tillbaka i + 6.
}
i ++;
}
om (styrelsen [1] * ombord [5] * ombord [9] == check_val)
{
om (styrelsen [1] == 2).
tillbaka 1.
om (ombord [5] == 2)
returnera 5.
om (ombord [9] == 2)
returnera 9.
}
om (ombord [3] * ombord [5] * ombord [7] == check_val)
{
om (ombord [3] == 2)
returnera 3.
om (ombord [5] == 2)
returnera 5.
om (ombord [7] == 2)
returnera 7.
}
Return 0;
}
void go (int n)
{
IF(turn % 2)
styrelsen [n] = 3;
annat
styrelsen [n] = 5;
tur ++;
}
void player_first()
{
int pos;
check_draw();
draw_board();
gotoxy(30,18);
printf ("din vända: >");
scanf ("%d", & pos);
om (ombord [pos]! = 2)
player_first();
IF(POS == posswin(Player))
{
Go(POS);
draw_board();
gotoxy(30,20);
TextColor(128+Red);
printf ("spelaren vinner");
getch();
Exit(0);
}
Go(POS);
draw_board();
start_game();
}
void start_game()
{
p == 1 sedan X p == 0 då O
IF(posswin(COMP))
{
Go(posswin(COMP));
Flagga = 1;
}
annat
IF(posswin(Player))
Go(posswin(Player));
annat
IF(make2())
Go(make2());
annat
Go(make4());
draw_board();
IF(Flag)
{
gotoxy(30,20);
TextColor(128+Red);
printf ("datorn vinner");
getch();
}
annat
player_first();
}
void check_draw()
{
IF(turn > 9)
{
gotoxy(30,20);
TextColor(128+Red);
printf ("Game Draw");
getch();
Exit(0);
}
}
void draw_board()
{
int j;
för (j = 9; j < 17; j ++)
{
gotoxy(35,j);
printf ("| |");
}
gotoxy(28,11);
printf("-----------------------");
gotoxy(28,14);
printf("-----------------------");
för (j = 1; j < 10; j ++)
{
om (styrelsen [j] == 3)
put_X_O('X',j);
annat
om (styrelsen [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)
{
medan (m > 3)
{
y + = 3.
m-= 3.
}
}
om (pos % 3 == 0)
x += 16.
annat
{
POS % = 3;
POS--;
While(POS)
{
x+= 8.
POS--;
}
}
gotoxy(x,y);
printf("%c",CH);
}