📄 gamemapmake.cpp
字号:
#include "stdafx.h"
#include "Game.h"
#include "GameMapMake.h"
void Createmaze()
{
int i,j;
for(i=0;i<LENTH;i++)
{
for(j=0;j<WIDTH;j++)
{
map[i][j]=1;
}
}
srand((unsigned)time(NULL));
i=rand()%LENTH;
j=rand()%WIDTH;
map[i][j]=0;
Drawmaze(i,j);
Tidymaze();
for(j=1;j<WIDTH-1;j++)
{
if(map[1][j]==0)
{
map[0][j]=0;
break;
}
}
for(j=WIDTH-2;j>0;j--)
{
if(map[LENTH-2][j]==0)
{
map[LENTH-1][j]=3;
break;
}
}
}
void Drawmaze(int i,int j)
{
int k,l;
if
(
(map[i][j+1]!=1||map[i][j+2]!=1||map[i+1][j+1]!=1||map[i-1][j+1]!=1||j+1>=WIDTH-1)&&
(map[i+1][j]!=1||map[i+2][j]!=1||map[i+1][j+1]!=1||map[i+1][j-1]!=1||i+1>=LENTH-1)&&
(map[i][j-1]!=1||map[i][j-2]!=1||map[i+1][j-1]!=1||map[i-1][j-1]!=1||j-1<=0)&&
(map[i-1][j]!=1||map[i-2][j]!=1||map[i-1][j+1]!=1||map[i-1][j-1]!=1||i-1<=0)
)
{
map[i][j]=4;
return;
}
k=rand()%4+1;
l=rand()%4+1;
switch(k)
{
case 1:
Turnright(i,j,l);
break;
case 2:
Turndown(i,j,l);
break;
case 3:
Turnleft(i,j,l);
break;
case 4:
Turnup(i,j,l);
}
}
void Turnright(int i,int j,int l)
{
if(map[i][j+1]==1&&map[i][j+2]==1&&map[i+1][j+1]==1&&map[i-1][j+1]==1&&j+1<WIDTH-1&&l>0)
{
map[i][j+1]=0;
Turnright(i,j+1,l-1);
}
Drawmaze(i,j);
}
void Turndown(int i,int j,int l)
{
if(map[i+1][j]==1&&map[i+2][j]==1&&map[i+1][j+1]==1&&map[i+1][j-1]==1&&i+1<LENTH-1&&l>0)
{
map[i+1][j]=0;
Turndown(i+1,j,l-1);
}
Drawmaze(i,j);
}
void Turnleft(int i,int j,int l)
{
if(map[i][j-1]==1&&map[i][j-2]==1&&map[i+1][j-1]==1&&map[i-1][j-1]==1&&j-1>0&&l>0)
{
map[i][j-1]=0;
Turnleft(i,j-1,l-1);
}
Drawmaze(i,j);
}
void Turnup(int i,int j,int l)
{
if(map[i-1][j]==1&&map[i-2][j]==1&&map[i-1][j+1]==1&&map[i-1][j-1]==1&&i-1>0&&l>0)
{
map[i-1][j]=0;
Turnup(i-1,j,l-1);
}
Drawmaze(i,j);
}
void Tidymaze()
{
int i,j;
for(i=0;i<LENTH-1;i++)
{
for(j=0;j<WIDTH-1;j++)
{
if(map[i][j]!=4) continue;
map[i][j]=0;
}
}
}
int Findway(int i, int j)
{
int h=0;
if(map[i+1][j] == 3 && i+1<LENTH)
{
map[i][j]=5;
map[i+1][j]=5;
return(1);
}
if(h==1) return (1);
if(map[i][j+1] == 0 && j+1<WIDTH)
{
map[i][j]=5;
h=Findway(i,j+1);
}
if(h==1) return (1);
if(map[i+1][j] == 0 && i+1<LENTH)
{
map[i][j]=5;
h=Findway(i+1,j);
}
if(h==1) return (1);
if(map[i][j-1] == 0 && j-1>=0)
{
map[i][j]=5;
h=Findway(i,j-1);
}
if(h==1) return (1);
if(map[i-1][j] == 0 && i-1>=0)
{
map[i][j]=5;
h=Findway(i-1,j);
}
if(h==1) return (1);
map[i][j]=4;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -