完整源码
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <cstring>
using namespace std;
struct Food{
string name;
int consume;
}F[4];
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);
void Setp(int n);
bool Tutor();
bool Waiter();
bool Mowing();
bool PurchaseFood();
int Feed();
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");
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();
}
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>>