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
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();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}; |