资源简介
随机迷宫生成用来我自己设计的一种算法,可以生成有一条通路的迷宫。并可自动寻路。
有两种模式 自动和手动。
自己游戏选手动,查看如何寻路的选自动
自动寻路开始快捷键SPACE
没有C++,与API编程基础的人不要看。
武汉科技大学的,请不要下载因为这是我的课程大作业,花了3天时间完善的。还要给老师检查,可别雷同了。
代码片段和文件信息
#include “StdAfx.h“
#include “GoMaze.h“
#include “Resource.h“
//生成随数,并且【range_min<=u int RangedRand(int range_min int range_max)
{
int u = rand();
u = (double)u/ (RAND_MAX + 1) * (range_max - range_min)+ range_min;
return u;
}
//设置地图
void CGoMaze::SetMaze(int nWidthint nHeightHWND hwndHINSTANCE hInst)
{
bitmapstone = LoadBitmap(hInstMAKEINTRESOURCE(IDB_STONE));
bitmapin = LoadBitmap(hInstMAKEINTRESOURCE(IDB_IN));
bitmapout = LoadBitmap(hInstMAKEINTRESOURCE(IDB_OUT));
bitmapman = LoadBitmap(hInstMAKEINTRESOURCE(IDB_MAN));
this->hwnd = hwnd;
m_wide = nWidth;
m_height = nHeight;
this->hInst = hInst;
CreateMap();//随机生成地图
}
CGoMaze::CGoMaze(void)
{
InitList(list);
}
CGoMaze::~CGoMaze(void)
{//销毁窗口
for(int i =0;i for(int j =0;j {
if (maze[i][j] == 1)
{
DestroyWindow(hwndmaze[i][j]);
}
}
DestroyWindow(hwndmaze[0][0]);
DestroyWindow(hwndmaze[m_height-1][m_wide-1]);
DestroyWindow(hwndman);
DestroyList(list);
}
void CGoMaze::DrawMaze(void)
{
int ID = 2000;
for(int i =0;i for(int j =0;j {
if (maze[i][j] == 1)
{
hwndmaze[i][j] = CreateWindow(_T(“static“)NULLSS_BITMAP |WS_CHILD|WS_VISIBLEj*33i*333333hwnd(HMENU)(ID++)hInstNULL);
SendMessage(hwndmaze[i][j]STM_SETIMAGE(WPARAM)IMAGE_BITMAP(LPARAM)bitmapstone);
}
else
maze[i][j] = 0;
}
curPos.x=0;curPos.y=0;
endPos.x=m_height-1;endPos.y=m_wide-1;
//小人的图标
hwndman = CreateWindow(_T(“man“)NULLSS_BITMAP |WS_CHILD|WS_VISIBLE003333hwnd(HMENU)(ID++)hInstNULL);
SendMessage(hwndmanSTM_SETIMAGE(WPARAM)IMAGE_BITMAP(LPARAM)bitmapman);
//出入口图标
hwndmaze[0][0] = CreateWindow(_T(“static“)NULLSS_BITMAP |WS_CHILD|WS_VISIBLE003333hwnd(HMENU)(ID++)hInstNULL);
SendMessage(hwndmaze[0][0]STM_SETIMAGE(WPARAM)IMAGE_BITMAP(LPARAM)bitmapin);
hwndmaze[m_height-1][m_wide-1] = CreateWindow(_T(“static“)NULLSS_BITMAP |WS_CHILD|WS_VISIBLE(m_wide-1)*33(m_height-1)*333333hwnd(HMENU)(ID++)hInstNULL);
SendMessage(hwndmaze[m_height-1][m_wide-1]STM_SETIMAGE(WPARAM)IMAGE_BITMAP(LPARAM)bitmapout);
}
//inclu为TRUE时包括边
//获取每一个点的信息,当inclu为false时计算指定点附近可以打通的墙的个数
//当inclu为false时计算指定点附近可以打通的墙的个数包括地图边界.
int CGoMaze::SurroundNum(int xint yBOOL inclu)
{
int i =1;
int num = 0;
POINT temp;
int next_x=x+1next_y=y+1prev_x=x-1prev_y=y-1;
if(!inclu) ClearList(list);
//下
if (next_x>=m_height)
{
if(inclu)
num++;
}
else
{
if (maze[next_x][y] == 1)
{
temp.x = next_x;
temp.y = y;
if(!inclu) ListInsert(listi++temp);
num ++;
}
}
//右
if (next_y>=m_wide)
{
if(inclu)
num++;
}
else
{
if (maze[x][next_y] == 1)
{
temp.x = x;
temp.y = next_y;
if(!inclu) ListInsert(listi++temp);
num ++;
}
}
//上
if (prev_x<0)
{
if(inclu)
num++;
}
else
{
if
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 798 2010-05-30 03:14 Maze\Maze\bitmap1.bmp
文件 798 2010-05-30 03:14 Maze\Maze\bitmap2.bmp
文件 6920 2010-05-31 23:53 Maze\Maze\GoMaze.cpp
文件 875 2010-05-31 23:45 Maze\Maze\GoMaze.h
文件 1078 2010-05-29 12:23 Maze\Maze\icon1.ico
文件 2203 2010-05-29 23:05 Maze\Maze\list.cpp
文件 377 2010-05-29 23:10 Maze\Maze\list.h
文件 3126 2010-05-30 15:37 Maze\Maze\man.bmp
文件 14364 2010-05-30 15:37 Maze\Maze\Maze.aps
文件 8216 2010-05-31 23:49 Maze\Maze\Maze.cpp
文件 39 2010-05-29 12:02 Maze\Maze\Maze.h
文件 23558 2010-05-29 12:14 Maze\Maze\Maze.ico
文件 5110 2010-05-30 15:37 Maze\Maze\Maze.rc
文件 5370 2010-05-30 18:11 Maze\Maze\Maze.vcproj
文件 1413 2010-05-31 23:58 Maze\Maze\Maze.vcproj.ANDIS-PC.ANDIS.user
文件 1919 2010-05-29 12:02 Maze\Maze\ReadMe.txt
文件 1441 2010-05-30 15:37 Maze\Maze\resource.h
....... 23558 2003-07-24 09:52 Maze\Maze\small.ico
文件 209 2010-05-29 12:02 Maze\Maze\stdafx.cpp
文件 429 2010-05-31 22:15 Maze\Maze\stdafx.h
文件 3030 2010-05-29 14:08 Maze\Maze\stone.bmp
文件 1026 2010-05-29 12:02 Maze\Maze\targetver.h
文件 878 2010-05-29 12:02 Maze\Maze.sln
..A..H. 29184 2010-05-31 23:58 Maze\Maze.suo
文件 90112 2010-05-31 23:53 Maze\Release\Maze.exe
目录 0 2010-05-31 23:59 Maze\Maze
目录 0 2010-05-31 23:59 Maze\Release
目录 0 2010-05-31 23:59 Maze
文件 90112 2010-05-31 23:53 Maze.exe
----------- --------- ---------- ----- ----
............此处省略2个文件信息
相关资源
- VC++开发基于Microsoft Speech SDK的TTS软件
- 左手法则c语言程序
- VC_Psapi.h_头文件
- 自动寻路贪吃蛇C++源码
- 使用C++实现迷宫游戏
- C语言实现迷宫问题
- 数据结构——迷宫问题
- C++API中文版CHM
- ABB机器人的socket通信UDPRapid代码
- RapidJson解析JSON文件C++ vs2017亲测可完美
- 迷宫问题数据结构 C++编写
- 迷宫问题的C++算法实现
- C++ rapidjson 对类序列化(完美二次封装
- 迷宫求解 C++ 完整。。。。。
- VC++ HIDAPI实现USB数据读写
- 数据结构中用栈实现迷宫问题的c++代
- 利用回溯法解决迷宫问题
- C++api大全
- 数据结构 迷宫问题 C++ 栈方法
- hid.lib setupapi.lib 等HID开发相关的库和
- A*算法、自动寻路算法C++源码
- 新编Windows API参考大全全中文、win32
- Windows程序设计 (第五版) (C语言
- OpenCV 中文API官方帮助文档.rar
- 上期所 CTP-Api之C++ 交易Demo版可以实时
- 上期所CTP-Api之C++交易Demo版
- 上期所CTP-Api之C++行情Demo版(可保存数
- MLX90640驱动库API和C语言源代码已验证
- MLX90640 Driver驱动库说明中文API函数库
- ABB机械臂与PC通讯(socket),附RAPID和
评论
共有 条评论