资源简介
可以随机生成n*n的迷宫
代码片段和文件信息
#include
#include
#include
#include
#include
#define N 2 //关卡数目
#define M N*50 //地图大小 M*M
using namespace std;
int Map[M + 1][M + 1] = { 0 };
int X=0Y=0;
int EX=0EY=0;
char ch;
int level = 0;//游戏等级
int count;//地图大小
int my_x my_y;//我的位置
char str[2 * (M + 1)*(M + 1)] = { ‘\0‘ };
int IsHaveNeighbor(int X_index int Y_index)
{
int i j flag = 0;
if (level == 0)
{
if ((X_index >= 3 && Map[X_index - 2][Y_index] == 1) || (X_index < count - 3 && Map[X_index + 2][Y_index] == 1) || (Y_index >= 3 && Map[X_index][Y_index - 2] == 1) || (Y_index < count - 3 && Map[X_index][Y_index + 2] == 1))
return 1;
return 0;
}
else if (level == 1)
{
for (i = 0;i < count;i++)
{
for (j = 0;j < count;j++)
{
if (Map[i][j] == 6)//还存在蓝色方块
{
flag++;
}
}
}
return flag;
}
}
void Creat_01(int X_index int Y_index)
{
int rand_position x y flag = 0;
x = X_index;
y = Y_index;
//如果四个方向都没有了,返回上一步,否则,继续
while (1)
{
flag = 0;
flag = IsHaveNeighbor(X_index Y_index);
if (flag == 0)
{
return;
}
else
{
Map[X_index][Y_index] = 5;
x = X_index;
y = Y_index;
while (1)
{
rand_position = rand() % 4;
if (rand_position == 0 && X_index >= 3 && Map[X_index - 2][Y_index] == 1)//上
{
X_index = X_index - 2;
}
else if (rand_position == 1 && X_index < count - 3 && Map[X_index + 2][Y_index] == 1)//下
{
X_index = X_index + 2;
}
else if (rand_position == 2 && Y_index >= 3 && Map[X_index][Y_index - 2] == 1)//左
{
Y_index -= 2;
}
else if (rand_position == 3 && Y_index < count - 3 && Map[X_index][Y_index + 2] == 1)//右
{
Y_index += 2;
}
Map[(x + X_index) / 2][(y + Y_index) / 2] = 5;
Map[X_index][Y_index] = 5;
Creat_01(X_index Y_index);
break;
}
}
}
}
void Creat_02_Change(int X_index int Y_index)
{
if (X_index > 1 && Map[X_index - 1][Y_index] == 0)
Map[X_index - 1][Y_index] = 6;
if (Y_index > 1 && Map[X_index][Y_index - 1] == 0)
Map[X_index][Y_index - 1] = 6;
if (X_index < count - 2 && Map[X_index + 1][Y_index] == 0)
Map[X_index + 1][Y_index] = 6;
if (Y_index < count - 2 && Map[X_index][Y_index + 1] == 0)
Map[X_index][Y_index + 1] = 6;
}
void Creat_02(int X_index int Y_index)
{
int rand_point x = 1 y = 2 flag = 0 i j;
while (1)
{
flag = IsHaveNeighbor(X_index Y_index);
if (flag == 0)
return;
else
{
while (1)
{
//如果目前剩余1个蓝色方块
if (flag == 1)
rand_point = 0;
else
rand_point = rand() % flag;//2个 0 1 随机一个小于flag的数,用于随机选取蓝色方块
//print();
for (i = 0;i < count;i++)
{
for (j = 0;j < count;j++)
{
if (Map[i][j] == 6 && rand_point == 0)
{
x = i;
y = j;
break;
}
else if (Map[i][j] == 6)
rand_point--;
- 上一篇:俄罗斯方块(c++控制台代码)
- 下一篇:c++小游戏源码.doc
相关资源
- 高版本Xcode 中 创建 C++ Class
- 23种设计模式(C++实现版本
- VC++MFC课程设计的学生成绩管理系统
- 水晶报表Crystal Reports运行环境CRRunti
- c++MFC车牌自动识别定位,只能定位和
- 《智能卡批量自动发卡系统》 《CPU卡
- CTP上期技术平台API及C#封装更新到CT
- 学生成绩管理系统-----C++
- 自动解决智能拼图,A*算法+生成可解
- c++版学生成绩管理系统实验报告及源
- EAN13条码生成(C语言+VS2010)[包含EA
- 格雷码图片生成与保存C++实现代码
- C++学生成绩管理系统 2018
- C语言学生成绩管理信息系统
- c++,fp-growth实现两部分fp构建和fp-gr
- C语言自动走迷宫程序代码
- C++学生成绩管理系统( 毕业设计)
- C++学生成绩管理系统97917
- 火烧连营C++版本
- C++版计算器带括号dos版本
- 饭客论坛Gh0st3.6金牌版本
- MP4文件切片生成TS和M3U8文件
- 学生成绩管理系统 (C语言版)课程设
- 汉字转拼音 自适应多音字处理 姓名自
- 生成RSA密钥对
- C++动态生成机器码
- 软件工程课程设计--自动排课排课系统
- VC++各版本合集2005-2017
- 课程设计--C语言学生成绩管理系统内
- MFC画圆自定义|位置|半径|边界和内部
评论
共有 条评论