我使用了網上的一個迷宮生成思路寫了一下這個程式,沒有報程式錯誤但是除錯的時候在報錯的那一行提示
0x008539FC 處(位于 Project2.exe 中)引發的例外: 0xC0000005: 讀取位置 0xFDFDFE2B 時發生訪問沖突。不知道怎么解決。
#include<stdio.h>
#include<time.h>
#include<graphics.h>
//迷宮大小960*960
//單位20
//墻1
//路0
void makemaze2(int a, int b, BYTE**Maze)
{
int i = 0, t = 0, c, d, e, f;
//int a = rand() % 44 + 3, b = rand() % 44 + 3, c = rand() % 4; //c
int F[4][2] = { 0,1,1,0,0,-1,-1,0 }; //4個方向
Maze[a][b] = 0;
for (i = 0; i <= 3; i++)
{
c = a + 2 * F[i][0], d = a + 2 * F[i][1], e = a + F[i][0], f = a + F[i][1];
if (Maze[c][d] == 1) //錯誤在這。
{
Maze[e][f] = 0;
makemaze2(c, d,Maze);
}
}
}
void makemaze()
{
int z, q; //z,q
int x = 0, y = 0;
int a = rand() % 44 + 3, b = rand() % 44 + 3, c = rand() % 4; //c
//int Maze[48][48];
BYTE** Maze = new BYTE* [48];
for (x = 0; x <= 47; x++)
Maze[x] = new BYTE[48];
//int F[4][2] = { 0,1,1,0,0,-1,-1,0 }; //4個方向
for (x = 0; x <= 47; x++)
{
for (y = 0; y <= 47; y++)
{
Maze[x][y] = 1;
//printf("%d ", Maze[x][y]);
}
//printf("\n");
}
makemaze2(a&0xffe, b&0xffe, Maze);
for (z = 0; z <= 47; z++)
{
for (q = 0; q <= 47; q++)
printf("%d ", Maze[z][q]);
printf("\n");
}
}
void main(void)
{
srand((unsigned)time(NULL));
makemaze();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103073.html
標籤:C++ 語言
上一篇:求大佬告知我這段代碼末尾為什么會重復列印最后一行,請解釋地詳細點
下一篇:求二維陣列所有素數的和
