2015-11-29 38 views
-1

M赢家检查例程不起作用。例如,对于x o x,我获得了x作为胜利者。分数和分数

#include <stdio.h> 
#include <stdlib.h> 

char plansza[3][3]; 
void wczytaj() 
{ 
printf(" %c |%c | %c\n",plansza[0][0],plansza[0][1],plansza[0][2]); 
printf("-------\n"); 
printf(" %c |%c | %c\n",plansza[1][0],plansza[1][1],plansza[1][2]); 
printf("-------\n"); 
printf(" %c |%c | %c\n",plansza[2][0],plansza[2][1],plansza[2][2]); 
} 
int sprawdzenie() 
{ 
if((plansza[0][0]&&plansza[0][1]&&plansza[0][2] =='x')|| 
(plansza[0][2]&&plansza[1][1]&&plansza[2][0]=='x') || 
(plansza[0][2]&&plansza[1][2]&&plansza[2][2]=='x') || 
(plansza[2][0]&&plansza[2][1]&&plansza[2][2]=='x') || 
(plansza[1][0]&&plansza[1][1]&&plansza[1][2]=='x') || 
(plansza[0][1]&&plansza[1][1]&&plansza[2][1]=='x') || 
(plansza[0][0]&&plansza[1][1]&&plansza[2][2]=='x') || 
(plansza[0][0]&&plansza[1][0]&&plansza[2][0]=='x')) 
{ 
    return 1; 

}else if((plansza[0][0]&&plansza[0][1]&&plansza[0][2]=='o') || 
(plansza[0][0]&&plansza[1][0]&&plansza[2][0]=='o') || 
(plansza[0][0]&&plansza[1][1]&&plansza[2][2]=='o') || 
(plansza[0][1]&&plansza[1][1]&&plansza[2][1]=='o') || 
(plansza[1][0]&&plansza[1][1]&&plansza[1][2]=='o') || 
(plansza[2][0]&&plansza[2][1]&&plansza[2][2]=='o') || 
(plansza[0][2]&&plansza[1][2]&&plansza[2][2]=='o') || 
(plansza[0][2]&&plansza[1][1]&&plansza[2][0]=='o')) 
{ 
    return 2; 
}else 
    return 0; 



} 
    void gracz_x() 
{ 
unsigned int i=3; 
unsigned int j=3; 
wczytaj(); 
printf("Podaj wiersz i kolumnę: "); 
scanf("%u %u",&i,&j); 
if(plansza[i][j]!='o') 
    plansza[i][j]='x'; 
else{ 
    printf("Podaj poprawne współrzędne: "); 
    scanf("%u %u",&i,&j); 
    plansza[i][j]='x'; 
} 
} 
    void gracz_o() 
{ 
unsigned int i=3; 
unsigned int j=3; 
wczytaj(); 
printf("Podaj wiersz i kolumnę: "); 
scanf("%u %u",&i,&j); 
if(plansza[i][j]!='x') 
    plansza[i][j]='o'; 
else{ 
    printf("Podaj poprawne współrzędne: "); 
    scanf("%u %u",&i,&j); 
    plansza[i][j]='o'; 
} 

} 
int main() 

{ 

char wynik=0; 
int kolejka = 0; 
while(wynik==0) 
{ 
    if(kolejka==0) 
    { 
     gracz_o(); 

    }else{ 
     gracz_x(); 
    } 
    kolejka=kolejka+1; 
    wynik=sprawdzenie(); 
    if(kolejka==9){ 
     printf("remis"); 
     break; 
    } 
} 
wczytaj(); 
if(wynik==1) 
{ 
    printf("wygryw x\n"); 
}else if(wynik==2) 
    { 
     printf("wygryw o\n"); 
    } 

return 0; 
} 
+1

有一种非常简单的方法可以自己检查绘图代码:运行它。测试它。尝试一下。它打印是否正确?那么它可能会像它应该那样工作。 –

+0

如果您更好地对代码进行格式化,它会有很大的帮助:更多的空白和正确的缩进可以让所有人都更好,甚至可以发现您遇到的问题。 – Evert

+0

好的,对不起。我在这里新的,我忘了我有我的语言指定。 –

回答

0

if((plansza[0][0]&&plansza[0][1]&&plansza[0][2] =='x') 

plansza[0][0]检查是否有值(任何值不是'\0'),是否plansza[0][1]具有值和是否plansza[0][2]等于'x'。它不检查前两个值是否与'x'比较。

因此,你需要

if((plansza[0][0] == 'x' &&plansza[0][1] == 'x' &&plansza[0][2] =='x') 

等所有其他行也。

+0

它工作完美。谢谢! 如何画?我该如何计数移动? –