首页 > 分享 > 电子宠物游戏(附C++源码)

电子宠物游戏(附C++源码)

电子宠物游戏 1

设计一款文字式交互电子宠物游戏,该游戏要求具备如下要素:

一、玩家(Player),玩家具备如下要素:
体力:体力是玩家行动的关键要素,玩家最高拥有100点体力值,每种不同行动都会消耗体力,一旦体力归0,玩家只能选择休息恢复体力。

金钱:金钱是购买宠物道具的要素,金钱可以通过打工获取。

行动:玩家可以在一个时间点选择一个行动,每种行动均会获取一定内容并且消耗当前时间:

1)打工,打工会消耗玩家体力,收获金钱,消耗时间。
家教,消耗2个时间,获取50金钱,消耗30体力
麦当劳兼职,消耗个4时间,获取120金钱,消耗70体力
割草,消耗1个时间,获取20金钱,消耗20体力
请你设计。

2)购买宠物粮食,玩家消耗1个时间,20体力,根据具体宠物粮食消耗金钱。

3)喂食:玩家消耗1个时间,20体力。

4)休息,玩家消耗1个时间,恢复50体力。

5)和宠物玩耍:玩家消耗1个时间,50体力。

6)清洗宠物:玩家消耗1个时间,30体力。

7)每天结束时,玩家会进入睡眠状态,睡眠会恢复玩家全部体力,并进入下一天。

二、宠物(Pet),当前电子系统仅支持宠物猫(Cat)和宠物狗(Dog)两种宠物,但是系统必须拥有扩展宠物的能力,宠物具备如下要素:

性别:公/母

饱食度:宠物的饱食度为0时,会降低10点愉悦度,猫会降低1斤体重,狗会降低2斤体重。宠物饱食度为100时,猫会提高1斤体重,狗会提高2斤体重。宠物被喂食会根据投喂的食物提高一定饱食度。宠物玩耍后会根据玩耍和宠物自身情况降低饱食度。

愉悦度:愉悦度影响宠物对玩家的态度,愉悦度为0时,宠物会离开主人;愉悦度低于30时,宠物不会和主人玩耍;愉悦度低于70时,宠物狗不会让主人清洗;宠物猫的愉悦度必须90以上,才会让主人清洗。

体重:体重是衡量宠物的健康,公猫健康体重为812斤,初始时公猫为10斤,母猫健康体重为48斤,初始时母猫为6斤。公猫体重低于4斤,高于16斤将会因为健康不佳死亡,母猫体重低于2斤,高于10斤将会因为健康死亡。狗健康体重为30~60斤,初始时狗会有45斤体重。低于15斤,高于75斤,狗会因为健康死亡。宠物低于超出健康体重时,每个时间段都会降低10点愉悦度。

清洁度:清洁度为0时,宠物愉悦度每个时间段降低30,清洁度高于80时,宠物愉悦度每个时间段升高10。

宠物行为:
1)玩耍:宠物狗玩耍时,会消耗40点饱食度,提高70点愉悦度,降低10点清洁度。宠物猫玩耍时,会消耗20点饱食度,提高30点愉悦度(猫是高冷的),降低10点清洁度。

2)叫:狗是汪汪叫,猫是喵喵叫(这里只需要printf信息表示即可)

3)喂食:消耗1个时间,喂食时,宠物会先叫,然后会根据提供食物不同获取属性。

4)猫的自洁:猫有30%的可能性进行自洁,消耗1个时间,提高30清洁度;

5)猫的随机抓老鼠:在任何时间段,猫有20%的可能会去抓老鼠,此时主人是无法对猫进行交互的。消耗1个时间,如果此时猫的饱食度低于50,会吃掉老鼠,提高40饱食度,降低30清洁度,提高5愉悦度。如果此时猫的饱食度大于等于50,猫只会玩耍老鼠,降低20饱食度,降低10清洁度,提高40愉悦度。

6)被主人清洁:消耗1个时间,提高100清洁度。但是对于猫,清洁度高于80或清洁间隔低于30个时间段时,不接受被主人清洁,强行清洁会降低50愉悦度(猫主子不喜欢)

