运气大比拼游戏c++

游戏介绍
这款游戏名为“运气大比拼”,是一个简单的两人轮流加金币的游戏。游戏的目标是通过轮流输入指令来增加各自的金币数量,最终金币数量多的玩家获胜。游戏使用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; // 程序正常结束
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值