C++ “电子宠物游戏”

完整源码

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <cstring>
using namespace std; 

struct Food{
   
   
	string name;
	int consume;
}F[4];//食物库 

//以下所有bool函数遵循成功执行该项操作返回true,否则返回false的原则 
class Pet
{
   
   
	protected:
	char sex;//性别 
	char kind;//类别 
	int fd;//饱食度 
	int hd;//愉悦度 
	int wt;//体重
	int cd;//清洁度
	public:
	Pet(char s,char k);//由玩家初始化公母和宠物类型 
	void showstatus();//展示状态 
	void refresh();//休息回血 
	virtual bool play()=0;//玩耍 
	virtual void getfeed(int id)=0;//接受喂食
	virtual bool getclean(int pd)=0;//被主人清洁
	void limit();//限制各种度 
 } ;
 
 void Pet::limit(){
   
   
 	if(fd<0) fd = 0;
 	if(hd<0) hd = 0;
 	if(wt<0) wt = 0;
 	if(cd<0) cd = 0;
 }
 
 void Pet::refresh()
 {
   
   
 	hd+=30;cd-=5;fd-=60;
 	limit();
 }
 
 void Pet::showstatus()
 {
   
   
 	cout<<"当前宠物的状态为:"<<endl;
  	cout<<"体重:"<<wt<<endl<<"饱食度:"<<fd<<endl<<"愉悦度:"<<hd<<endl<<"清洁度:"<<cd<<endl; 
 }
 
 class Cat: public Pet
 {
   
   
 	public:
 	friend class Player;
 	Cat(char s,char k):Pet(s,k){
   
   ;}
 	virtual void getfeed(int id);//接受喂食 
	virtual bool getclean(int pd);//接受清洁 
	virtual bool play();//玩耍 
	void sadcat(int n);//非交互时间扣分 
	bool selfclean();//自洁 
	bool catchm();//捉老鼠
	friend bool catcal(Cat& c);//结算函数,用在一次成功操作末尾,对一次行为结算 
 };
 
 class Dog:public Pet
 {
   
   
 	public:
 	friend class Player;
 	Dog(char s,char k):Pet(s,k){
   
   ;}
 	virtual void getfeed(int id);
	virtual bool getclean(int pd);
	virtual bool play(); 
	void saddog(int n);
	friend bool dogcal(Dog& d);
 };
 
 class Player{
   
   
	public:
		Player();
		void Show(); //展示玩家状态 
		int Gett();//获取时间 
		void Sett(int n);//修改时间,当前时间+n 
		void Setp(int n);//修改体力,当前体力+n 
		bool Tutor();//家教
	    bool Waiter();//麦当劳兼职
		bool Mowing();//割草
		bool PurchaseFood();//购买宠物粮食
		int Feed();//给宠物喂食,返回食物编号,不成功返回0 
		void Rest();//休息
		bool Play();//跟宠物玩耍
		bool Clean();//清洗宠物
		void Sleep();//睡眠	
		bool judge(int a,int b,int c);//判断玩家状态
		void Archive(char flag,Dog dog,Cat cat,int day1,int pa1,int pa2,int pa3);//存档 
		void Read(char flag,Dog& dog,Cat& cat,int& day1,int& pa1,int& pa2,int& pa3);//读档 
	private:
		int power;
		int money;
		int time;
		int foodbase[4];//食物数量 
};

void Player::Archive(char flag,Dog dog,Cat cat,int day1,int pa1,int pa2,int pa3){
   
   //存档 
	ofstream Data("Database.txt");//利用构造函数创建txt文本,并且打开该文本
	fstream file("Database.txt", ios::out);
	Data <<this->power<<endl<<this->money<<endl<<this->time<<endl<<this->foodbase[1]<<endl<<this->foodbase[2]<<endl<<this->foodbase[3]<<endl;
    if(flag == 'g'){
   
   
    	Data <<dog.sex<<dog.kind<<endl<<dog.fd<<endl<<dog.hd<<endl<<dog.wt<<endl<<dog.cd;
	}
	else{
   
   
		Data <<cat.sex<<cat.kind<<endl<<cat.fd<<endl<<cat.hd<<endl<<cat.wt<<endl<<cat.cd;
	}
	Data <<endl<<day1<<endl<<pa1<<endl<<pa2<<endl<<pa3;
	Data.close();//关闭Database.txt文件
}

void Player::Read(char flag,Dog& dog,Cat& cat,int& day1,int& pa1,int& pa2,int& pa3){
   
   //读档 
	ifstream ReadData("Database.txt");
	ReadData >>this->power>>this->money>>this->time>>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值