7)非主人交互时间:该时间段一般为主人买东西、打工或休息等无暇顾及宠物的时间段,该时间段内宠物将降低20饱食度,另外,狗降低20点愉悦度,和20点清洁度。猫不会降低愉悦度,但是会降低5清洁度。

8)每天结束时,宠物会强制进入休息,提高30愉悦度,降低5清洁度,降低60饱食度。

三、宠物食物
粗糙的粮食:花费30金钱,为宠物提供30体力,10愉悦度,降低15清洁度;
精品粮食:花费60金钱,为宠物提供50体力,40愉悦度,降低5清洁度;
香肠:花费20金钱,为宠物提供20体力,30愉悦度,降低20清洁度;
其他可自行设计

四、系统
游戏开始时,系统给予玩家选择宠物和宠物性别的机会

一天提供7个时间段给玩家选择行动方案,一旦玩家选择并确定某种行动方案,视作时间段开始,此时,时间会发生对应的流逝。每个时间段开始前,系统必须显示当时玩家和宠物的状态。

一旦宠物死亡,游戏结束。三十天后,宠物依然健康,游戏结束,并结算显示宠物状态。

系统提供存档、读档、关闭、重新开始等功能

效果图如下:

在这里插入图片描述在这里插入图片描述

源码如下(可直接运行)

#include<iostream> #include<vector> #include<string> #include<fstream> #include<sstream> #include<iomanip> #include<map> #include<algorithm> #include<stdio.h> #include<time.h> #define random(x) (rand()%x) using namespace std; typedef struct//存储文档数据的结构体 {string sort;int day;int strength, money, time;map<string, int> foods;string sex;int satiety;int happiness;int cleanliness;int weight; }datas; //全部类的声明 class player; class pet; class cat; class dog; void interactCat(cat& pe, player& pl, int day); //player类与cat类的交互函数 void interactdog(dog& pe, player& pl, int day); //player类与dog类的交互函数 void getData(const string& filename, datas& data); //文档的读取函数 void putData(const string& filename, datas data); //文档的存储函数 void adopt(); //开始新的游戏函数 void continueAdopt(datas da); //接着之前的存储继续游戏函数 class food { private:string name; //食物的名字int payMoney; //购买食物所花费的金钱int addStrength; //吃掉食物所补充的体力int addHappiness; //吃掉食物所增加的愉悦度int reduceCleanliness; //吃掉食物所减少的清洁度 public:food(string n, int p, int as, int ah, int rc) :name(n), payMoney(p),addStrength(as), addHappiness(ah), reduceCleanliness(rc) {};string getName() { return name; };int getPayMoney() { return payMoney; };int getAddStrength() { return addStrength; };int getAddHappiness() { return addHappiness; };int getReduceCleanliness() { return reduceCleanliness; }; }; food petfood[5] =//食物列表 {{"粗糙的粮食",30,30,10,15},{"精品粮食",60,50,40,5},{"香肠",20,20,30,20},{"辣条",10,20,5,30},{"老八秘制小汉堡",28,66,-30,66} }; class player { private:int strength, money, time; //玩家的体力、金钱和时间map<string, int> foods; //玩家所拥有的食物 public:player(int s = 100, int m = 100, int t = 7, map<string, int> food = {}) :strength(s), money(m), time(t) {};int getTime() { return time; };int getStrength() { return strength; };int getMoney() { return money; };map<string, int> getFoods() {return foods; };void show(); //显示玩家状态的函数int teach(); //家教的函数int kfc(); //麦当劳打工的函数int cutGrass(); //除草的函数int buyFood(); //购买食物的函数int feed(); //喂养宠物的函数void relax(); //休息的函数int playWithPet(); //和宠物玩耍的函数int cleanPet(); //给宠物清洁的函数void sleep(); //睡眠的函数void change(); //状态调整的函数void foodGet(const map<string, int> f);//取出食物用于存档的接口函数 }; void player::foodGet(const map<string, int> f) {foods = f; } void player::change() {if (strength >= 100) strength = 100;//当状态值超出上限或下限,调整为上限或下限值。if (strength <= 0) strength = 0; } void player::show() {cout <<"玩家的属性值:"<< "strength:" << strength << " money:" << money << " time" << time << endl<<endl; } int player::teach() //若返回1则条件满足,成功执行操作,下同 {int flag = 1;if (time >= 2) //判断时间是否足够,下同{if (strength >= 30) //判断体力是否足够,下同{time -= 2;money += 50;strength -= 30;}else{cout << "体力不足" << endl;flag = 0;}}else cout << "今天时间不够了" << endl << endl;return flag; } int player::kfc() {int flag = 1;if (time >= 4){if (strength >= 70){time -= 4;money += 120;strength -= 70;}else{cout << "体力不足" << endl;flag = 0;}}else cout << "今天时间不够了" << endl << endl;return flag; } int player::cutGrass() {int flag = 1;if (time >= 1){if (strength >= 20){time--;money += 20;strength -= 20;}else{cout << "体力不足" << endl;flag = 0;}}else cout << "今天时间不够了" << endl << endl;return flag; } int player::buyFood() {int flag = 1;if (strength >= 20){time--;strength -= 20;system("cls"); //进行清屏,下同cout << "哈喽~ " << endl << endl<< "欢迎光临小店!" << endl<<endl<< "以下是食物清单~" << endl<<endl<< "1号食物《粗糙的粮食》所需金钱:30 增加的体力:30 增加愉悦度:10 减少清洁度:15" << endl << endl<< "2号食物《精品粮食》所需金钱 60 增加的体力:50 增加愉悦度:40 减少清洁度:5" << endl << endl<< "3号食物《香肠》所需金钱 20 增加的体力:20 增加愉悦度:30 减少清洁度:20" << endl << endl<< "4号食物《辣条》所需金钱 10 增加的体力:20 增加愉悦度:5 减少清洁度:30" << endl << endl<< "5号食物《老八秘制小汉堡》所需金钱 28 增加的体力:66 增加愉悦度:-30 减少清洁度:6<<6" << endl << endl<< "**请输入所要购买食物的序号**" << endl << endl;int sec;cin >> sec; //选择食物money -= petfood[sec - 1].getPayMoney(); //根据购买的食物减少金钱foods[petfood[sec - 1].getName()]++; //把购买的食物存入}else{cout << "体力不足" << endl;flag = 0;}return flag; } int player::feed() {time--;strength -= 20;int flag=0;system("cls");cout << "有如下食物" << endl << endl;for (map<string, int>::iterator i = foods.begin(); i != foods.end(); i++){if (i->second >= 1){cout << i->first << ":" << i->second << endl << endl;flag = 1;}}if (flag == 0){cout << "你没有食物!" << endl << endl;cout << "输入任意键按回车返回:";cin >> flag;return -1;}else{cout << "选择喂食食物:(《-请看清你有哪些食物,再进行喂食!)" << endl << endl<< "1号食物《粗糙的粮食》增加的体力:30 增加愉悦度:10 减少清洁度:15" << endl << endl<< "2号食物《精品粮食》增加的体力:50 增加愉悦度:40 减少清洁度:5" << endl << endl<< "3号食物《香肠》增加的体力:20 增加愉悦度:30 减少清洁度:20" << endl << endl<< "4号食物《辣条》增加的体力:20 增加愉悦度:5 减少清洁度:30" << endl << endl<< "5号食物《老八秘制小汉堡》增加的体力:66 增加愉悦度:-30 减少清洁度:66" << endl << endl;int sec;cin >> sec;foods[petfood[sec - 1].getName()]--;return sec - 1; //返回喂食的食物序号给宠物} } void player::relax() {time--;strength += 50;if (strength > 100) strength = 100; } int player::playWithPet() {int flag=1;if (strength >= 20){time--;strength += 50;}else{cout << "体力不足" << endl;flag = 0;}return flag; } int player::cleanPet() {int flag = 1;if (strength >= 20){time--;strength -= 30;}else{cout << "体力不足" << endl;flag = 0;}return flag; } void player::sleep() {time = 7;strength = 100; } class pet //该类为抽象类,用作cat类和dog类的基类 { protected:string sex; //宠物的性别int satiety; //宠物的饥饿度int happiness; //宠物的愉悦度int cleanliness; //宠物的清洁度int weight; //宠物的体重 public:pet(string s = "无", int sa = 0, int ha = 0, int cl = 0, int we = 0) :sex(s), satiety(sa), happiness(ha), cleanliness(cl), weight(we) {};string getSex() { return sex; };int getSatiety() { return satiety; };int getHappiness() { return happiness; };int getCleanliness() { return cleanliness; };int getWeight() { return weight; };virtual void change()=0; //宠物根据自身属性,一个时间段的属性变化函数(为纯虚函数,下同)virtual void show()=0; //宠物的显示属性函数virtual void play()=0; //宠物的玩耍函数virtual void shout() = 0; //宠物的嚎叫函数void eat(int sec); //宠物的进食函数virtual void cleanByBoss() = 0; //宠物被主人清洁函数virtual void unInterract() = 0; //宠物非交互事件段状态改变函数virtual int death() = 0; //宠物的死亡函数void balance(); //宠物根据上限与下限的调整函数void dayEnd(); //宠物进入新的一天的状态改变函数 }; void pet::balance() {if (happiness >= 100) happiness = 100;if (happiness <= 0) happiness = 0;if (satiety >= 100) satiety = 100;if (satiety <= 0) satiety = 0;if (cleanliness >= 100) cleanliness = 100;if (cleanliness <= 0) cleanliness = 0; } void pet::eat(int sec) {if(sec!=-1) //sec为-1是主人条件不满足的情况,不能进行喂食{satiety += petfood[sec].getAddStrength();cleanliness -= petfood[sec].getReduceCleanliness();happiness += petfood[sec].getAddHappiness();} } void pet::dayEnd() {happiness += 30;cleanliness -= 5;satiety -= 60; } class cat :public pet { public:cat(string s = "无", int sa = 0, int ha = 0, int cl = 0, int we = 0) :pet(s, sa, ha, cl, we) {};virtual void show(); //对纯虚函数进行重载,下同virtual void play();virtual void shout();virtual void change();virtual void cleanByBoss();virtual void unInterract();virtual int death();void cleanMyself();int catchMouse(); }; /*string sex;int satiety;int happiness;int cleanliness;int weight;*/ void cat::show() {cout << "你可爱的小" << getSex() << "猫" << ":" << "属性值如下:"<< " 饱食度:" << getSatiety() << " 愉悦度:" << getHappiness()<< " 清洁度:" << getCleanliness() << " 体重:" << getWeight() << endl << endl; } void cat::play() {if (happiness >= 30){satiety -= 20;happiness += 30;cleanliness -= 10;}else{cout << "愉悦度不够,猫主子不想洗" << endl << endl;} } void cat::shout() {cout << "喵喵~~ 喵~ 喵~ 喵~ " << endl << endl; } void cat::cleanMyself() {srand((int)time(0)); //对猫有概率自洁的判断if(random(10)<=2)cleanliness += 30; } void cat::cleanByBoss() {if (happiness >= 90){if (cleanliness >= 80) happiness -= 50;cleanliness = 100;}else{cout << "愉悦度不够,猫懒得理你" << endl << endl;} } int cat::catchMouse() {srand((int)time(0));if (random(10) <= 1) //对猫有概率捉鼠的判断{if (satiety < 50){satiety += 40;cleanliness -= 30;happiness += 5;}else{satiety -= 20;cleanliness -= 10;happiness += 40;}return 0;}return 1; } void cat::unInterract() {satiety -= 20;cleanliness -= 5; } void die() {cout << "对于死亡这个话题我们一直是缺席的,从小我们只学到了要热爱生命、珍惜生命,却从来没有人教过我们如何面对死亡......" << endl << endl<< "而我们每一个养宠人都会更加刻意逃避这一天的到来......" << endl << endl<< "”到饭点,倒完粮才意识到它已经不在了……“" << endl << endl<< "”需要等 5 分钟才敢进家门。我得告诉自己,不会再有人迎接你了……“" << endl << endl<< "”床终于变得宽敞了,似乎也变凉了......" << endl << endl<< "“由于你的喂食不当你的宠物饿死了..." << endl; } int cat::death() {int flag = 1; //死亡返回flag=0if (happiness == 0) //愉悦度为0,宠物会永远离开你{cout << "由于你的疏于照顾,小猫一点也不高兴,永远的离开了你" << endl << endl;flag = 0;}else if (sex == "公"){if (weight < 4 || weight>16) //公猫死亡时的条件{die();flag = 0;}}else{if (weight < 2 || weight>10) //母猫死亡时的条件{die();flag = 0;}}return flag; } void cat::change() {int flag = 1;if (satiety == 0){happiness -= 10;weight -= 1;}else if (satiety == 100) weight += 1;if (sex == "公"){if (weight < 8 || weight>12){happiness -= 10;}}else{if (weight < 4 || weight>8){happiness -= 10;}}if (cleanliness == 0){happiness -= 30;}else if(cleanliness>80){happiness += 10;}if (happiness >= 100) happiness = 100;if (happiness <= 0) happiness = 0;if (satiety >= 100) satiety = 100;if (satiety <= 0) satiety = 0;if (cleanliness >= 100) cleanliness = 100;if (cleanliness <= 0) cleanliness = 0; } class dog :public pet { public:dog(string s = "无", int sa = 0, int ha = 0, int cl = 0, int we = 0) :pet(s, sa, ha, cl, we) {};virtual void show();virtual void play();virtual void shout();virtual void change();virtual void cleanByBoss();virtual void unInterract();virtual int death(); }; void dog::show() {cout << "你可爱的小" << getSex() << "狗" << ":" << "属性值如下:"<< " 饱食度:" << getSatiety() << " 愉悦度:" << getHappiness()<< " 清洁度:" << getCleanliness() << " 体重:" << getWeight() << endl << endl; } void dog::play() {if (happiness >= 30){satiety -= 40;happiness += 70;cleanliness -= 10;}else{cout << "愉悦度达不到要求,狗子懒得理你" << endl << endl;} } void dog::shout() {cout << "汪汪汪~~ 汪汪~ 汪汪~ " << endl << endl; } void dog::cleanByBoss() {if (happiness >= 70){cleanliness = 100;}else{cout << "愉悦度不够,狗子懒得洗" << endl << endl;} } void dog::unInterract() {satiety -= 20;happiness -= 20;cleanliness -= 20; } void dog::change() {if (satiety == 0){happiness -= 10;weight -= 2;}else if (satiety == 100) weight += 2;if (cleanliness == 0){happiness -= 30;}else if (cleanliness > 80){happiness += 10;}if (weight < 30 || weight>60){happiness -= 10;}if (happiness >= 100) happiness = 100;if (happiness <= 0) happiness = 0;if (satiety >= 100) satiety = 100;if (satiety <= 0) satiety = 0;if (cleanliness >= 100) cleanliness = 100;if (cleanliness <= 0) cleanliness = 0; } int dog::death() {int flag = 1;if (happiness == 0){flag = 0;cout << "由于你的疏于照顾,狗子一点也不高兴,永远的离开了你" << endl << endl;}else{if (weight < 15 || weight>75){die();flag = 0;}}return flag; } void info(int sec) //界面显示函数 {if (!sec) cout << "猫猫去捉鼠了,不能和它互动了哦!" << endl << endl;cout << "选择你的行动"<< endl << endl<< "1.家教,消耗2个时间,获取50金钱,消耗30体力" << endl << endl<< "2.麦当劳兼职,消耗个4时间,获取120金钱,消耗70体力" << endl << endl<< "3.割草,消耗1个时间,获取20金钱,消耗20体力" << endl << endl<< "4.购买宠物粮食,玩家消耗1个时间,20体力,根据具体宠物粮食消耗金钱。" << endl << endl<< "5.休息,玩家消耗1个时间,恢复50体力。" << endl << endl;if (sec){cout << "6.喂食:玩家消耗1个时间,20体力" << endl << endl<< "7.和宠物玩耍:玩家消耗1个时间,50体力。(需愉悦度>=30)" << endl << endl<< "8.清洗宠物:玩家消耗1个时间,30体力。(猫猫愉悦度需>=90才可以清洗,狗需>=70)" << endl << endl;}cout << "9.宠物系统说明。" << endl << endl;cout << "10.退出游戏并存档。" << endl << endl;cout << "请选择你的行动序号"<<endl << endl; } void infomation() //宠物收养指导书 {system("cls");cout << "饱食度:宠物的饱食度为0时,会降低10点愉悦度,猫会降低1斤体重,狗会降低2斤体重。" << endl<<endl;cout << "宠物饱食度为100时,猫会提高1斤体重,狗会提高2斤体重。宠物被喂食会根据投喂的食物提高" << endl << endl;cout << "一定饱食度。宠物玩耍后会根据玩耍和宠物自身情况降低饱食度。" << endl << endl;cout << "愉悦度:愉悦度影响宠物对玩家的态度,愉悦度为0时,宠物会离开主人;愉悦度低于30时," << endl << endl;cout << "宠物不会和主人玩耍;愉悦度低于70时,宠物狗不会让主人清洗;宠物猫的愉悦度必须90以上,才会让主人清洗。" << endl << endl;cout << "体重:体重是衡量宠物的健康,公猫健康体重为8~12斤,初始时公猫为10斤,母猫健康体重为4~8斤,初始时母猫" << endl << endl;cout << "为6斤。公猫体重低于4斤,高于16斤将会因为健康不佳死亡,母猫体重低于2斤,高于10斤将会因为健康死亡。狗健康" << endl << endl;cout << "体重为30~60斤,初始时狗会有45斤体重。低于15斤,高于75斤,狗会因为健康死亡。宠物低于超出健康体重时,每个时" << endl << endl;cout << "间段都会降低10点愉悦度。" << endl << endl;cout << "清洁度:清洁度为0时,宠物愉悦度每个时间段降低30,清洁度高于80时,宠物愉悦度每个时间段升高10。" << endl << endl;cout << "宠物自动行为:" << endl << endl;cout << "猫的自洁:猫有30% 的可能性进行自洁,消耗1个时间,提高30清洁度;" << endl << endl;cout << "猫的随机抓老鼠:在任何时间段,猫有20% 的可能会去抓老鼠,此时主人是" << endl << endl;cout << "无法对猫进行交互的。消耗1个时间,如果此时猫的饱食度低于50,会吃掉老鼠" << endl << endl;cout << ",提高40饱食度,降低30清洁度,提高5愉悦度。如果此时猫的饱食度大于等于50" << endl << endl;cout << ",猫只会玩耍老鼠,降低20饱食度,降低10清洁度,提高40愉悦度。" << endl << endl;cout << "非主人交互时间:该时间段一般为主人买东西、打工或休息等无暇顾及宠物的时间段," << endl << endl;cout << "该时间段内宠物将降低20饱食度,另外,狗降低20点愉悦度,和20点清洁度。" << endl << endl;cout << "猫不会降低愉悦度,但是会降低5清洁度。" << endl << endl;cout << "每天结束时,宠物会强制进入休息,提高30愉悦度,降低5清洁度,降低60饱食度。" << endl << endl; } void interactCat(cat& pe, player& pl,int day) {int flag = pe.catchMouse(); //判断猫是否已去捉鼠info(flag);int sec;cin >> sec;if (flag){switch (sec){case 1:if (pl.teach()) //若满足家教的体力和时间条件,下同{pe.change(); //每过一个时间段宠物状态会变化,家教耗费两个时间段,change两次,下同if (pe.catchMouse()) pe.cleanMyself(); //若猫已去捉鼠则不能自洁,下同pe.unInterract();pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();}break;case 2:if (pl.kfc()){pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();}break;case 3:if (pl.cutGrass()){pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();}break;case 4:if (pl.cutGrass()){pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();pl.buyFood();}break;case 6:pe.shout();pe.change();pe.eat(pl.feed());break;case 5:pl.relax();pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();break;case 7:pe.change();if (pl.playWithPet()){pe.change();pe.play();}break;case 8:if (pl.cleanPet()){pe.change();pe.cleanByBoss();}break;case 9:infomation();break;case 10:datas da; //存档的数据读出da.cleanliness = pe.getCleanliness();da.day = day;da.foods = pl.getFoods();da.happiness = pe.getHappiness();da.money = pl.getMoney();da.satiety = pe.getSatiety();da.sex = pe.getSex();da.sort = "cat";da.strength = pl.getStrength();da.time = pl.getTime();da.weight = pe.getWeight();putData("data", da); //存档读入文件exit(0); //离开游戏break;}}else{switch (sec){case 1:if (pl.teach()){pe.change();pe.unInterract();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();pe.change();}break;case 2:if (pl.kfc()){pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();pe.change();if (pe.catchMouse()) pe.cleanMyself();pe.unInterract();pe.change();}break;case 3:if (pl.cutGrass()){pe.change();pe.unInterract();}break;case 4:if (pl.buyFood()){pe.change();pe.unInterract();}break;case 5:pl.relax();pe.change();pe.unInterract();break;case 9:infomation();break;case 10:datas da;da.cleanliness = pe.getCleanliness();da.day = day;da.foods = pl.getFoods();da.happiness = pe.getHappiness();da.money = pl.getMoney();da.satiety = pe.getSatiety();da.sex = pe.getSex();da.sort = "cat";da.strength = pl.getStrength();da.time = pl.getTime();da.weight = pe.getWeight();putData("data", da);exit(0);break;}} } void interactdog(dog& pe, player& pl,int day) {info(1);int sec;cin >> sec;switch (sec){case 1:if (pl.teach()){pe.change();pe.unInterract();pe.change();pe.unInterract();}break;case 2:if (pl.kfc()){pe.change();pe.unInterract();pe.change();pe.unInterract();pe.change();pe.unInterract();pe.change();pe.unInterract();}break;case 3:if (pl.cutGrass()){pe.change();pe.unInterract();}break;case 4:if (pl.buyFood()){pe.change();pe.unInterract();}break;case 6:pe.shout();pe.change();pe.eat(pl.feed());break;case 5:pl.relax();pe.change();pe.unInterract();break;case 7:if (pl.playWithPet()){pe.change();pe.play();}break;case 8:if (pl.cleanPet()){pe.change();pe.cleanByBoss();}break;case 9:infomation();break;case 10:datas da;da.cleanliness = pe.getCleanliness();da.day = day;da.foods = pl.getFoods();da.happiness = pe.getHappiness();da.money = pl.getMoney();da.satiety = pe.getSatiety();da.sex = pe.getSex();da.sort = "cat";da.strength = pl.getStrength();da.time = pl.getTime();da.weight = pe.getWeight();putData("data", da);exit(0);break;} } void adopt() {cout << "请选择你想养的宠物 (1)猫 or (2)狗" << endl;int sec;cin >> sec;player me;string sex;int secp;int a=80, b=80, c=80, d; //给宠物初始的属性值if (sec == 1){cout << "请好好对待这只小猫哦~" << endl << endl;cout << "你是想养只公猫猫还是只母猫猫" << endl << endl;cout << "(1) 公猫猫 (2) 母猫猫 " << endl << endl;int sec2;cin >> sec2;if (sec2 == 1) //根据性别初始属性值{sex = "公";d = 10;}else{sex = "母";d = 6;}}else{cout << "你是想养只公狗子还是只母狗子" << endl << endl;cout << "(1) 公狗子 (2) 母狗子 " << endl << endl;int sec2;cin >> sec2;if (sec2 == 1){sex = "公";d = 45;}else{sex = "母";d = 45;}cout << "请好好对待这只小狗哦~" << endl << endl;secp = 1;}cat pecat(sex, a, b, c, d);dog pedog(sex, a, b, c, d);int day = 0;string temp;while (day != 30) //当玩完30天游戏圆满结束{if (sec==1) //猫狗的判断{int life = 1;system("cls"); //清屏while (me.getTime()>0) //当今天时间为0时进入下一天{system("cls");cout << "今天是与萌宠相伴的第" << day + 1 << "天" << endl << endl;pecat.balance(); //活动开始前把溢出的属性值调为上下限me.change();me.show(); //每一次活动前,显示当前任务和宠物的属性pecat.show();interactCat(pecat, me,day);if (!pecat.death()) //死亡时退出循环游戏结束{life = 0;break;}cout << "任意输入按回车进入下一时间段" << endl << endl;cin >> temp;}if (!life) break;day++;me.sleep(); //每过一天会睡眠一次pecat.dayEnd(); //宠物每过一天的状态改变}else{int life = 1;system("cls");cout << "第" << day + 1 << "天开始了" << endl << endl;while (me.getTime() > 0){system("cls");cout << "今天是与萌宠相伴的第" << day + 1 << "天" << endl << endl;pedog.balance();me.change();me.show();pedog.show();interactdog(pedog, me,day);if (!pedog.death()){life = 0;break;}cout << "任意输入按回车进入下一时间段" << endl << endl;cin >> temp;}if (!life) break;day++;me.sleep();pedog.dayEnd();}}if (day == 30) cout << "完结撒花,宠物寿终正寝!" << endl << endl; } void continueAdopt(datas da) {player me(da.strength, da.money, da.time);me.foodGet(da.foods);if (da.sort == "cat"){cat pecat(da.sex, da.satiety, da.happiness, da.cleanliness, da.weight);int day = da.day;string temp;while (day != 30){if (typeid(cat) == typeid(pecat)){int life = 1;system("cls");while (me.getTime() > 0){system("cls");cout << "今天是与萌宠相伴的第" << day + 1 << "天" << endl << endl;pecat.balance();me.change();me.show();pecat.show();interactCat(pecat, me,day);if (!pecat.death()){life = 0;break;}cout << "任意输入按回车进入下一时间段" << endl << endl;cin >> temp;}if (!life) break;day++;me.sleep();pecat.dayEnd();}}if (day == 30) cout << "完结撒花,宠物寿终正寝!" << endl << endl;}if (da.sort == "dog"){dog pedog(da.sex, da.satiety, da.happiness, da.cleanliness, da.weight);int day = da.day;string temp;while (day != 30){if (typeid(dog) == typeid(pedog)){int life = 1;system("cls");while (me.getTime() > 0){system("cls");cout << "今天是与萌宠相伴的第" << day + 1 << "天" << endl << endl;pedog.balance();me.change();me.show();pedog.show();interactdog(pedog, me,day);if (!pedog.death()){life = 0;break;}cout << "任意输入按回车进入下一时间段" << endl << endl;cin >> temp;}if (!life) break;day++;me.sleep();pedog.dayEnd();}}if (day == 30) cout << "完结撒花,宠物寿终正寝!" << endl << endl;} } void getData(const string& filename, datas& data) {ifstream fin(filename);if (fin.good()){fin>>data.day>>data.sort>>data.strength>>data.money>>data.time>>data.sex>>data.satiety>>data.happiness>>data.cleanliness>>data.weight;string str; int num;while (fin >> str >> num) //食物的读入{data.foods[str] = num;}}fin.close(); } void putData(const string& filename,datas data) {ofstream fout(filename);if (fout.good()){fout<<data.day<<""<<data.sort<<""<< data.strength <<""<< data.money <<""<< data.time <<""<<data.sex <<""<< data.satiety <<""<< data.happiness <<""<< data.cleanliness <<""<< data.weight;string str; int num;for(map<string,int>::iterator i=data.foods.begin();i!=data.foods.end();i++) //食物的存入{fout << i->first;fout << "" << i->second;}}fout.close(); } int main() {cout <<"欢迎来到电子宠物养成系统~" << endl<<endl;cout << "选择(1)开始游戏或(2)读取存档"<<endl<<endl;cout << "请输入选择:" << endl;int sec;cin >> sec;if (sec == 1){adopt(); //开始新的游戏}else{datas da;getData("data", da); //取出文档数据continueAdopt(da); //读取存档继续游戏} } 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195

相关知识

电子宠物游戏java
软件实例分享,宠物店兽医电子处方开单系统软件教程
宠物领养信息平台小程序源码+项目说明.zip资源
[附源码]JAVA计算机毕业设计宠物救援平台(源码+开题)
什么是电子宠物?电子宠物到底是游戏还是人工智能
[附源码]计算机毕业设计JAVAssm宠物交易网站论文
(附源码)计算机毕业设计SSM基于Javaweb的宠物救助网站
软件应用实例,宠物医院处方笺模板实例,佳易王兽医电子处方开单管理系统软件操作教程
【附源码】计算机毕业设计JAVA宠物论坛设计网站测试视频2021
(附源码)计算机毕业设计SSM基于框架的流浪动物保护平台

网址: 电子宠物游戏(附C++源码) https://m.mcbbbk.com/newsview114173.html

所属分类:萌宠日常
上一篇: 宝宝养宠物游戏下载
下一篇: 手机宠物游戏有哪些好玩?几款好玩