M X N井字游戏中宣布胜利者的问题(c编程)
我做了一个tic-tac-toe游戏,我遇到了如何赢得tic-tac-toe游戏的问题,其中赢得游戏的行数、列数和连续网格数由用户输入。 但有时在连续放置两个网格以赢得游戏(n)后,宣布赢家,有时不宣布赢家(这就是我的问题所在) n是赢得比赛的连续格数(由用户输入) r是用户输入的行数 c是用户输入的列数 我已经注意到,当你举例来说,如果n=3,并且用户连续输入3个x或o(xxx或ooo)时,它只会在第一个x或o从拐角处开始时宣布获胜(例如:坐标(0,0)(0,1)(0,2)将赢得游戏,但坐标(0,1)(0,2)(0,3)将不适用于用户通过列或对角线获胜的情况 如果你想看到完整的代码在你的电脑上试用,请在评论部分询问我 这是我尝试过的代码(但并不总是宣布获胜者)M X N井字游戏中宣布胜利者的问题(c编程),c,C,我做了一个tic-tac-toe游戏,我遇到了如何赢得tic-tac-toe游戏的问题,其中赢得游戏的行数、列数和连续网格数由用户输入。 但有时在连续放置两个网格以赢得游戏(n)后,宣布赢家,有时不宣布赢家(这就是我的问题所在) n是赢得比赛的连续格数(由用户输入) r是用户输入的行数 c是用户输入的列数 我已经注意到,当你举例来说,如果n=3,并且用户连续输入3个x或o(xxx或ooo)时,它只会在第一个x或o从拐角处开始时宣布获胜(例如:坐标(0,0)(0,1)(0,2)将赢得游戏,但坐标(
int player_-won(字符字母,int n)
{
int r,c;
整数=0;
//检查行以获得胜利
对于(r=0;r=0;--r)
{
if(格[r][c]==字母)
{
韩元+=1;
c+=1;
}
如果(韩元=n)
{
返回1;
}
}
返回0;
}
我希望(如果用户输入n=3),无论我在哪里连续得到3个x或o,都必须宣布获胜者
int player_won(char letter, int n)
{
int r, c;
int won = 0;
// Check rows for a win
for (r = 0 ; r < n ; ++r)
{
for (c = 0 ; c < n ; ++c)
{
if (grid[r][c] != letter)
{
break;
}
if (grid[r][c] == grid[r][c + 1])
{
if (c + 1 == n - 1)
{
return 1;
}
}
else break;
}
}
// Checks columns for a win
for (r = 0 ; r < n ; ++r)
{
for(c = 0 ; c < n ; ++c)
{
if (grid[c][r] != letter)
{
break;
}
if (grid[c][r] == grid[c + 1][r])
{
if (c + 1 == n - 1)
{
return 1;
}
}
else break;
}
}
// Checks first diagonal for a win
for (r = 0 ; r < n ; ++r)
{
if(grid[r][r] != letter)
{
break;
}
if (grid[r][r] == grid[r + 1][r + 1])
{
if (r + 1 == n - 1)
{
return 1;
}
}
else break;
}
// Checks second diagonal for a win
c = 0;
for(r = n - 1 ; r >= 0 ; --r)
{
if(grid[r][c] == letter)
{
won += 1;
c += 1;
}
if (won == n)
{
return 1;
}
}
return 0;
}