#ifndef _GAME_H_
#define _GAME_H_
#include <stdlib.h>
#include <string.h>
#include <iomanip>
#include <string>
#include <Windows.h>
#include <conio.h>
#define N 10
#define M 5
enum e_result
{
error = -1,
ok
};
class Bug //怪物类
{
public:
Bug();
void updateBugPosition(); //更新怪物的位置
protected:
int position[N-1][M]; //怪物的位置
int direction[N-1][M]; //怪物移动的方向和步长
};
class Raider //突击者类
{
public:
Raider();
int getInput(); //获取突击者移动方向
protected:
int x; // 突击者的x、y坐标
int y;
int option[2]; //Option[1]保存突击手移动的方向
};
class Map:public Bug, public Raider //地图类
{
public:
Map();
void getLevel(); // 获取游戏难度等级
void print(); //打印执行一步后的地图
void result(); //判断每一步的结果
void updateTimes(); //更新剩余步数
int get_ans(); //返回result()的结果
private:
char input[N]; //保存用户输入的信息
int level; //地图游戏难度等级
int times; //地图允许运行的最大步数
int ans; //判断能否进行下一步
};
#endif
#include "game.h"
#include <iostream>
#include <process.h>
using namespace std;
//Bug
Bug::Bug()
{
srand((unsigned)time(NULL)); //设置随机数种子
for (int i = 0; i < N-1; i++)
{
for (int j = 0; j < M; j++)
{
position[i][j] = rand() % N;
if (rand() % 2 == 1)
{
direction[i][j] = j+1; //初始状态设置为向右移动
}
else direction[i][j] = -(j+1); //初始状态设置为向左移动
}
}
}
/*更新怪物的位置*/
void Bug::updateBugPosition()
{
for (int i = 0; i < N - 1; i++)
{
for (int j = 0; j < M; j++)
{
if (position[i][j] + direction[i][j] < 0) //超出左边边界
{