1.项目介绍
本次项目建立了五个类,首先是建立Animal类,在其中定义了动物名称,动物类型,还有为了执行照顾动物功能定义的数组flag[5],在里面也定义了功能函数例如可以随机照顾(喂食,喂水,清洁,睡觉,游戏)的TakeCare()函数,用于存档的Save(ofstream&)函数,还有为了在派生类中可以调用内部数据的Get_name()等等。
然后再建立Chicken类,Sheep类,Cow类,三个类的基本内容相似,都有记录其动物数量的静态成员Count或County,构造函数(带参数以及不带参数),析构函数,用于生产的Product()和展示照顾进度的Show()函数。
再然后建立用于管理并实现功能的Admin类,用Start()函数来调用购买Buy()函数,菜单Menu()函数,出售Sold()函数,进入农场Enter()函数,读档Load()函数,存档Save()函数,开始新游戏NewGame()函数,展示农场信息Info()函数,在刚运行程序时,首先数显的就是是否读档,如果输入y进行读档,如果不是则调用NewGame()函数,进入新游戏,调用Menu()菜单函数其他功能则需要根据序号进行选择才能执行。
最后在main()主函数建立Admin类的对象a,调用a的Start函数完成程序。
程序类示意图如图1-1所示
图1-1类示意图
操作指南如图1-2所示
图1-2操作指南
动物产品介绍如图1-3所示
小鸡 | 小羊 | 奶牛 |
鸡蛋 | 羊奶 | 一瓶牛奶 |
金蛋 | 羊毛 | 两瓶牛奶 |
图1-3动物产品介绍
2.代码
2.1Animal类
#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <iomanip>
using namespace std;
#define COUNT 100
class Animal
{protected:
string name;
int type;
bool flag[5];
public:
Animal();
Animal(string ,bool*);
void Feed();
void Water();
void Clean();
void Sleep();
void Game();
virtual int Product()=0;
virtual void Show()=0;
void Save(ofstream&);
string Get_name();
int Get_type();
void Set_name(string);
int TakeCare();
virtual ~Animal();
};
2.2Chicken类
#include "Animal.h"
class Chicken:public Animal
{private:
static int Count;
public:
Chicken();
Chicken(string,bool *);
int Product();
void Show();
static int Get_Count();
virtual ~Chicken();
};
2.3Cow类
#include "Sheep.h"
class Cow:public Animal
{private:
static int County;
public:
Cow();
Cow(string,bool *);
int Product();
void Show();
static int Get_County();
virtual ~Cow();
};
2.4Sheep类
#include "Chicken.h"
class Sheep:public Animal
{private:
static int County;
public:
Sheep();
Sheep(string,bool *);
int Product();
void Show();
static int Get_County();
virtual ~Sheep();
};
2.5Admin类
#include "Cow.h"
class Admin
{private:
string name;
int money;
int eggs;
int golden_eggs;
int wool;
int sheep_milk;
int milk;
Animal *list[COUNT];
public:
Admin();
virtual ~Admin();
void NewGame(); //给农场起名字
void Start(); //游戏入口
void Menu(); //主界面
void Info();
void Enter();
void TakeCare(int);
void Buy();
void Sold();
void Save();
void Load();
};
本文只提供结构,具体逻辑可自行修改。