资源简介
走迷宫的游戏。包括迷宫的随机创建和控制移动等。含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
- 上一篇:家庭财务系统,可在devc++上直接运行
- 下一篇:传智播客c/c++教程
相关资源
- C语言实战-学生成绩管理系统
- 学生成绩管理系统V6.0 c语言大作业
- 通过多个三维控制点 实现生成Bezier样
- VC++ 迷宫游戏
- 迷宫游戏自动生成迷宫
- c语言版学生成绩管理系统实验报告
- 基于遗传算法的随机规划matlab
- 格雷码等结构光条纹的生成C++
- 学生成绩管理系统C语言
- zxing库c++)
- 迷宫问题A*算法
- 数据结构程序设计学生成绩管理系统
- 学生成绩管理系统 C、VC++
- 数据结构c语言 学生成绩管理系统
- 状态机自动生成代码软件
- 抽奖程序,可以实现随机摇号,并且
- 迷宫求解算法数据结构c语言
- 迷宫的生成与自动寻路
- AES s盒生成代码
- 数据结构——迷宫
- c语言迷宫算法
- 破圈法构造最小生成树
- 老鼠走迷宫数据结构课程设计
- 生成指定长度的Wav空白文件--
- 产生输出到本地文件的随机数
- c语言回溯法走迷宫的源码
- 数据结构之迷宫求解完整代码(C语言
- 页面置换算法最佳,FIFO,LRU,随机,
-
mfc通过xm
l文件生成word文档 - 哈夫曼最小生成树及最短路径代码
评论
共有 条评论