C程序设计电子宠物.docx
《C程序设计电子宠物.docx》由会员分享,可在线阅读,更多相关《C程序设计电子宠物.docx(21页珍藏版)》请在冰豆网上搜索。
C程序设计电子宠物
#include
#include
usingnamespacestd;classpet
{
//建立一个宠物类
public:
pet(inta=0,inth=0,intt=0,intm=0,inthe=0,intst=15){age=a;hunger=h;thirst=t;mood=m;health=he;step=st;}intgeta(){returnage;}
//构造函数
//提取各个私有成员
intgeth(){returnhunger;}intgett(){returnthirst;}intgetm(){returnmood;}intgethe(){returnhealth;}intgetst(){returnstep;}voidp2();
voidshow();
voidemergency(intw);
voidfeed()
{
hunger--;step=step-5;
}
voiddrink(){thirst--;step=step-3;}voiddoctor(){step=step-10;}voidtouch(intw);
voidfun(intw);virtualintgetl(){returnage;}
//饥饿、口渴以及心情随时间的变化函数
//各个数值的输出函数
//各种特殊状态函数
//喂食函数
//喂水函数
//看医生函数
//抚摸函数
//玩耍函数//提取寿命值
virtualvoidaction(intact,intw,intemg){}数
//主人采取各种动作函数,定义为纯虚函
//年龄
//饥饿值
//口渴值
//心情指数
//健康指数
//行动点数
//饥饿、口渴以及心情随时间的变化函数
private:
intage;inthunger;intthirst;intmood;inthealth;intstep;
};
inlinevoidpet:
:
p2()
{
intm;m=rand()%15;if(m<5)mood=mood-2;
elseif(m<12)
mood--;
else
mood++;
age++;hunger=hunger++;thirst=thirst++;
//各个数值的输出函数
}
inlinevoidpet:
:
show()
{
cout<<"现在的状态:
"<"<cout<<"饥饿度:
"<"<"<"<}
inlinevoidpet:
:
emergency(intemg)
{
step=step+5;
if(emg==20)
health--;
if(hunger==3)
{
mood--;
cout<<"主人,我已经很饿了。
}
if(hunger==-2)
{
mood--;
cout<<"主人,我已经很饱了。
//各种特殊状态函数
"<"<
}if(hunger>3)
{
mood=mood-2;
health--;
cout<<"再不给我吃东西,我就要饿死啦!
"<if(hunger<-2)
{
mood=mood-2;
health--;
cout<<"再给我吃东西,我就要撑死啦!
"<if(thirst==2)
mood--;
cout<<"这天好热啊,主人,给口喝的吧。
"<}
if(thirst==-2)
{
mood--;
cout<<"面对着一大杯水,你的宠物恶心地说道:
“主人,我已经喝够了。
”"<}
if(thirst>2)
{
mood=mood-2;
health--;
cout<<"伟大的主人在上,我已经渴的快受不鸟啦。
"<}
if(thirst<-2)
{
mood=mood-2;
health--;
cout<<"好吧,我都喝撑的都吃不下饭了。
"<}if(hunger>6||thirst>5)
{
age=100;
cout<<"啊“!
天呐,你降道雷劈了这个万恶的主人吧!
”说完,某宠物口吐白沫,到底不起。
"<}if(hunger>5&&thirst>4)
{
age=100;
cout<<"如果有来世的话,打死我也不跟你混了。
"<}
if(health<-6)
{
age=100;
cout<<"你骨瘦如柴的宠物最后饱含深情地看了你一眼,缓缓倒下了。
"<}
}
inlinevoidpet:
:
touch(intw)//抚摸函数
{
step=step-3;
switch(w)
{
case0:
mood=mood+2;break;
case1:
mood++;break;
case2:
mood++;break;
case3:
mood--;thirst--;break;
case4:
mood--;hunger--;break;
}
}
inlinevoidpet:
:
fun(intw)
{
step=step-8;
switch(w)
{
case0:
mood=mood+2;break;
case2:
hunger++;thirst++;health++;break;
case3:
hunger=hunger+2;thirst++;health++;break;
case4:
hunger++;thirst++;health++;break;
}
}
//玩耍函数
//饲养说明
voidinstruction()
cout<<"饲养说明:
"<cout<<"每个时间段作为主人的你新增5点行动点,未用完可以累积到下一时段,初始有20点。
"<cout<<"当行动点相当低时,出现badend,饲养结束。
"<cout<<"每天有三个时间段,你可以进行5项操作,喂食、喂水、抚摸、玩耍、不做任
何事。
"<cout<<"行动点对应消耗:
喂食5点,喂水3点,抚摸3点,玩耍8点。
"<cout<<"选择不做任何事,则跳到下一时间段。
"<cout<<"当饥饿与口渴相当低的时候,或者健康指数相当低的时候,会出现badend,宠
物死亡。
"<cout<<"当宠物年龄到达寿命极限时,出现happyend,宠物寿终正寝。
"<cout<<"PS:
不同的天气对宠物的心情和健康又影响。
"<cout<<"在不同天气中进行抚摸玩耍会有特殊情况发生,请注意。
"<cout<<""<}
classrabbit:
virtualpublicpet//pet类派生的兔子类
{
public:
rabbit(intl=31)
{
life=l;
}
intgetl()
{
returnlife;
}
voidaction(intact,intw,intemg);//主人对小牛的动作函数,虚函数成员
private:
intlife;//兔子的寿命
};
inlinevoidrabbit:
:
action(intact,intw,intemg)
{
switch(act)
{
case0:
instruction();break;
case1:
feed();
break;
case2:
drink();
break;
case3:
touch(w);
break;
case4:
fun(w);
break;
case5:
break;
case6:
emg=0;
doctor();
break;
}
}
classhorse:
virtualpublicpet//pet类派生的小马驹类
{
public:
horse(intl=41)
{
life=l;
}
intgetl()
{
returnlife;
}
voidaction(intact,intw,intemg);//主人对小牛的动作函数,虚函数成员
private:
intlife;//小马的寿命
};
inlinevoidhorse:
:
action(intact,intw,intemg)
{
switch(act)
{
case0:
instruction();break;
case1:
feed();break;
case2:
drink();break;
case3:
touch(w);break;
case4:
fun(w);break;
case5:
break;
case6:
emg=0;
doctor();
break;
}
}
classcalf:
virtualpublicpet//pet类派生的小牛类
{
public:
calf(intl=51){life=l;}
intgetl()
{
returnlife;
虚函数成员
}
voidaction(intact,intw,intemg);//主人对小牛的动作函数,
private:
intlife;//小牛的寿命
};
inlinevoidcalf:
:
action(intact,intw,intemg)
{
switch(act)
{
case0:
instruction();break;
case1:
feed();break;
case2:
drink();break;
case3:
touch(w);break;
case4:
fun(w);break;
case5:
break;
case6:
emg=0;
doctor();
break;
}
}
voidpetshop(intselect)//宠物外形
{
switch(select)
{
cout<<"
"<cout<<"
"<cout<<"
"<cout<<"
"<cout<<"
"<cout<<"
"<cout<<"
"<cout<<"
"<cout<<"
"<cout<<"
"<case1:
cout<<"恭喜,
cout<<"
你已经领养了一只兔子。
"<"<cout<<"
**
JJ
"<cout<<"
(((
"<cout<<"
\))_..-
"<cout<<"
__)/,*,*
*
"<cout<<"
*
J
**
*
J・・
"<cout<<"
*
J
0*'
*\
"<cout<<"
(Y
(
J・
"<cout<<"
*
___,\
JJ
"<cout<<"
((_,
**
J
**
—J—J
"<cout<<"
(((_,-(((
*
J
"<cout<<"
"<break;
case2:
cout<<"恭喜,
你已经领养了一匹小马驹。
"<cout<<"
"<~~%%%%%%%%_,_,
~~%%%%%%%%%-*/./
~~%%%%%%%-*/*.
~~%%%%%%%%*.,--;
~~%%%%%%%%*:
\O\
~~%%%%%%%%*:
*.
~~%%%%%%%%**.-,*
~~%%%%%%%%*.**-.-*.
~~%%%%%%%%%*:
*-.(,;~~%%%%%%%%*:
*.-\-.*
"<cout<<"
break;
"<---"<---"</~~~~//~~~~/
case3:
你已经领养了一头小牛犊。
cout<<"恭喜,
cout<<"
cout<<"
"<"<cout<<"
////
"<cout<<"
||||
"<cout<<"
/~
~/
"<cout<<"
/~~~~~-_|/~~/
/~~~/|_-~~~~~\
cout<<"
/====
/||O||O||/=
===/"<cout<<"
~-__-
~||_---+--+_||~-__-
~"<"<cout<<"
|/~
~/|
"<cout<<"
/
/
"<cout<<"
(
OO)
"<cout<<"
/
./
"<cout<<"
~--~|
"<cout<<"
||/__/||
"<cout<<"
||/~~/||
"<cout<<"
|/~~~~~~~~~/|
"<cout<<"
||||
"<cout<<"
||||
}
}
cout<<"
break;
---"<voidperiod(intt)//时间函数
{
t=t%3;
switch(t)
case0:
cout<<"上午。
"<cout<<"下午。
"<cout<<"晚上。
"<}
};
intweather(){
intw;
w=rand()%5;
switch(w)
{
case0:
cout<<"天气
:
晴。
"<case1:
cout<<"天气
:
阴。
"<case2:
cout<<"天气
:
小雨。
"<case3:
cout<<"天气
:
暴雨。
"<case4:
cout<<"天气}
returnw;
:
大风。
"<//天气函数
}
voidraise(intselect)
{
intlife,date,w,act;
intt=0;
intemg,Nstep,Nage;pet*petx;switch(select)
{
case1:
petx=newrabbit;break;
//动态建立对象,实现领养
case2:
petx=newhorse;break;
case3:
petx=newcalf;break;
}
life=petx->getl();
for(date=1;date//提取寿命
//开始饲养,如无意外,则到寿命时循环结束
w=weather();
t=t%3;
petx->p2();
while(t<3)
{
emg=rand()%20;
//调用天气函数
//t为控制时间整形
//调用饥饿、口渴以及心情随时间的变化函数
//控制时间的循环
//emg为随机数,控制是否生病
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~"<cout<<"现在是";period(t);cout<<"
//调用时间函数
"<cout<
生病"<Nstep=petx->getst();cout<<"你的行动点数还有:
cout<<"你的宠物";petx->show();if((emg-19)==1)
cout<<"健康状况:
//提取行动点数
"<//调用数值输出函数
else
良好"<"<cout<<"健康状况:
cout<<"请选择你想做的事:
cout<<"0、参看说明1、喂食2、喂水3、抚摸4、逗它玩耍5、不做任
何事";
if((emg-19)==1)
cout<<"6、看医生。
"<cout<";cin>>act;
"<cout<<"很遗憾,由于饲养不善,你的宠物已经死亡。
"<cout<<""<break;
}//非正常死亡,badend
if(Nstep<0)
{
cout<<""<cout<<"真不幸,宠物的饲养已经让你感到心力交瘁。
"<"<"<cout<<""<break;
}//非正常结束饲养,badend
t++;
cout<<""<}if(Nage>life||Nstep<0)
break;//非正常死亡,跳出循环system("cls");//调用系统清屏函数
}
if(date==life)
{
cout<<""<cout<<"恭喜,你的宠物已经寿终正寝。
"<}
}
intadopt()//领养函数,实现宠物的领养
{
intsel;
intch1;
charname[10];
cout<<"现在宠物商店还有可以领养的宠物如下:
"<cout<<"1、小兔2、小马驹3、小牛"<cout<<"请选择:
";
cin>>sel;petshop(sel);cout<<"再给你领养的小家伙起个名字呗:
";
cin>>name;
cout<<"你已经成功领养了一只叫做"<"<cout<<""<cout<<"是否参看饲养说明:
1、是2、否"<cout<<"请选择:
";
cin>>ch1;
cout<<"if(ch1==1)instruction();
returnsel;
}
intmain()
{
intchoose=0;while(!
choose)
{
cout<<"
//判断是否调用饲养说明函数
//参看饲养说明
//返回所选择的种类
//实现整个函数的循环
"<"<
intch,ch2;
intsel;
sel=adopt();//调用领养函数,返回所选种类
cout<<"是否开始饲养现有宠物:
1、是2、否"<";
cin>>ch;//判断是否开始饲养
cout<<"
1********************************************************************
if(ch==1)
raise(sel);//调用饲养函数
//判断是否继续领养宠物
cout<<"是否需要继续领养宠物:
1、是2、退出程序"<"cin>>ch;
choose=ch-1;