• c++迷宫小游戏


    一、总结

    一句话总结:

    显示:根据map数组输出图像
    走动:修改map数组的值,每走一步重新刷新一下图像就好

    1、如果走函数用z(),出现输入s会向下走多步的情况,原因是什么?

     向下走两层循环ij增加,而向下走i也是增加的,所以break跳出j后,照样找到i不误,所以会一直走到不能走为止

    1. //走动函数
    2. void z(){
    3. char c=getch();
    4. //下
    5. if(c=='s')
    6. {
    7. for(int i=0;i<10;i++)
    8. {
    9. for(int j=0;j<10;j++)
    10. {
    11. //找到人物所在的位置
    12. if(map[i][j]==3&&map[i+1][j]!=1)
    13. {
    14. map[i+1][j]=3;//下面的位置变成人物所在的位置
    15. map[i][j]=0;//走过的地方变成0
    16. break;
    17. }
    18. }
    19. }
    20. }
    21. //上
    22. if(c=='w')
    23. {
    24. for(int i=0;i<10;i++)
    25. {
    26. for(int j=0;j<10;j++)
    27. {
    28. if(map[i][j]==3&&map[i-1][j]!=1)
    29. {
    30. map[i-1][j]=3;
    31. map[i][j]=0;
    32. break;
    33. }
    34. }
    35. }
    36. }
    37. //左
    38. if(c=='a')
    39. {
    40. for(int i=0;i<10;i++)
    41. {
    42. for(int j=0;j<10;j++)
    43. {
    44. if(map[i][j]==3&&map[i][j-1]!=1)
    45. {
    46. map[i][j-1]=3;
    47. map[i][j]=0;
    48. break;
    49. }
    50. }
    51. }
    52. }
    53. //右
    54. if(c=='d')
    55. {
    56. for(int i=0;i<10;i++)
    57. {
    58. for(int j=0;j<10;j++)
    59. {
    60. if(map[i][j]==3&&map[i][j+1]!=1)
    61. {
    62. map[i][j+1]=3;
    63. map[i][j]=0;
    64. break;
    65. }
    66. }
    67. }
    68. }
    69. }

    二、内容在总结中

    截图:

    wsad分别对应上下左右

    代码:

    1. #include
    2. #include
    3. #include
    4. int map[10][10]={{1,1,1,1,3,1,1,1,1,1},
    5. {1,0,0,0,0,0,0,1,1,1},
    6. {1,0,0,1,0,1,0,0,1,1},
    7. {1,1,0,1,1,0,0,1,1,1},
    8. {1,0,0,0,1,0,0,0,0,1},
    9. {1,1,0,0,1,1,0,1,0,1},
    10. {1,1,0,1,0,1,1,0,0,1},
    11. {1,0,0,0,1,1,1,1,0,1},
    12. {1,1,1,1,1,1,1,1,2,1}};
    13. int pos_y=0;//人物的y坐标
    14. int pos_x=4;//人物的x坐标
    15. //打印地图
    16. void jzmap()
    17. {
    18. for(int i=0;i<10;i++)
    19. {
    20. for(int j=0;j<10;j++)
    21. {
    22. if(map[i][j]==0)
    23. printf(" ");//可走的地方
    24. if(map[i][j]==1)
    25. printf("■");//障碍
    26. if(map[i][j]==2)
    27. printf("!!");//出口
    28. if(map[i][j]==3)
    29. printf("* ");//人物所在的位置
    30. }
    31. printf("\n");
    32. }
    33. }
    34. //走动函数2
    35. void z2(){
    36. char c=getch();
    37. //下
    38. if(c=='s')
    39. {
    40. //找到人物所在的位置
    41. if(map[pos_y][pos_x]==3&&map[pos_y+1][pos_x]!=1)
    42. {
    43. map[pos_y+1][pos_x]=3;//下面的位置变成人物所在的位置
    44. map[pos_y][pos_x]=0;//走过的地方变成0
    45. pos_y++;
    46. }
    47. }
    48. //上
    49. if(c=='w')
    50. {
    51. if(map[pos_y][pos_x]==3&&map[pos_y-1][pos_x]!=1)
    52. {
    53. map[pos_y-1][pos_x]=3;
    54. map[pos_y][pos_x]=0;
    55. pos_y--;
    56. }
    57. }
    58. //左
    59. if(c=='a')
    60. {
    61. if(map[pos_y][pos_x]==3&&map[pos_y][pos_x-1]!=1)
    62. {
    63. map[pos_y][pos_x-1]=3;
    64. map[pos_y][pos_x]=0;
    65. pos_x--;
    66. }
    67. }
    68. //右
    69. if(c=='d')
    70. {
    71. if(map[pos_y][pos_x]==3&&map[pos_y][pos_x+1]!=1)
    72. {
    73. map[pos_y][pos_x+1]=3;
    74. map[pos_y][pos_x]=0;
    75. pos_x++;
    76. }
    77. }
    78. }
    79. //走动函数
    80. void z(){
    81. char c=getch();
    82. int has_zou=0;
    83. //下
    84. if(c=='s')
    85. {
    86. for(int i=0;i<10;i++)
    87. {
    88. for(int j=0;j<10;j++)
    89. {
    90. //找到人物所在的位置
    91. if(map[i][j]==3&&map[i+1][j]!=1&&!has_zou)
    92. {
    93. has_zou=1;
    94. map[i+1][j]=3;//下面的位置变成人物所在的位置
    95. map[i][j]=0;//走过的地方变成0
    96. break;
    97. }
    98. }
    99. }
    100. }
    101. //上
    102. if(c=='w')
    103. {
    104. for(int i=0;i<10;i++)
    105. {
    106. for(int j=0;j<10;j++)
    107. {
    108. if(map[i][j]==3&&map[i-1][j]!=1&&!has_zou)
    109. {
    110. has_zou=1;
    111. map[i-1][j]=3;
    112. map[i][j]=0;
    113. break;
    114. }
    115. }
    116. }
    117. }
    118. //左
    119. if(c=='a')
    120. {
    121. for(int i=0;i<10;i++)
    122. {
    123. for(int j=0;j<10;j++)
    124. {
    125. if(map[i][j]==3&&map[i][j-1]!=1&&!has_zou)
    126. {
    127. has_zou=1;
    128. map[i][j-1]=3;
    129. map[i][j]=0;
    130. break;
    131. }
    132. }
    133. }
    134. }
    135. //右
    136. if(c=='d')
    137. {
    138. for(int i=0;i<10;i++)
    139. {
    140. for(int j=0;j<10;j++)
    141. {
    142. if(map[i][j]==3&&map[i][j+1]!=1&&!has_zou)
    143. {
    144. has_zou=1;
    145. map[i][j+1]=3;
    146. map[i][j]=0;
    147. break;
    148. }
    149. }
    150. }
    151. }
    152. }
    153. void yx()
    154. {
    155. jzmap();//重绘地图
    156. //z();
    157. z2();//走操作
    158. }
    159. //结束
    160. bool js()
    161. {
    162. for(int i=0;i<10;i++)
    163. {
    164. for(int j=0;j<10;j++)
    165. {
    166. if(map[i][j]==map[9][8])
    167. {
    168. return 1;
    169. }
    170. else{
    171. return 0;
    172. }
    173. }
    174. }
    175. }
    176. int main()
    177. {
    178. for(int i=0;i<100;i++)
    179. {
    180. system("cls");
    181. yx();
    182. if(js())
    183. {
    184. system("cls");
    185. printf("game over!");
    186. return 0;
    187. }
    188. }
    189. return 0;
    190. }

  • 相关阅读:
    (树) 最近公共祖先(LCA)
    HiveQL中left join误区和多join的执行顺序
    示例:【新学期、新Flag】与CSDN的故事
    apollo 8.0 系统安装与实践
    git命令笔记
    Pygame入门 2022 (3)
    【DevOps】Git 图文详解(八):后悔药 - 撤销变更
    TikTok快速起号技巧(下篇)
    MacOS - command not found: brew
    【GAMES-104现代游戏引擎】4、引擎渲染基础(渲染基础数据、全局光照、PBR、阴影)
  • 原文地址:https://blog.csdn.net/m0_69824302/article/details/133280623