SimpleGenerateMaze.cpp
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:2k
源码类别:

游戏

开发平台:

Visual C++

  1. // SimpleGenerateMaze.cpp : Defines the entry point for the console application.
  2. //
  3. /************************** A* Algorithm Copyright**************************/
  4. /*You can distributed this algorithm as you like only saving this declaration above*/
  5. /********************Date: 2004.7.18    Author: caucy*************************/
  6. #include "stdafx.h"
  7. #include "stdlib.h"
  8. #include "iostream.h"
  9. #include "time.h"
  10. #define SIZEX_MAZE 30
  11. #define SIZEY_MAZE 40
  12. int maze[SIZEX_MAZE][SIZEY_MAZE];
  13. //出口点
  14. #define EXIT_ROW SIZEX_MAZE-2
  15. #define EXIT_COL SIZEY_MAZE-2
  16. void GenerateMaze()
  17. {
  18. //设置种子
  19. srand(time(NULL));
  20. int i,j;
  21. int k;
  22. //Step1:  初始设置迷宫为不可走通
  23. for(i=0;i<SIZEX_MAZE;i++)
  24. for(j=0;j<SIZEY_MAZE;j++)
  25. maze[i][j]=1;
  26. i=1;j=1;
  27. //Step2:  设置迷宫入口点在(1,1)位置
  28. maze[i][j]=0;
  29. //Step3:  探索一条通路出来
  30. while(i!=EXIT_ROW||j!=EXIT_COL)
  31. {
  32. //Step3.1:  如果到了行墙边,则沿着墙边打通墙
  33. if(i==EXIT_ROW)
  34. {
  35. while(j!=EXIT_COL)
  36. maze[i][++j]=0;
  37. break;
  38. }
  39. //Step3.2:  如果到了列墙边,则沿着墙边打通墙
  40. if(j==EXIT_COL)
  41. {
  42. while(i!=EXIT_ROW)
  43. maze[++i][j]=0;
  44. break;
  45. }
  46. //Step3.3:  产生一个随机运动的方向
  47. k=rand()%3;
  48. //打通向下方向的墙
  49. if(k==0)
  50. {
  51. maze[++i][j]=0;
  52. continue;
  53. }
  54. //打通向右方向的墙
  55. if(k==1)
  56. {
  57. maze[i][++j]=0;
  58. continue;
  59. }
  60. /*如果采用8连通的迷宫,则还需要加入右下方的通路
  61. //打通向右下方向的墙
  62. if(k==2)
  63. {
  64. maze[++i][++j]=0;
  65. continue;
  66. }
  67. */
  68. }
  69. //Step4:  加入随机通路
  70. k=0;
  71. while(k<SIZEX_MAZE)
  72. {
  73. i=rand()%EXIT_ROW;
  74. j=rand()%EXIT_COL;
  75. maze[i][j]=0;
  76. k++;
  77. }
  78. }
  79. void ShowMaze()
  80. {
  81. int i,j;
  82. for(i=0;i<SIZEX_MAZE;i++)
  83. {
  84. for(j=0;j<SIZEY_MAZE;j++)
  85. {
  86. cout<<maze[i][j];
  87. }
  88. cout<<endl;
  89. }
  90. }
  91. int main(int argc, char* argv[])
  92. {
  93. GenerateMaze();
  94. ShowMaze();
  95. return 0;
  96. }