Game Ox new the AI enchant


เขียนเกม ox เพิ่มเติม ใส่ AI และแก้บัก นิดหน่อย

คอมฉลาดพอควร เล่นกับคอมโดยการพิมพ์ชื่อผู้เล่นว่าคอมนะ

#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define Xwin 2
#define Owin 3
#define DRAW 4
#define MAXNAME 25
char table[3][3];
int Computer1Move(char mark)
{
if((table[0][0]==mark)&&(table[0][1]==mark)&&(table[0][2]==’ ‘))
table[0][2] = mark;
else if((table[1][0]==mark)&&(table[1][1]==mark)&&(table[1][2]==’ ‘))
table[1][2] = mark;
else if((table[2][0]==mark)&&(table[2][1]==mark)&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[0][0]==mark)&&(table[1][0]==mark)&&(table[2][0]==’ ‘))
table[2][0] = mark;
else if((table[0][1]==mark)&&(table[1][1]==mark)&&(table[2][1]==’ ‘))
table[2][1] = mark;
else if((table[0][2]==mark)&&(table[1][2]==mark)&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[0][0]==mark)&&(table[1][1]==mark)&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[2][0]==mark)&&(table[1][1]==mark)&&(table[0][2]==’ ‘))
table[0][2] = mark;
else if((table[0][0]==mark)&&(table[0][1]==’ ‘)&&(table[0][2]==mark))
table[0][1] = mark;
else if((table[1][0]==mark)&&(table[1][1]==’ ‘)&&(table[1][2]==mark))
table[1][1] = mark;
else if((table[2][0]==mark)&&(table[2][1]==’ ‘)&&(table[2][2]==mark))
table[2][1] = mark;
else if((table[0][0]==mark)&&(table[1][0]==’ ‘)&&(table[2][0]==mark))
table[1][0] = mark;
else if((table[0][1]==mark)&&(table[1][1]==’ ‘)&&(table[2][1]==mark))
table[1][1] = mark;
else if((table[0][2]==mark)&&(table[1][2]==’ ‘)&&(table[2][2]==mark))
table[1][2] = mark;
else if((table[0][0]==mark)&&(table[1][1]==’ ‘)&&(table[2][2]==mark))
table[1][1] = mark;
else if((table[2][0]==mark)&&(table[1][1]==’ ‘)&&(table[0][2]==mark))
table[1][1] = mark;
else if((table[0][0]==’ ‘)&&(table[0][1]==mark)&&(table[0][2]==mark))
table[0][0] = mark;
else if((table[1][0]==’ ‘)&&(table[1][1]==mark)&&(table[1][2]==mark))
table[1][0] = mark;
else if((table[2][0]==’ ‘)&&(table[2][1]==mark)&&(table[2][2]==mark))
table[2][0] = mark;
else if((table[0][0]==’ ‘)&&(table[1][0]==mark)&&(table[2][0]==mark))
table[0][0] = mark;
else if((table[0][1]==’ ‘)&&(table[1][1]==mark)&&(table[2][1]==mark))
table[0][1] = mark;
else if((table[0][2]==’ ‘)&&(table[1][2]==mark)&&(table[2][2]==mark))
table[0][2] = mark;
else if((table[0][0]==’ ‘)&&(table[1][1]==mark)&&(table[2][2]==mark))
table[0][0] = mark;
else if((table[2][0]==’ ‘)&&(table[1][1]==mark)&&(table[0][2]==mark))
table[2][0] = mark;
else if(mark == ‘X’)
{
if((table[0][0]==’O')&&(table[0][1]==’O')&&(table[0][2]==’ ‘))
table[0][2] = mark;
else if((table[1][0]==’O')&&(table[1][1]==’O')&&(table[1][2]==’ ‘))
table[1][2] = mark;
else if((table[2][0]==’O')&&(table[2][1]==’O')&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[0][0]==’O')&&(table[1][0]==’O')&&(table[2][0]==’ ‘))
table[2][0] = mark;
else if((table[0][1]==’O')&&(table[1][1]==’O')&&(table[2][1]==’ ‘))
table[2][1] = mark;
else if((table[0][2]==’O')&&(table[1][2]==’O')&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[0][0]==’O')&&(table[1][1]==’O')&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[2][0]==’O')&&(table[1][1]==’O')&&(table[0][2]==’ ‘))
table[0][2] = mark;
else if((table[0][0]==’O')&&(table[0][1]==’ ‘)&&(table[0][2]==’O'))
table[0][1] = mark;
else if((table[1][0]==’O')&&(table[1][1]==’ ‘)&&(table[1][2]==’O'))
table[1][1] = mark;
else if((table[2][0]==’O')&&(table[2][1]==’ ‘)&&(table[2][2]==’O'))
table[2][1] = mark;
else if((table[0][0]==’O')&&(table[1][0]==’ ‘)&&(table[2][0]==’O'))
table[1][0] = mark;
else if((table[0][1]==’O')&&(table[1][1]==’ ‘)&&(table[2][1]==’O'))
table[1][1] = mark;
else if((table[0][2]==’O')&&(table[1][2]==’ ‘)&&(table[2][2]==’O'))
table[1][2] = mark;
else if((table[0][0]==’O')&&(table[1][1]==’ ‘)&&(table[2][2]==’O'))
table[1][1] = mark;
else if((table[2][0]==’O')&&(table[1][1]==’ ‘)&&(table[0][2]==’O'))
table[1][1] = mark;
else if((table[0][0]==’ ‘)&&(table[0][1]==’O')&&(table[0][2]==’O'))
table[0][0] = mark;
else if((table[1][0]==’ ‘)&&(table[1][1]==’O')&&(table[1][2]==’O'))
table[1][0] = mark;
else if((table[2][0]==’ ‘)&&(table[2][1]==’O')&&(table[2][2]==’O'))
table[2][0] = mark;
else if((table[0][0]==’ ‘)&&(table[1][0]==’O')&&(table[2][0]==’O'))
table[0][0] = mark;
else if((table[0][1]==’ ‘)&&(table[1][1]==’O')&&(table[2][1]==’O'))
table[0][1] = mark;
else if((table[0][2]==’ ‘)&&(table[1][2]==’O')&&(table[2][2]==’O'))
table[0][2] = mark;
else if((table[0][0]==’ ‘)&&(table[1][1]==’O')&&(table[2][2]==’O'))
table[0][0] = mark;
else if((table[2][0]==’ ‘)&&(table[1][1]==’O')&&(table[0][2]==’O'))
table[2][0] = mark;

