You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
1.7 KiB

#pragma once
#include "map.h"
#include "monster.h"
#include "pacman.h"
#include <easyx.h>
class Game
{
private:
Monster monster;
Pacman pacman;
Map map;
IMAGE floor;
char GetKey()
{
/* 等待完善 */
return 0;
}
void Pause()
{
/* 等待完善 */
char key = 0;
while (key != 'p')
key = GetKey();
}
public:
void Load()
{
// 设置皮肤、地图参数
initgraph(0, 0);
/* 用户设置界面 */
// 用户设置一个游戏名,用于记录游戏得分记录
closegraph();
/* 等待完善 */
monster.Init(0, 0, 0, 0, 0, 0, 0, NULL, NULL, 0, 0);
pacman.Init(0, 0, 0, 0, 0, 0, 0, NULL, NULL);
map.Init("文件地址");
// 根据map绘制floor
SetWorkingImage(&floor);
SetWorkingImage(NULL);
initgraph(0, 0);
putimage(0,0,&floor);
// 游戏开始循环
int end = 0;
while (!end)
{
// 获取键值
char key = 0;
key = GetKey();
switch (key)
{
case 'w': pacman.SetDir(DIR_UP); break;
case 'a': pacman.SetDir(DIR_LEFT); break;
case 's': pacman.SetDir(DIR_DOWN); break;
case 'd': pacman.SetDir(DIR_RIGHT); break;
case 'p': Pause(); break;
case 'o': end = -1; break;
}
// 移动
pacman.Update(&map, &floor);
monster.Update(&map, pacman.GetX(), pacman.GetY(), pacman.GetFighter().GetPower());
// 判断是否有pacman和monster相遇
// 如果相遇,则发生战斗
int result = Fight(pacman.GetFighter(), monster.GetFighter());
if (result == WIN)
pacman.FightGift();
// 绘图
// 先全部擦除,再全部绘出
pacman.Clear();
monster.Clear();
pacman.Draw(&floor);
monster.Draw(&floor);
// 延时
Sleep(10000);
// 结束逻辑
if (pacman.IsDead())
end = -1;
if (map.Empty())
end = 1;
}
// 根据end展示胜利/失败面板
closegraph();
}
};