#pragma once #include "map.h" #include "monster.h" #include "pacman.h" #include 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(); } };