游戏介绍
这款游戏名为“运气大比拼”,是一个简单的两人轮流加金币的游戏。游戏的目标是通过轮流输入指令来增加各自的金币数量,最终金币数量多的玩家获胜。游戏使用C++编写,并利用了标准输入输出流(iostream)库来进行用户交互。
游戏规则
- 初始状态:游戏开始时,两个玩家(玩家1和玩家2)的金币数量均为0。
- 轮次:游戏共进行10轮,每轮由一个玩家操作。
- 加金币:每一轮,系统会随机生成一个1到50之间的整数作为本轮可加的金币数量,并告知当前操作的玩家。玩家需要输入数字0来确认加金币。
- 操作:如果玩家输入的不是整数或者不是0,系统会提示输入无效并要求重新输入。
- 切换玩家:每轮操作后,操作权会切换到另一个玩家。
- 胜负判定:游戏进行10轮后,比较两个玩家的金币总数,金币多的玩家获胜。如果金币数量相同,则视为胜负判断失败。
代码实现
代码主要包含几个部分:
- 全局变量:定义了两个玩家的金币数量(player1和player2)、当前轮次的加金币数量(add)、用户输入(userinput)以及表示当前操作玩家的变量(turn)。
- 函数:
changeturn()
:用于切换操作玩家。addcoin()
:用于执行加金币的操作,并包含用户输入和错误处理的逻辑。
- 主函数(
main()
):初始化随机数生成器,输出游戏欢迎信息,进行10轮游戏,并最后输出每个玩家的金币数量和胜负结果。
运行结果
运行程序后,玩家会看到游戏欢迎信息和初始金币数量。接着,程序会进行10轮游戏,每轮输出当前操作的玩家和可加的金币数量,等待玩家输入0来确认。如果输入无效,程序会提示并要求重新输入。游戏结束后,程序会输出最终每个玩家的金币数量和胜负结果。
注意事项
- 程序中使用了
rand()
函数来生成随机数,但由于rand()
的随机性有限,对于需要更高随机性的场合,可以考虑使用其他随机数生成方法。 - 程序中使用了
cin.clear()
和cin.ignore()
来处理输入错误,确保用户能够重新输入。 - 游戏胜负判断较为简单,只考虑了金币数量的多少,没有考虑其他可能的胜负条件(如玩家退出游戏等)。在实际应用中,可能需要增加更多的逻辑来处理这些情况。
源码:
#include<iostream> // 引入输入输出流库
#include<stdlib.h> // 引入标准库,包含rand()和srand()等函数
#include<time.h> // 引入时间库,用于初始化随机数生成器
#include<limits> // 引入limits库,用于获取流的最大大小
// 定义全局变量
int player1 = 0; // 玩家1的金币数
int player2 = 0; // 玩家2的金币数
int add = 0; // 每一轮增加的金币数
int turn = 0; // 当前轮次的玩家,0代表玩家1,1代表玩家2
using namespace std; // 使用标准命名空间
// 函数:切换玩家
void changeturn() {
// 切换玩家
if (turn == 0) {
turn = 1;
} else {
turn = 0;
}
}
// 函数:增加金币
void addcoin() {
// 生成1到50之间的随机整数作为增加的金币数
add = rand() % 50 + 1;
cout << "当前轮次:" << (turn == 0 ? "玩家1" : "玩家2") << " 加金币" << endl;
// 循环确保用户输入为整数0
int input;
while (!(cin >> input) || input != 0) { // 确保输入是整数且为0
cin.clear(); // 清除输入流中的错误标志
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略错误输入直到换行符
cout << "输入无效,请输入0以加金币:" << endl;
}
// 根据当前玩家增加金币
if (turn == 0) {
player1 += add;
cout << "玩家1 增加了" << add << "金币,当前金币:" << player1 << endl;
} else {
player2 += add;
cout << "玩家2 增加了" << add << "金币,当前金币:" << player2 << endl;
}
changeturn(); // 切换玩家
}
int main() {
// 初始化随机数生成器
srand(time(NULL));
// 游戏欢迎语
cout << "欢迎来到运气大比拼,输入0加一次金币\n" << endl; // 这里会换两次行,为程序设计不是错误
// 显示初始金币
cout << "初始金币:" << "玩家1: " << player1 << " 玩家二: " << player2 << endl;
// 游戏循环,共10轮
for (int i = 0; i <= 9; i++) {
addcoin(); // 调用函数增加金币
}
// 显示最终金币
cout << "最终金币:" << "玩家1: " << player1 << " 玩家二: " << player2 << endl;
// 判断胜负
if(player1 > player2){
cout << "玩家1获胜" << endl;
} else if(player1 < player2){
cout << "玩家2获胜" << endl;
} else {
cout << "胜负判断失败!!" << endl; // 平局和其他错误都视为胜负判断失败
}
return 0; // 程序正常结束
}