这两天有丶事耽搁了,今天要做的是完善抽卡小游戏的功能。
首先我们给出、抽卡小游戏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判断语句中不止要判断选择何种卡片出售,并且要判断是否有足够的卡片进行操作。
写到这会儿到点吃饭了,今天就先这样吧,明天会加入更多功能:自定义卡片爆率、卡片战斗…