else if((table[1][1]==’ ‘))
table[1][1] = mark;

else if((table[1][1]==’X')&&(table[1][0]==’X')&&(table[0][0]=’ ‘))
table[0][0] = mark;
else if((table[1][1]==’X')&&(table[1][0]==’X')&&(table[2][0]=’ ‘))
table[2][0] = mark;
else if((table[1][1]==’X')&&(table[0][1]==’X')&&(table[0][0]=’ ‘))
table[0][0] = mark;
else if((table[1][1]==’X')&&(table[0][1]==’X')&&(table[0][2]=’ ‘))
table[0][2] = mark;
else if((table[1][1]==’X')&&(table[1][2]==’X')&&(table[2][2]=’ ‘))
table[2][2] = mark;
else if((table[1][1]==’X')&&(table[1][2]==’X')&&(table[0][2]=’ ‘))
table[0][2] = mark;
else if((table[1][1]==’X')&&(table[2][1]==’X')&&(table[2][2]=’ ‘))
table[2][2] = mark;
else if((table[1][1]==’X')&&(table[2][1]==’X')&&(table[2][0]=’ ‘))
table[2][0] = mark;

else if((table[1][1]==’O')&&(table[0][0]==’ ‘))
table[0][0] = mark;
else if((table[1][1]==’O')&&(table[0][2]==’ ‘))
table[0][2] = mark;
else if((table[1][1]==’O')&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[1][1]==’O')&&(table[2][0]==’ ‘))
table[2][0] = mark;
else if((table[1][1]==’X')&&(table[0][1]==’ ‘))
table[0][1] = mark;
else if((table[1][1]==’X')&&(table[1][0]==’ ‘))
table[1][0] = mark;
else if((table[1][1]==’X')&&(table[1][2]==’ ‘))
table[1][2] = mark;
else if((table[1][1]==’X')&&(table[2][1]==’ ‘))
table[2][1] = mark;
}
else
if(mark == ‘O’)
{
if((table[0][0]==’
X’)&&(table[0][1]==’X')&&(table[0][2]==’ ‘))
table[0][2] = mark;
else if((table[1][0]==’X')&&(table[1][1]==’X')&&(table[1][2]==’ ‘))
table[1][2] = mark;
else if((table[2][0]==’X')&&(table[2][1]==’X')&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[0][0]==’X')&&(table[1][0]==’X')&&(table[2][0]==’ ‘))
table[2][0] = mark;
else if((table[0][1]==’X')&&(table[1][1]==’X')&&(table[2][1]==’ ‘))
table[2][1] = mark;
else if((table[0][2]==’X')&&(table[1][2]==’X')&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[0][0]==’X')&&(table[1][1]==’X')&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[2][0]==’X')&&(table[1][1]==’X')&&(table[0][2]==’ ‘))
table[0][2] = mark;
else if((table[0][0]==’X')&&(table[0][1]==’ ‘)&&(table[0][2]==’X'))
table[0][1] = mark;
else if((table[1][0]==’X')&&(table[1][1]==’ ‘)&&(table[1][2]==’X'))
table[1][1] = mark;
else if((table[2][0]==’X')&&(table[2][1]==’ ‘)&&(table[2][2]==’X'))
table[2][1] = mark;
else if((table[0][0]==’X')&&(table[1][0]==’ ‘)&&(table[2][0]==’X'))
table[1][0] = mark;
else if((table[0][1]==’X')&&(table[1][1]==’ ‘)&&(table[2][1]==’X'))
table[1][1] = mark;
else if((table[0][2]==’X')&&(table[1][2]==’ ‘)&&(table[2][2]==’X'))
table[1][2] = mark;
else if((table[0][0]==’X')&&(table[1][1]==’ ‘)&&(table[2][2]==’X'))
table[1][1] = mark;
else if((table[2][0]==’X')&&(table[1][1]==’ ‘)&&(table[0][2]==’X'))
table[1][1] = mark;
else if((table[0][0]==’ ‘)&&(table[0][1]==’X')&&(table[0][2]==’X'))
table[0][0] = mark;
else if((table[1][0]==’ ‘)&&(table[1][1]==’X')&&(table[1][2]==’X'))
table[1][0] = mark;
else if((table[2][0]==’ ‘)&&(table[2][1]==’X')&&(table[2][2]==’X'))
table[2][0] = mark;
else if((table[0][0]==’ ‘)&&(table[1][0]==’X')&&(table[2][0]==’X'))
table[0][0] = mark;
else if((table[0][1]==’ ‘)&&(table[1][1]==’X')&&(table[2][1]==’X'))
table[0][1] = mark;
else if((table[0][2]==’ ‘)&&(table[1][2]==’X')&&(table[2][2]==’X'))
table[0][2] = mark;
else if((table[0][0]==’ ‘)&&(table[1][1]==’X')&&(table[2][2]==’X'))
table[0][0] = mark;
else if((table[2][0]==’ ‘)&&(table[1][1]==’X')&&(table[0][2]==’X'))
table[2][0] = mark;

else if((table[1][1]==’ ‘))
table[1][1] = mark;

else if((table[1][1]==’O')&&(table[1][0]==’O')&&(table[0][0]=’ ‘))
table[0][0] = mark;
else if((table[1][1]==’O')&&(table[1][0]==’O')&&(table[2][0]=’ ‘))
table[2][0] = mark;
else if((table[1][1]==’O')&&(table[0][1]==’O')&&(table[0][0]=’ ‘))
table[0][0] = mark;
else if((table[1][1]==’O')&&(table[0][1]==’O')&&(table[0][2]=’ ‘))
table[0][2] = mark;
else if((table[1][1]==’O')&&(table[1][2]==’O')&&(table[2][2]=’ ‘))
table[2][2] = mark;
else if((table[1][1]==’O')&&(table[1][2]==’O')&&(table[0][2]=’ ‘))
table[0][2] = mark;
else if((table[1][1]==’O')&&(table[2][1]==’O')&&(table[2][2]=’ ‘))
table[2][2] = mark;
else if((table[1][1]==’O')&&(table[2][1]==’O')&&(table[2][0]=’ ‘))
table[2][0] = mark;

else if((table[1][1]==’X')&&(table[0][0]==’ ‘))
table[0][0] = mark;
else if((table[1][1]==’X')&&(table[0][2]==’ ‘))
table[0][2] = mark;
else if((table[1][1]==’X')&&(table[2][2]==’ ‘))
table[2][2] = mark;
else if((table[1][1]==’X')&&(table[2][0]==’ ‘))
table[2][0] = mark;
else if((table[1][1]==’O')&&(table[0][1]==’ ‘))
table[0][1] = mark;
else if((table[1][1]==’O')&&(table[1][0]==’ ‘))
table[1][0] = mark;
else if((table[1][1]==’O')&&(table[1][2]==’ ‘))
table[1][2] = mark;
else if((table[1][1]==’O')&&(table[2][1]==’ ‘))
table[2][1] = mark;
}
else if(table[0][0]==’ ‘)
table[0][0] = mark;
else if(table[0][1]==’ ‘)
table[0][1] = mark;
else if(table[0][2]==’ ‘)
table[0][2] = mark;
else if(table[1][0]==’ ‘)
table[1][0] = mark;
else if(table[2][2]==’ ‘)
table[2][2] = mark;
else if(table[1][2]==’ ‘)
table[1][2] = mark;
else if(table[2][0]==’ ‘)
table[2][0] = mark;
else if(table[2][1]==’ ‘)
table[2][1] = mark;
}
int clearTable()
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
table[i][j]=’ ‘; //set default block is 0
}
int drawTable(int score1,int score2,char *name1,char *name2)
{
system(“clear”);
printf(“+———————————————————–+\n”);
printf(“| Simple Tic-Tac-Toe games by Sukoom2001@gmail.com |\n”);
printf(“+————————–+——————————–+\n”);
printf(” Current Game | Coordinates scheme \n”);
printf(” | \n”);
printf(” | | | | | \n”);
printf(” %c | %c | %c | 7 | 8 | 9 \n”,table[2][0],table[2][1],table[2][2]);
printf(” —|—|— | —-|—-|—- \n”);
printf(” %c | %c | %c | 4 | 5 | 6 \n”,table[1][0],table[1][1],table[1][2]);
printf(” —|—|— | —-|—-|—- \n”);
printf(” %c | %c | %c | 1 | 2 | 3 \n”,table[0][0],table[0][1],table[0][2]);
printf(” | | | | | \n”);
printf(“+————————–+——————————–+\n”);
printf(“Score: %s %d %s %d\n”,name1,score1,name2,score2);
printf(“+———————————————————–+”);
}

int checkTableWin()
{
if((table[0][0]==’O')&&(table[0][1]==’O')&&(table[0][2]==’O'))
return Owin;
if((table[1][0]==’O')&&(table[1][1]==’O')&&(table[1][2]==’O'))
return Owin;
if((table[2][0]==’O')&&(table[2][1]==’O')&&(table[2][2]==’O'))
return Owin;
if((table[0][0]==’O')&&(table[1][0]==’O')&&(table[2][0]==’O'))
return Owin;
if((table[0][1]==’O')&&(table[1][1]==’O')&&(table[2][1]==’O'))
return Owin;
if((table[0][2]==’O')&&(table[1][2]==’O')&&(table[2][2]==’O'))
return Owin;
if((table[0][0]==’O')&&(table[1][1]==’O')&&(table[2][2]==’O'))
return Owin;
if((table[2][0]==’O')&&(table[1][1]==’O')&&(table[0][2]==’O'))
return Owin;

if((table[0][0]==’X')&&(table[0][1]==’X')&&(table[0][2]==’X'))
return Xwin;
if((table[1][0]==’X')&&(table[1][1]==’X')&&(table[1][2]==’X'))
return Xwin;
if((table[2][0]==’X')&&(table[2][1]==’X')&&(table[2][2]==’X'))
return Xwin;
if((table[0][0]==’X')&&(table[1][0]==’X')&&(table[2][0]==’X'))
return Xwin;
if((table[0][1]==’X')&&(table[1][1]==’X')&&(table[2][1]==’X'))
return Xwin;
if((table[0][2]==’X')&&(table[1][2]==’X')&&(table[2][2]==’X'))
return Xwin;
if((table[0][0]==’X')&&(table[1][1]==’X')&&(table[2][2]==’X'))
return Xwin;
if((table[2][0]==’X')&&(table[1][1]==’X')&&(table[0][2]==’X'))
return Xwin;
if((table[0
][0]!=’ ‘)&&(table[0][1]!=’ ‘)&&(table[0][2]!=’ ‘)&&
(table[1][0]!=’ ‘)&&(table[1][1]!=’ ‘)&&(table[1][2]!=’ ‘)&&
(table[2][0]!=’ ‘)&&(table[2][1]!=’ ‘)&&(table[2][2]!=’ ‘))
return DRAW;
return FALSE;
}
int InputToTable(char Who,int cell)
{
int i,j,k=1;
if((cell>9)||(cell<1))return FALSE;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(k==cell)
{
if(table[i][j]==’ ‘)
{
table[i][j]=Who;
return TRUE;
}
else
{
return FALSE;
}
}
k++;
}
}
return FALSE;
}
int main()
{
char player1[MAXNAME],player2[MAXNAME];
char table[3][3];
int cell=1;
int key=0;
char mark=’X';
int score1=0,score2=0;
int whoturn=TRUE;
int quit = FALSE;
printf(“Hello to Simple Tic-Tac-Toe program.\n”);
printf(“Please enter your name Player1(X):”);
scanf(“%s”,player1);
printf(“Please enter your name Player2(O):”);
scanf(“%s”,player2);

while(!quit)
{
clearTable();
if(whoturn)
mark = ‘X’;
else
mark = ‘O’;
while(1)
{
printf(“\nMark = %c\n”,mark);
drawTable(score1,score2,player1,player2);
if(((mark == ‘X’)&&(!strcmp(player1,”com”)))||((mark == ‘O’)&&(!strcmp(player2,”com”))))
{
Computer1Move(mark);
}
else
{
do
{
if(mark == ‘X’)
printf(“\n %s, It’s your turn :”,player1);
else
printf(“\n %s, It’s your turn :”,player2);
scanf(“%d”,&cell);
}
while(!InputToTable(mark,cell));
}
if(checkTableWin()==Xwin)
{
printf(“\n %s You are win!\n”,player1);
getchar();
getchar();
score1++;
drawTable(score1,score2,player1,player2);
break;
}
if(checkTableWin()==Owin)
{
printf(“\n %s You are win!\n”,player2);
getchar();
getchar();
score2++;
drawTable(score1,score2,player1,player2);
break;
}
if(checkTableWin()==DRAW)
{
printf(“\nYou are draw\n”);
getchar();
getchar();
drawTable(score1,score2,player1,player2);
break;

}
if(mark==’X')mark=’O';
else if(mark==’O')mark=’X';
}
printf(“\nDo you want to play again Y/n:”);
scanf(“\n%c”,&key);
if((key == ‘n’)||(key==’N'))quit = TRUE;
whoturn = !whoturn;
}
}

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Connecting to %s