老师发布了一个程序的些许部分叫我们补足。
类似于一个游戏的封面:
下面是主函数:
#include "comgame.h"
int main()
{
comgame game;
game.print();
return 0;
}
然后是三个头文件:
#ifndef _COMGAME_H_
#define _COMGAME_H_
#include "hero.h"
#include "Skin.h"
#include <stdio.h>
#include <iostream>
using namespace std;class comgame
{
public:
void showhero()
{
cout<<"1、喜羊羊"<<endl;
cout<<"2、葫芦娃"<<endl;
cout<<"3、李白"<<endl;
cout<<"请选择人物:"<<endl;
}
void selecthero()
{
char a[10];
fgets(a,10,stdin);
switch(a[0])
{
case '1':
hero = new XYY;
break;
case '2':
hero = new HLW;
break;
case '3':
hero = new LB;
break;
}
}void showskin()
{
hero->showskin();
}void selecskin()
{
hero->selecskin();
}void start()
{
hero->start();
}void print()
{
printf("游戏启动!\n");
showhero();
selecthero();
showskin();
selecskin();
start();
}
private:
Hero *hero;};
#endif
#ifndef _SKIN_H_
#define _SKIN_H_
#include "comgame.h"
#include "hero.h"
//皮肤基类
class Skin
{
public:
Skin(const char *sh,const char *sc)
{
this->sh = sh;
this->sc = sc;
}
public:
const char *sh;
const char *sc;
};class XYYX:public Skin
{
public:
XYYX():Skin("喜羊羊","闪亮")
{}
};class MYY:public Skin
{
public:
MYY():Skin("美羊羊","闪亮")
{}
};class LYY:public Skin
{
public:
LYY():Skin("懒羊羊","闪亮")
{}
};class DW:public Skin
{
public:
DW():Skin("大娃","闪亮")
{}
};class EW:public Skin
{
public:
EW():Skin("二娃","闪亮")
{}
};class SW:public Skin
{
public:
SW():Skin("三娃","闪亮")
{}
};class FHX:public Skin
{
public:
FHX():Skin("范海辛","闪亮")
{}
};class QNZH:public Skin
{
public:
QNZH():Skin("千年之狐","闪亮")
{}
};class FQH:public Skin
{
public:
FQH():Skin("凤求凰","闪亮")
{}
};
#endif
#ifndef _HERO_H_
#define _HERO_H_
#include <stdio.h>
#include "Skin.h"class Hero
{
public:
Hero(const char *name)
{
this->name = name;
}
virtual void showskin() = 0;
virtual void selecskin() = 0;
virtual void start()
{
printf("%s皮肤,%s登场",skin->sh,skin->sc);
}
protected:
const char *name;
Skin *skin;
};class XYY:public Hero
{
public:
XYY():Hero("喜羊羊")
{}
void showskin()
{
printf("以下是人物皮肤,请选择\n");
printf("1、喜羊羊\n");
printf("2、美羊羊\n");
printf("3、懒羊羊\n");
printf("请选择皮肤:\n");
}
void selecskin()
{
char b[10];
fgets(b,10,stdin);
switch(b[0])
{
case '1':skin = new XYYX;
break;
case '2':
skin = new MYY;
break;
case '3':
skin = new LYY;
break;
}
}
};class HLW:public Hero
{
public:
HLW():Hero("葫芦娃")
{}
void showskin()
{
printf("以下是人物皮肤,请选择\n");
printf("1、大娃\n");
printf("2、二娃\n");
printf("3、三娃\n");
printf("请选择皮肤:\n");
}
void selecskin()
{
char b[10];
fgets(b,10,stdin);
switch(b[0])
{
case '1':
skin = new DW;
break;
case '2':
skin = new EW;
break;
case '3':
skin = new SW;
break;
}
}
};class LB:public Hero
{
public:
LB():Hero("李白")
{}
void showskin()
{
printf("以下是人物皮肤,请选择\n");
printf("1、范海辛\n");
printf("2、千年之狐\n");
printf("3、凤求凰\n");
printf("请选择皮肤:\n");
}
void selecskin()
{
char b[10];
fgets(b,10,stdin);
switch(b[0])
{
case '1':
skin = new FHX;
break;
case '2':
skin = new QNZH;
break;
case '3':
skin = new FQH;
break;
}
}
};#endif
主要是实现了一个个人物和皮肤的选择。