คืออาจารย์สั่งให้เขียนเกม OX ดูอ่ะ
ในวิชา algorithm
คิดว่าไม่น่าจะยากไร พอเขียนเสร็จพบว่าใช้ได้ดีทีเดียว
เดี๋ยวคิดว่าค่อยลองเขียน AI
#include<stdio.h>
#define TRUE 1
#define FALSE 0
#define Xwin 2
#define Owin 3
#define MAXNAME 25
char table[3][3];
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 Sukoom |\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;
else if((table[1][0]==’O')&&(table[1][1]==’O')&&(table[1][2]==’O'))
return Owin;
else if((table[2][0]==’O')&&(table[2][1]==’O')&&(table[2][2]==’O'))
return Owin;
else if((table[0][0]==’O')&&(table[1][0]==’O')&&(table[2][0]==’O'))
return Owin;
else if((table[0][1]==’O')&&(table[1][1]==’O')&&(table[2][1]==’O'))
return Owin;
else if((table[0][2]==’O')&&(table[1][2]==’O')&&(table[2][2]==’O'))
return Owin;
else if((table[0][0]==’O')&&(table[1][1]==’O')&&(table[2][2]==’O'))
return Owin;
else if((table[2][0]==’O')&&(table[1][1]==’O')&&(table[0][2]==’O'))
return Owin;
else if((table[0][0]==’X')&&(table[0][1]==’X')&&(table[0][2]==’X'))
return Xwin;
else if((table[1][0]==’X')&&(table[1][1]==’X')&&(table[1][2]==’X'))
return Xwin;
else if((table[2][0]==’X')&&(table[2][1]==’X')&&(table[2][2]==’X'))
return Xwin;
else if((table[0][0]==’X')&&(table[1][0]==’X')&&(table[2][0]==’X'))
return Xwin;
else if((table[0][1]==’X')&&(table[1][1]==’X')&&(table[2][1]==’X'))
return Xwin;
else if((table[0][2]==’X')&&(table[1][2]==’X')&&(table[2][2]==’X'))
return Xwin;
else if((table[0][0]==’X')&&(table[1][1]==’X')&&(table[2][2]==’X'))
return Xwin;
else if((table[2][0]==’X')&&(table[1][1]==’X')&&(table[0][2]==’X'))
return Xwin;
else
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]==’ ‘)
{
printf("\n%d,%d\n",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);
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);
score1++;
drawTable(score1,score2,player1,player2);
break;
}
if(checkTableWin()==Owin)
{
printf("\n %s You are win!\n",player2);
score2++;
drawTable(score1,score2,player1,player2);
break;
}
if(mark==’X')mark=’O';
else if(mark==’O')mark=’X';
}
printf("Do you want to play again Y/n:");
scanf("\n%c",&key);
if((key == ‘n’)||(key==’N'))quit = TRUE;
}
}
//รู้สืกว่าเขียนยังไม่ค่อยดีเท่าไหร่ ค่อยปรับปรุงเอา
แก้ไขเมื่อ 14/1/2548 19:00:48
Pingback: รวบรวมสารบัญเรื่องที่เคยเขียนทั้งหมด | My com & My life