如何用bool或if语句终止21根火柴游戏程序(不使用exit()等)
21根火柴双人游戏代码修复
游戏规则
- 初始21根火柴,双人轮流取火柴
- 每次只能取1-3根,取0或超过3根判定作弊,直接落败
- 当剩余火柴≤1时,当前操作的玩家落败
原代码问题
- 变量名不一致:出现
Lucifers(应为Matches) - 作弊或胜负判定后,未终止后续流程,循环仍会继续执行
- 胜负提示文本存在语言混合(荷兰语+英语)
修复后代码
#include <iostream> using namespace std; int main() { int Matches = 21; int Matches1, Matches2; bool gameRunning = true; // 控制游戏运行的标志 while (Matches > 1 && gameRunning) { // 玩家1回合 if (gameRunning) { cout << "玩家1选择取1-3根火柴。" << endl; cout << "输入取的火柴数量(1-3):"; cin >> Matches1; if (Matches1 < 1 || Matches1 > 3) { cout << "玩家1作弊!玩家2获胜。" << endl; gameRunning = false; } else { Matches -= Matches1; cout << endl << "剩余火柴:" << Matches << "根。" << endl << endl; if (Matches <= 1) { cout << "玩家1落败!" << endl; gameRunning = false; } } } // 玩家2回合 if (gameRunning) { cout << "玩家2选择取1-3根火柴。" << endl; cout << "输入取的火柴数量(1-3):"; cin >> Matches2; if (Matches2 < 1 || Matches2 > 3) { cout << "玩家2作弊!玩家1获胜。" << endl; gameRunning = false; } else { Matches -= Matches2; cout << endl << "剩余火柴:" << Matches << "根。" << endl << endl; if (Matches <= 1) { cout << "玩家2落败!" << endl; gameRunning = false; } } } } return 0; }
修复说明
- 新增
gameRunning布尔变量,作为循环的额外判定条件,当作弊或胜负产生时将其设为false,循环会在下一次判断时终止 - 每个回合开始前检查
gameRunning状态,避免游戏结束后仍执行后续输入逻辑 - 统一提示文本为中文,修正变量名错误
- 调整逻辑顺序:先判断作弊,再处理火柴数量减少和胜负判定,确保流程正确
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

