我爲兩位玩家寫了兩個函數。還有一個功能可以檢查獲勝條件。該程序正確執行,除非它沒有檢測到某人獲勝。所以檢查功能必定存在一些問題。Tic Tac Toe C程序沒有正確執行
#include<stdio.h>
int P1(int, char []), P2(int, char []), check(int, char []);
int main()
{
char a[10]= "---------" ;
int flag= 3, p, q;
while(flag== 3)
{
P1(p, a);
check(flag, a);
if(flag== 1)
{ printf("P1 WINS");}
else
{
P2(q, a);
check(flag, a);
if(flag== 2)
{printf("P2 WINS");}
}
}
return 0;}
int P1(int p, char a[10])
{
printf("P1: Which position?\n");
scanf("%d", &p);
a[p-1]= 'X';
printf("%c %c %c\n%c %c %c\n%c %c %c\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);return 0;
}
int P2(int q, char a[10])
{
printf("P2: Which position?\n");
scanf("%d", &q);
a[q-1]= '0';
printf("%c %c %c\n%c %c %c\n%c %c %c\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);return 0;
}
int check(int flag, char a[10])//isme galti hai
{
if(a[0]==a[1]==a[2]=='X' ||
a[3]==a[4]==a[5]=='X' ||
a[6]==a[7]==a[8]=='X' ||
a[0]==a[3]==a[6]=='X' ||
a[1]==a[4]==a[7]=='X' ||
a[2]==a[5]==a[8]=='X' ||
a[0]==a[4]==a[8]=='X' ||
a[2]==a[4]==a[6]=='X')
{
flag= 1;
}
else
{
if(a[0]==a[1]==a[2]=='0' ||
a[3]==a[4]==a[5]=='0' ||
a[6]==a[7]==a[8]=='0' ||
a[0]==a[3]==a[6]=='0' ||
a[1]==a[4]==a[7]=='0' ||
a[2]==a[5]==a[8]=='0' ||
a[0]==a[4]==a[8]=='0' ||
a[2]==a[4]==a[6]=='0')
{
flag= 2;
}
}
}
返回標誌的值指出後,它仍然不能正常工作。
#include<stdio.h>
int P1(int, char []), P2(int, char []), check(int, char []);
int main()
{
char a[10]= "---------" ;
int flag= 3, p, q;
while(flag== 3)
{
P1(p, a);
flag= check(flag, a);
if(flag== 1)
{ printf("P1 WINS");}
else
{
P2(q, a);
flag= check(flag, a);
if(flag== 2)
{printf("P2 WINS");}
}
}
return 0;}
int P1(int p, char a[10])
{
printf("P1: Which position?\n");
scanf("%d", &p);
a[p-1]= 'X';
printf("%c %c %c\n%c %c %c\n%c %c %c\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);return 0;
}
int P2(int q, char a[10])
{
printf("P2: Which position?\n");
scanf("%d", &q);
a[q-1]= '0';
printf("%c %c %c\n%c %c %c\n%c %c %c\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);return 0;
}
int check(int flag, char a[10])//isme galti hai
{
if(a[0]==a[1]==a[2]=='X' ||
a[3]==a[4]==a[5]=='X' ||
a[6]==a[7]==a[8]=='X' ||
a[0]==a[3]==a[6]=='X' ||
a[1]==a[4]==a[7]=='X' ||
a[2]==a[5]==a[8]=='X' ||
a[0]==a[4]==a[8]=='X' ||
a[2]==a[4]==a[6]=='X')
{
flag= 1;
}
else
{
if(a[0]==a[1]==a[2]=='0' ||
a[3]==a[4]==a[5]=='0' ||
a[6]==a[7]==a[8]=='0' ||
a[0]==a[3]==a[6]=='0' ||
a[1]==a[4]==a[7]=='0' ||
a[2]==a[5]==a[8]=='0' ||
a[0]==a[4]==a[8]=='0' ||
a[2]==a[4]==a[6]=='0')
{
flag= 2;
}
}
return flag;
}
如果試圖用數字替換字符而不是0而X使用8和9但是沒有正確執行。
請說明問題是什麼。說檢查功能有問題不是問題。另外請添加你迄今爲止嘗試修復該功能所做的事情。 –
這可能是一個作業問題 –
您想使用調試器來跟蹤代碼,以瞭解實際發生的情況。 – alk