C程序设计电子宠物.docx
- 文档编号:8829410
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:21
- 大小:40.49KB
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 电子 宠物