C语言随机生成1000个坐标点,C++随机生成迷宫算法

本文实例为大家分享了C++随机生成迷宫的具体代码,供大家参考,具体内容如下

我们今天来做一个迷宫游戏。在其中有几个要领:

1.方向的控制

我们建立的迷宫是以坐标的形式出现的,越往上x坐标越小,越往左y坐标越小,这雨平面直角坐标系不同,要注意!

2.随机生成算法:

void init_maze(void); //初始化迷宫

void gotoxy(int x, int y); //移动光标

void path_up(int *x, int *y); //上构路径

void path_down(int *x, int *y); //下构路径

void path_left(int *x, int *y); //左构路径

void path_right(int *x, int *y); //右构路径

void setxy(int x, int y); //指定位打通路径

void path_local(int x, int y); //本置路径

这是我们需要的函数,主要功能呢在代码中有讲到。如果大家自己在编程时需要自己生成迷宫,可以借鉴一下。

3.代码

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define UP 72

#define DOWN 80

#define LEFT 75

#define RIGHT 77

#define M 40 //迷宫长度

#define N 82 //迷宫宽度

char maze[M/2][N/2]; //定义迷宫数组

char path[M-1][N-1]; //定义路径数组

void setview(void); //设置控制台窗口信息

int menu_maze(void); //主目录

void startgame(void); //开始游戏

void init_maze(void); //初始化迷宫

void gotoxy(int x, int y); //移动光标

void path_up(int *x, int *y); //上构路径

void path_down(int *x, int *y); //下构路径

void path_left(int *x, int *y); //左构路径

void path_right(int *x, int *y); //右构路径

void setxy(int x, int y); //指定位打通路径

void path_local(int x, int y); //本置路径

void go_up(int *x,int *y); //向上移动

void go_down(int *x,int *y); //向下移动

void go_left(int *x,int *y); //向左移动

void go_right(int *x,int *y); //向右移动

void HideCursor(void); //隐藏光标

void win(void);

int T;

int F;

int m;

int n;

int x;

int target;

int flag;

int local_x;

int local_y;

int main()

{

setview();

while(1)

{

switch(menu_maze())

{

case 49:

system("cls");

startgame();

continue;

case 50:exit(0);

}

}

}

void setview()

{

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄

COORD size = {N*2+167, M*2+43};

SetConsoleScreenBufferSize(hOut,size); //设置控制台窗口缓冲区大小

SMALL_RECT rc = {0,0,167,43};

SetConsoleWindowInfo(hOut,true ,&rc); //设置窗口位置和大小

SetConsoleTitle("迷宫"); //设置窗口标题

HideCursor(); //隐藏光标

}

int menu_maze(void)

{

char c;

while(!(c>48&&c<51))

{

system("cls");

printf("\n\n\n\n\n\n\n\n");

printf(" ………………^欢迎使用DOS迷宫游戏^……………\n");

printf(" *******************************************\n");

printf(" **************** 1.开始游戏****************\n");

printf(" **************** 2.退出游戏****************\n");

printf(" *******************************************\n");

c=getch();

}

return c;

}

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值