我一周前开始学习C,并决定编写自己的tictactoe游戏进行练习。
我在主要
中有一个游戏循环for(int i = 1; player1.isWinner!=1 || player2.isWinner!=1 || noWinner!=1; i++){...}
i - 计数转弯和游戏结束的条件是玩家赢了,或者没有人赢过(抽奖)。
现在只有在所有条件为1时才退出。
如何让它正常工作?
答案 0 :(得分:2)
值是1,有人赢了吗?
如果是这样,那么你需要检查这些条件是否为真,如果不是则循环:
!(player1.isWinner==1 || player2.isWinner==1 || noWinner==1)
或使用AND,在没有设置时检查和循环:
(player1.isWinner!=1 && player2.isWinner!=1 && noWinner!=1)
答案 1 :(得分:1)
考虑将条件提取到一个名称很好的函数,以便提高可读性和可维护性:
int hasWinner(/*...*/)
{
return player1.isWinner == 1 || player2.isWinner == 1 || noWinner == 1;
}
然后很明显条件应该是什么:
for(int i = 1; !hasWinner(/*...*/); i++){ /*...*/ }
答案 2 :(得分:1)
您似乎正在使用某种向后布尔逻辑。如果1表示布尔值true
,则条件应为
!(player1.isWinner || player2.isWinner || noWinner)
这假设您在player1获胜时将player1.isWinner
设置为1。
使用来自stdbool.h的值为bool
或true
的{{1}}可能会更容易。