资源简介

走迷宫的游戏。包括迷宫的随机创建和控制移动等。含VC6源代码,并且代码里面的注释很详细(编译前请自己安装EasyX库)

资源截图

代码片段和文件信息

///////////////////////////////////////////////////
// 程序名称:迷宫 游戏
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 作  者:krissi 
// 最后修改:2011-3-12
//
#include 
#include 
#include 



//////////////////////////////////////////////////////
// 定义全局变量
//
BYTE** g_imgMap = NULL; // 迷宫地图
SIZE g_szMap; // 迷宫地图的尺寸
IMAGE g_imgSight(360 280); // 游戏的视野
RECT g_rtSight; // 游戏的视野的范围
IMAGE g_imgItem(180 20); // 地图元素
IMAGE g_imgGPS; // 迷你地图,用于显示游戏者在地图中的位置
POINT g_ptGPS; // 迷你地图的显示位置
SIZE g_szGPS; // 迷你地图的尺寸
POINT g_ptPlayer; // 游戏者的位置

// 枚举地图元素,兼做元素位置的 x 坐标
enum MAPITEM { MAP_WALL = 0 MAP_Player = 20 MAP_GROUND = 40 MAP_MARKRED = 60 MAP_MARKGREEN = 80 MAP_MARKYELLOW = 100 MAP_ENTRANCE = 120 MAP_EXIT = 140 MAP_OUTSIDE = 160 };
// 枚举用户的控制命令
enum CMD { CMD_QUIT = 1 CMD_UP = 2 CMD_DOWN = 4 CMD_LEFT = 8 CMD_RIGHT = 16 CMD_MARKRED = 32 CMD_MARKGREEN = 64 CMD_MARKYELLOW = 128 CMD_CLEARMARK = 256 };



//////////////////////////////////////////////////////
// 函数声明
//
void Welcome(); // 绘制游戏界面
void InitImage(); // 初始化游戏图片
void InitGame(); // 初始化游戏数据
void GetMazeSize(); // 提示用户输入迷宫大小
void MakeMaze(int width int height); // 生成迷宫:初始化(注:宽高必须是奇数)
void TravelMaze(int x int y); // 生成迷宫:遍历 (x y) 四周
MAPITEM GetMazeItem(int x int y); // 获取指定坐标的迷宫元素
void Paint(); // 绘制视野范围内的迷宫
int GetCmd(int* c); // 获取用户输入的命令
void DispatchCmd(int cmd); // 处理用户输入的命令
void OnUp(); // 向上移动
void OnLeft(); // 向左移动
void OnRight(); // 向右移动
void OnDown(); // 向下移动
void OnMark(MAPITEM value); // 在地图中做标记
bool CheckWin(); // 检查是否到出口
bool Quit(); // 询问用户是否退出游戏



//////////////////////////////////////////////////////
// 函数定义
//


// 主程序
void main()
{
// 初始化
initgraph(640 480); // 创建绘图窗口
srand((unsigned)time(NULL)); // 设置随机种子

// 显示主界面
Welcome();

// 初始化
InitImage();
InitGame();

// 游戏过程
int c;
while( !((GetCmd(&c) == CMD_QUIT) && Quit()) )
{
DispatchCmd(c);
Paint();
if (CheckWin())
break;

// 延时
Sleep(100);
}

// 清理迷宫地图占用的内存
for(int x = 0; x < g_szMap.cx + 2; x++)
delete[] g_imgMap[x];
delete [] g_imgMap;

// 关闭图形模式
closegraph();
}


// 绘制游戏界面
void Welcome()
{
// 绘制渐变色外框
for(int i=0; i<128; i++)
{
setcolor(RGB(0 0 (127 - i) << 1));
rectangle(149 - i 109 - (i >> 1) 490 + i 370 + (i >> 1));
}

// 设置字体样式
setcolor(WHITE);
setbkmode(TRANSPARENT);

// 绘制标题
setfont(36 0 “宋体“);
outtextxy(248 40 “迷  宫“);

// 绘制操作说明
setfont(12 0 “宋体“);
outtextxy(50 382 “控制说明:“);
outtextxy(74 400 “方向键或 A/S/D/W:移动“);
outtextxy(74 418 “空格、Y、G:在地图上做红、黄、绿色 M 标记“);
outtextxy(74 436 “C:清除地图上的标记“);
outtextxy(74 454 “ESC:退出程序“);
}


// 初始化游戏图片
void InitImage()
{
// 预绘制游戏图片到 IMAGE 缓存(可以修改为加载图片以获得更好效果)
SetWorkingImage(&g_imgItem);
cleardevice();
// 绘制 Player
setorigin(MA

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       12356  2011-05-31 15:08  main.cpp
     文件        4260  2011-05-31 15:10  Maze.dsp
     文件         532  2011-05-31 15:09  Maze.dsw
     文件       90112  2011-05-31 15:10  Maze.exe
     目录           0  2011-05-31 15:10  Release\
     文件       90112  2011-05-31 15:10  Release\Maze.exe

评论

共有 条评论