C/C++언어 로 랜 덤 미로 게임 생 성

2775 단어 C++미궁
미 로 는 모두 가 지나 갈 것 이 라 고 믿 습 니 다.왜냐하면 책 이 든 뭐 든 위 에 미로 가 있 을 것 입 니 다.주로 당신 의 논리 적 사 고 를 시험 하 는 것 입 니 다.그러면 우 리 는 C/C++를 배 우 는 것 도 논리 적 사고방식 을 배 워 야 한다.그러면 오늘 은 C/C++로 간단 한 랜 덤 미로 게임 을 만 드 는 방법 을 공유 하 겠 다.코드 는 미로 만 드 는 코드 만 절 취 했 습 니 다.전체 코드 를 원한 다 면 그룹 을 추가 할 수 있 습 니 다.558502932.그룹 내 에 C/C++학습 자료 가 많아 서 공 부 를 제공 합 니 다.모두 함께 교류 하고 발전 합 니 다)
풀 버 전의 미로 게임 효 과 는 다음 과 같 습 니 다.



코드 는 다음 과 같 습 니 다:

//    
void CreateMaze(int x,int y)
{
//  4   
int dir[4][2] = { 0, 1, 1, 0, 0, -1, -1, 0 }; //    
//    
int j,temp; //temp     
for (int i = 0; i < 4; i++)
{
j = rand() % 4; //0-3       //j     j        
temp = dir[i][0];
dir[i][0] = dir[j][0];
dir[j][0] = temp;
temp = dir[i][1];
dir[i][1] = dir[j][1];
dir[j][1] = temp;
}
map[x][y] = ROAD; //        
for (int i = 0; i < 4; i++)
{
if (map[x + 2 * dir[i][0]][y + 2 * dir[i][1]] == WALL) //   0 1 //     
{
map[x + dir[i][0]][y + dir[i][1]] = ROAD;
CreateMaze(x + 2*dir[i][0], y + 2*dir[i][1]);
}
}
}
int main()
{
srand((unsigned int)time(NULL));
for ( int i = 0; i <= HEIGHT+1; i++)
{
for (int j = 0; j <= WIDTH + 1; j++)
{
if (i == 0 || i == HEIGHT + 1 || j == 0 || j == WIDTH + 1)
{
map[i][j] = ROAD;
}
else
{
map[i][j] = WALL;
}
}
}
CreateMaze(2 * (rand() % (HEIGHT / 2) + 1), 2 * (rand() % (WIDTH / 2) + 1));
//  
for (int i = 0; i <= HEIGHT + 1; i++)
{
map[i][0] = WALL;
map[i][WIDTH + 1] = WALL;
}
for (int i = 0; i <=WIDTH+1; i++)
{
map[0][i] = WALL;
map[HEIGHT + 1][i] = WALL;
}
//       
map[2][1] = START;
map[HEIGHT - 1][WIDTH] = END;
for (int i = 1; i <= HEIGHT; i++)
{
for (int j = 1; j <= WIDTH; j++)
{
paint(i, j);
}
}
paint(0, 0);
return 0;
}
이것 은 단지 안의 일부 코드 일 뿐 이 므 로 당신들 이 복사 하고 붙 여 넣 는 것 도 소 용이 없습니다.코드 를 주 는 것 은 지도 역할 일 뿐 입 니 다.주로 프로 그래 밍 사상 과 프로 그래 밍 의 방향 을 알 아야 합 니 다.C/C++를 잘 배 워 서 C/C++를 배 울 수 있 기 를 바 랍 니 다.
마지막 으로 전체 코드 를 원한 다 면 군 을 추가 할 수 있 습 니 다.558502932.군 내 에 대량의 학습 자 료 를 제공 하여 공 부 를 하고 모두 가 공동으로 공부 하 며 공동으로 발전 할 수 있 습 니 다.
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 C/C++언어 로 랜 덤 미로 게임 을 만 드 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기