2021-4-24 日记 C++(十一)

这两天有丶事耽搁了,今天要做的是完善抽卡小游戏的功能。

首先我们给出、抽卡小游戏1.0的完整代码:

#include<iostream>
using namespace std;
class chouka {
public:
	chouka();
	void chou();
	void print();
	void menu();
private:
	int money, SSR, SR, R;
};
chouka::chouka()
{
	money = 100;
	SSR = 0;
	SR = 0;
	R = 0;
}
void chouka::chou()
{
	cout << "你的抽卡结果是:";
	money -= 10;
	int i = rand() % 100;
	if (i<10)
	{
		SSR++;
		cout << "SSR!!" << endl;
	}
	else if (i<30)
	{
		SR++;
		cout << "SR!" << endl;
	}
	else
	{
		R++;
		cout << "R..." << endl;
	}
}
void chouka::print()
{
	cout << "=========仓库=========" << endl;
	cout << "你现在拥有SSR:" << SSR << endl;
	cout << "你现在拥有SR:" << SR << endl;
	cout << "你现在拥有R:" << R << endl;
	cout << "你现在拥有金钱:" << money << endl;
	cout << "======================" << endl;
}
void chouka::menu()
{
	int n = 1, order;
	while (n)
	{
		system("cls");
		cout << "======抽卡小游戏======" << endl;
		cout << "输入1 : 进行抽卡" << endl;
		cout << "输入2 : 查看仓库" << endl;
		cout << "输入3 : 退出游戏" << endl;
		cout << "======================" << endl;
		cout << "请输入你的选择:";
		cin >> order;
		switch (order)
		{
		case 1:
			system("cls");
			chou();
			system("pause");
			break;
		case 2:
			system("cls");
			print();
			system("pause");
			break;
		case 3:
			n = 0;
			break;
		}
	}
}
void main()
{
	chouka s1;
	s1.menu();
	system("pause");
}

我们首先要想的是把money这个变量用起来,目前1.0版本可以无限抽卡,把钱抽到负数都行,这显然是不现实的。于是我们首先更改一下menu函数里的循环条件表达式,将其更改为money,当money<=0的时候游戏结束。

修改后的menu函数如下:

void chouka::menu()
{
	int order;
	while (money>0)
	{
		...
	}
	system("cls");
	print();
	system("pause");
	system("cls");
	cout << "Game Over!" << endl;
}

当money小于等于0时退出循环,在退出循环后需要先清屏,再打印一次仓库,查看我们在游戏结束前的“战绩”,然后再清屏显示game over的提示。

那我们怎么获得money呢?可以加入一个卖卡的功能,不同的卡能卖的钱不同,函数实现如下:

void chouka::sell()
{
	int order;
	print();
	cout << "输入1 : R : 5$" << endl;
	cout << "输入2 : SR : 20$" << endl;
	cout << "输入3 : SSR : 50$" << endl;
	cout << "======================" << endl;
	cout << "请选择你要卖的卡:";
	cin >> order;
	if (order == 1&&R>0)
	{
		R--;
		money += 5;
		cout << "出售成功!" << endl;
		system("pause");
		system("cls");
		print();
	}
	else if (order == 2&&SR>0)
	{
		SR--;
		money += 20;
		cout << "出售成功!" << endl;
		system("pause");
		system("cls");
		print();
	}
	else if (order == 3&&SSR>0)
	{
		SSR--;
		money += 50;
		cout << "出售成功!" << endl;
		system("pause");
		system("cls");
		print();
	}
	else
	{
		cout << "错误指令或没有足够的卡!" << endl;
		return;
	}
}

了解try…catch等异常处理机制后,可以对错误进行分类,将输入非法指令或没有足够的卡进行分类输出,不必像现在一样“含糊不清”,有兴趣的小伙伴可以自行了解并加以改进。

if判断语句中不止要判断选择何种卡片出售,并且要判断是否有足够的卡片进行操作。

写到这会儿到点吃饭了,今天就先这样吧,明天会加入更多功能:自定义卡片爆率、卡片战斗…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值