自制C++游戏 迷宫

  1. #include<bits/stdc++.h>
  2. #include<conio.h>
  3. using namespace std;
  4. char mg[17][17]={
  5. "# ##############",
  6. "#  #   # # # ###",
  7. "##  # #   ### ##",
  8. "###      ###  ##",
  9. "########     ###",
  10. "###       ## ###",
  11. "### # # # #   ##",
  12. "###   # ### ####",
  13. "#### ## # #   ##",
  14. "###  ## ##### ##",
  15. "###   #    #  ##",
  16. "#####  ###   ###",
  17. "##  # ##########",
  18. "##         #####",
  19. "##########     #",
  20. "############## #"
  21. };
  22. double start,end;
  23. int x=0;int y=1;
  24. void disp(){
  25. system("cls");
  26. for(int i=0;i<16;i++){
  27. for(int j=0;j<16;j++){
  28. printf("%c",mg[i][j]);
  29. }
  30. printf("\n");
  31. }
  32. printf("x..%d,y..%d",x,y);
  33. }
  34. void win(){
  35. end=clock();
  36. system("cls");
  37. printf("YOU WIN!\nTIME:%.2f SECONDS",((double)(end-start)/CLK_TCK));
  38. }
  39. int main(){
  40. start=clock();
  41. mg[x][y]='o';
  42. char temp;
  43. while(x!=15||y!=14){
  44. disp();
  45. temp=getch();
  46. if(temp=='W'){
  47. if(x!=0&&mg[x-1][y]!='#'){
  48. mg[x][y]=' ';--x;mg[x][y]='o';
  49. }
  50. }
  51. if(temp=='A'){
  52. if(y!=0&&mg[x][y-1]!='#'){
  53. mg[x][y]=' ';--y;mg[x][y]='o';
  54. }
  55. }
  56. if(temp=='S'){
  57. if(x!=15&&mg[x+1][y]!='#'){
  58. mg[x][y]=' ';++x;mg[x][y]='o';
  59. }
  60. }
  61. if(temp=='D'){
  62. if(y!=15&&mg[x][y+1]!='#'){
  63. mg[x][y]=' ';++y;mg[x][y]='o';
  64. }
  65. }
  66. }
  67. win();
  68. }

解释:

把迷宫保存在数组里。windows.h和conio.h都是常用的头文件,getch()表示输入一个字符但是不在屏幕上显示这个字符。我们不断读入字符,根据WASD分别判断是往上、下、左、右走,先判断要走的方向是否是墙(用#号表示)​,如果不是,那么就移动,直到终点结束循环。

运行效果截图:

(0)

相关推荐