#include <iostream>
#include <string>
#include <stdlib.h>
#include <time.h>
using namespace std;
class pet //建立一个宠物类
{
public:
//构造函数
pet( int a = 0, int h = 0, int t = 0, int m = 0, int he = 0, int st = 15 )
{
age = a;
hunger = h;
thirst = t;
mood = m;
health = he;
step = st;
}
//提取各个私有成员
int geta()
{
return age;
}
int geth()
{
return hunger;
}
int gett()
{
return thirst;
}
int getm()
{
return mood;
}
int gethe()
{
return health;
}
int getst()
{
return step;
}
void p2(); //饥饿、口渴以及心情随时间的变化函数
void show(); //各个数值的输出函数
void emergency( int w ); //各种特殊状态函数
//喂食函数
void feed()
{
hunger--;
step = step - 5;
}
//喂水函数
void drink()
{
thirst--;
step = step - 3;
}
//看医生函数
void doctor()
{
step = step - 10;
}
void touch( int w ); //抚摸函数
void fun( int w ); //玩耍函数
//提取寿命值
virtual int getl()
{
return age;
}
virtual void action( int act, int w, int emg ){} //主人采取各种动作函数,定义为纯虚函数
private:
int age; //年龄
int hunger; //饥饿值
int thirst; //口渴值
int mood; //心情指数
int health; //健康指数
int step; //行动点数
};
inline void pet::p2() //饥饿、口渴以及心情随时间的变化函数
{
int m;
srand((int)time(0));
m = rand() % 15;
if (m < 5)
{
mood = mood - 2;
}
else if(m < 12)
{
mood--;
}
else
{
mood++;
}
age++;
hunger = hunger++;
thirst = thirst++;
}
inline void pet::show() //各个数值的输出函数
{
cout << "现在的状态:" << endl;
cout << "年龄:" << age;
cout << " 饥饿度:" << hunger;
cout << " 口渴度:" << thirst;
cout << " 心情指数:" << mood;
cout << " 健康指数:" << health;
}
inline void pet::emergency( int emg ) //各种特殊状态函数
{
step = step + 5;
if(emg == 20)
{
health--;
}
if(hunger == 3)
{
mood--;
cout << "主人,我已经很饿了。" << endl;
}
if(hunger == -2)
{
mood--;
cout << "主人,我已经很饱了。" << endl;
}
if(hunger > 3)
{
mood = mood - 2;
health--;
cout << "再不给我吃东西,我就要饿死啦!" << endl;
}
if(hunger < -2)
{
mood = mood - 2;
health--;
cout << "再给我吃东西,我就要撑死啦!" << endl;
}
if(thirst == 2)
{
mood--;
cout << "这天好热啊,主人,给口喝的吧。" << endl;
}
if(thirst == -2)
{
mood--;
cout << "面对着一大杯水,你的宠物恶心地说道:“主人,我已经喝够了。”" << endl;
}
if(thirst > 2)
{
mood = mood - 2;
health--;
cout << "伟大的主人在上,我已经渴的快受不鸟啦。" << endl;
}
if(thirst < -2)
{
mood = mood - 2;
health--;
cout << "好吧,我都喝撑的都吃不下饭了。" << endl;
}
if(hunger > 6 || thirst > 5)
{
age = 100;
cout << "“啊!天呐,你降道雷劈了这个万恶的主人吧!”说完,某宠物口吐白沫,到底不起。" << endl;
}
if(hunger > 5 && thirst > 4)
{
age = 100;
cout << "如果有来世的话,打死我也不跟你混了。" << endl;
}
if(health < -6)
{
age = 100;
cout << "你骨瘦如柴的宠物最后饱含深情地看了你一眼,缓缓倒下了。" << endl;
}
}
inline void pet::touch(int w) //抚摸函数
{
step = step - 3;
switch ( w )
{
case 0:
mood = mood + 2;
break;
case 1:
mood++;
break;
case 2:
mood++;
break;
case 3:
mood--;
thirst--;
break;
case 4:
mood--;
hunger--;
break;
default:
break;
}
}
inline void pet::fun(int w) //玩耍函数
{
step = step - 8;
switch (w)
{
case 0:
mood = mood + 2;
break;
case 1:
mood++;
break;
case 2:
hunger++;
thirst++;
health++;
break;
case 3:
hunger = hunger + 2;
thirst++;
health++;
break;
case 4:
hunger++;
thirst++;
health++;
break;
default:
break;
}
}
void instruction() //饲养说明
{
cout << "饲养说明:" << endl;
cout << "每个时间段作为主人的你新增5点行动点,未用完可以累积到下一时段,初始有20点。" << endl;
cout << "当行动点相当低时,出现bad end,饲养结束。" << endl;
cout << "每天有三个时间段,你可以进行5项操作,喂食、喂水、抚摸、玩耍、不做任何事。" << endl;
cout << "行动点对应消耗:喂食5点,喂水3点,抚摸3点,玩耍8点。" << endl;
cout << "选择不做任何事,则跳到下一时间段。" << endl;
cout << "当饥饿与口渴相当低的时候,或者健康指数相当低的时候,会出现bad end,宠物死亡。" << endl;
cout << "当宠物年龄到达寿命极限时,出现happy end,宠物寿终正寝。" << endl;
cout << "PS:不同的天气对宠物的心情和健康又影响。" << endl;
cout << "在不同天气中进行抚摸玩耍会有特殊情况发生,请注意。" << endl;
cout << "-------------------------------------------------------------------------------" << endl;
}
class rabbit:virtual public pet //pet类派生的兔子类
{
public:
rabbit(int l = 31)
{
life = l;
}
int getl()
{
return life;
}
void action( int act, int w, int emg ); //主人对兔子的动作函数,虚函数成员
private:
int life; //兔子的寿命
};
inline void rabbit::action(int act, int w, int emg)
{
switch(act)
{
case 0:
instruction();
break;
case 1:
feed();
break;
case 2:
drink();
break;
case 3:
touch(w);
break;
case 4:
fun(w);
break;
case 5:
break;
case 6:
emg = 0;
doctor();
break;
default:
break;
}
}
class horse:virtual public pet //pet类派生的小马驹类
{
public:
horse(int l = 41)
{
life = l;
}
int getl()
{
return life;
}
void action( int act, int w, int emg ); //主人对小马驹的动作函数,虚函数成员
private:
int life; //小马的寿命
};
inline void horse::action(int act, int w, int emg)
{
switch (act)
{
case 0:
instruction();
break;
case 1:
feed();
break;
case 2:
drink();
break;
case 3:
touch(w);
break;
case 4:
fun(w);
break;
case 5:
break;
case 6:
emg = 0;
doctor();
break;
default:
break;
}
}
class calf:virtual public pet //pet类派生的小牛类
{
public:
calf(int l = 51)
{
life = l;
}
int getl()
{
return life;
}
void action( int act, int w, int emg ); //主人对小牛�
![avatar](https://profile-avatar.csdnimg.cn/cb6304be15644ed89c834099d7ccbbcd_csd_yang.jpg!1)
CSD_Yang
- 粉丝: 42
- 资源: 3
最新资源
- S7-200 基于PLC的糖果包装控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- 【Java设计模式】模型 - 视图 - 意图模式
- vue-openlayers 开发环境配置包(下载-解压-安装-运行)
- 基于MATLAB的simulink 基于dsp28335的直流电机的驱动模型(配套直流电机) 模型+讲解视频 该模型搭建可直接烧
- 基于智能优化算法的双层优化求解(matlab代码)2024
- 两级三相光伏并网逆变器控制Matlab Simulink仿真模型,模型问题可解答,逆变器为基于母线电压双闭环控制,采用 lcl滤
- git和gitlab使用文档
- 【Java设计模式】模型 - 视图 - 控制器模式
- matlab调制解调 OFDM OTFS 16qam qpsk ldpc turbo在高斯白噪声,频率选择性衰落信道下的误比特
- matlab语言基础.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)