走迷宫程序含自动迷宫生成.docx

上传人:b****5 文档编号:3122615 上传时间:2022-11-17 格式:DOCX 页数:17 大小:400.71KB
下载 相关 举报
走迷宫程序含自动迷宫生成.docx_第1页
第1页 / 共17页
走迷宫程序含自动迷宫生成.docx_第2页
第2页 / 共17页
走迷宫程序含自动迷宫生成.docx_第3页
第3页 / 共17页
走迷宫程序含自动迷宫生成.docx_第4页
第4页 / 共17页
走迷宫程序含自动迷宫生成.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

走迷宫程序含自动迷宫生成.docx

《走迷宫程序含自动迷宫生成.docx》由会员分享,可在线阅读,更多相关《走迷宫程序含自动迷宫生成.docx(17页珍藏版)》请在冰豆网上搜索。

走迷宫程序含自动迷宫生成.docx

走迷宫程序含自动迷宫生成

 

走迷宫程序(含自动迷宫生成)

迷宫程序。

执行效果如下:

程序间有足够多的注释,就不多作介绍了。

代码如下:

///////////////////////////////////////////////////

//程序名称:

迷宫游戏

//编译环境:

VisualC++/2010,EasyX2011惊蛰版

//作  者:

krissi>

//最后修改:

2011-3-12

//

#include<>

#include<>

#include<>

 

//////////////////////////////////////////////////////

//定义全局变量

//

BYTE**g_imgMap=NULL;//迷宫地图

SIZEg_szMap;//迷宫地图的尺寸

IMAGEg_imgSight(360,280);//游戏的视野

RECTg_rtSight;//游戏的视野的范围

IMAGEg_imgItem(180,20);//地图元素

IMAGEg_imgGPS;//迷你地图,用于显示游戏者在地图中的位置

POINTg_ptGPS;//迷你地图的显示位置

SIZEg_szGPS;//迷你地图的尺寸

POINTg_ptPlayer;//游戏者的位置

//枚举地图元素,兼做元素位置的x坐标

enumMAPITEM{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};

//枚举用户的控制命令

enumCMD{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};

 

//////////////////////////////////////////////////////

//函数声明

//

voidWelcome();//绘制游戏界面

voidInitImage();//初始化游戏图片

voidInitGame();//初始化游戏数据

voidGetMazeSize();//提示用户输入迷宫大小

voidMakeMaze(intwidth,intheight);//生成迷宫:

初始化(注:

宽高必须是奇数)

voidTravelMaze(intx,inty);//生成迷宫:

遍历(x,y)四周

MAPITEMGetMazeItem(intx,inty);//获取指定坐标的迷宫元素

voidPaint();//绘制视野范围内的迷宫

intGetCmd(int*c);//获取用户输入的命令

voidDispatchCmd(intcmd);//处理用户输入的命令

voidOnUp();//向上移动

voidOnLeft();//向左移动

voidOnRight();//向右移动

voidOnDown();//向下移动

voidOnMark(MAPITEMvalue);//在地图中做标记

boolCheckWin();//检查是否到出口

boolQuit();//询问用户是否退出游戏

 

//////////////////////////////////////////////////////

//函数定义

//

 

//主程序

voidmain()

{

//初始化

initgraph(640,480);//创建绘图窗口

srand((unsigned)time(NULL));//设置随机种子

//显示主界面

Welcome();

//初始化

InitImage();

InitGame();

//游戏过程

intc;

while(!

((GetCmd(&c)==CMD_QUIT)&&Quit()))

{

DispatchCmd(c);

Paint();

if(CheckWin())

break;

//延时

Sleep(100);

}

//清理迷宫地图占用的内存

for(intx=0;x<+2;x++)

delete[]g_imgMap[x];

delete[]g_imgMap;

//关闭图形模式

closegraph();

}

 

//绘制游戏界面

voidWelcome()

{

//绘制渐变色外框

for(inti=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,_T("宋体"));

outtextxy(248,40,_T("迷  宫"));

//绘制操作说明

setfont(12,0,_T("宋体"));

outtextxy(50,382,_T("控制说明:

"));

outtextxy(74,400,_T("方向键或A/S/D/W:

移动"));

outtextxy(74,418,_T("空格、Y、G:

在地图上做红、黄、绿色M标记"));

outtextxy(74,436,_T("C:

清除地图上的标记"));

outtextxy(74,454,_T("ESC:

退出程序"));

}

 

//初始化游戏图片

voidInitImage()

{

//预绘制游戏图片到IMAGE缓存(可以修改为加载图片以获得更好效果)

SetWorkingImage(&g_imgItem);

cleardevice();

//绘制PLAYER

setorigin(MAP_PLAYER,0);

setfillstyle(YELLOW);

setcolor(YELLOW);

fillellipse(2,2,17,17);

setcolor(BLACK);

line(7,7,7,8);

line(12,7,12,8);

arc(5,6,14,14,,;

//绘制墙壁

setorigin(MAP_WALL,0);

setfillstyle(BROWN,PATTERN_FILL,"\x20\x20\x20\xff\x04\x04\x04\xff");

setcolor(BROWN);

bar(1,1,18,18);

rectangle(0,0,19,19);

//绘制红色标记

setorigin(MAP_MARKRED,0);

setcolor(RED);

moveto(5,15);

linerel(0,-10);linerel(5,5);linerel(5,-5);linerel(0,10);

//绘制绿色标记

setorigin(MAP_MARKGREEN,0);

setcolor(GREEN);

moveto(5,15);

linerel(0,-10);linerel(5,5);linerel(5,-5);linerel(0,10);

//绘制黄色标记

setorigin(MAP_MARKYELLOW,0);

setcolor(YELLOW);

moveto(5,15);

linerel(0,-10);linerel(5,5);linerel(5,-5);linerel(0,10);

//绘制入口

setorigin(MAP_ENTRANCE,0);

setcolor(GREEN);

setfont(12,0,_T("宋体"));

outtextxy(4,4,_T("入"));

//绘制出口

setorigin(MAP_EXIT,0);

outtextxy(4,4,_T("出"));

//绘制迷宫外面的空地

setorigin(MAP_OUTSIDE,0);

setfillstyle(GREEN,PATTERN_FILL,"\x50\x55\x22\x20\x05\x55\x22\x02");

bar(0,0,19,19);

//恢复坐标系

setorigin(0,0);

//显示作者

SetWorkingImage();

setcolor(BLUE);

TCHARauthor[]=_T("Poweredby");

outtextxy(471,4,author);

setcolor(LIGHTBLUE);

outtextxy(470,3,author);

}

 

//初始化游戏数据

voidInitGame()

{

//提示用户输入迷宫大小

GetMazeSize();

//初始化参数

if(g_imgMap!

=NULL)

{//清理迷宫地图占用的内存

for(intx=0;x<+2;x++)

delete[]g_imgMap[x];

delete[]g_imgMap;

}

MakeMaze,;//创建迷宫

=2;//设置游戏者的位置

=2;

=0;//设置视野范围

=0;

=17;

=13;

//设置GPS显示区

setfillstyle(BLUE);

bar(522,368,637,471);

if>{=100;=(int)*/+;}

else{=100;=(int)*/+;}

Resize(&g_imgGPS,,;

=530+50-/2;

=370+50-/2;

//画迷你地图外框

setcolor(RED);

rectangle-1,-1,+,+;

//画迷你地图入口和出口

setcolor(YELLOW);

moveto-8,+/;

linerel(7,0);linerel(-3,-3);move

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1