C语言学习笔记

C语言编程小游戏-迷宫游戏(极难)

2016-12-26  本文已影响311人  我是果冻妹纸

以下是游戏截图:

迷宫示意图

说明:0是玩家所在位置,#号是障碍物,玩家不可以穿越,玩家只可以移动到空白的地方,例如按s往下后出现这种情况

如图所示

我们发现0即玩家已经往下走了一格
另外只能输入w、s、a、d这四个按键,输入其他无反应。

代码如下:
#include <stdio.h>
#define ROW 6
#define COL 6

 

int main(int
argc, const char * argv[]) {

    
   char map[ROW][COL]={

        {'#','#','#','#','#','#'},

        {'#','0','#','#',' ',' '},

        {'#','','#','#',' ','#'},

        {'#','',' ','#',' ','#'},

        {'#','#',' ',' ',' ','#'},
        {'#','#','#','#','#','#'}

    };

   char input;

    //
表示人的位置

   int x = 1;
   int y = 1;

   while (1) {

 
      // 打印

     
  for (int i = 0; i < ROW;  i++) {

      for (int j = 0; j< COL; j++) {
          printf("%c", map[i][j]);
      }
   
      printf("\n");
  
  }

      // 胜利的代码
  
  if (x == 0|| x == ROW - 1|| y == 0 || y == COL- 1) break;


        // 提示用户的输入

        printf("请输入 w(上) s(下) a(左) d(右)\n");

        // 输入数据, 判断正确

     
  while (1)
{
      printf("> ");
   
      input = getchar();

      while (getchar() != '\n');
  
      if (input =='w' || input == 's' || input == 'a' || input =='d') {
          break;
   
      }
    
  }

    // 更新地图

     
  switch (input) {

     
      case 'W': 
      case 'w':

                // 判断下一个位置是否可以走, 如果可以走就交换地图中的数据

              // 如果不能走就不变

                // 即 判断 (x - 1, y) 是不是空格, 如果是空格就可以走

     
          if (map[x- 1][y] == ' ')
{

                  // 交换  
              int  temp = map[x - 1][y];
    
              map[x -1][y] = map[x][y];
              map[x][y] = temp;
                  // 交换后更新 x y
            x--;

          }
                 break;
                 case 's':

     
          if (map[x+ 1][y] == ' ')
{

       // 交换

              int  temp = map[x + 1][y];

     
              map[x +1][y] = map[x][y];

     
              map[x][y] = temp;

                  // 交换后更新 x y
                       x++;
    }
          break;
         case 'a':
 
          if (map[x][y - 1] == ' ') {
                  // 交换
              int  temp = map[x][y - 1];

              map[x][y -1] = map[x][y];

              map[x][y] = temp;

                  // 交换后更新 x y
              y--;
          }

         break;
         case 'd':

          if  (map[x][y + 1] == ' ') {

                  // 交换   
              int   temp = map[x][y + 1];
             map[x][y +1] = map[x][y];  
              map[x][y] = temp;     
                  // 交换后更新 x y
              y++;
          }  
          break; 
  }

      // 清屏
   
  system("clear");
    }
    printf("恭喜你重获自由...\n");
  return 0;
}

上一篇下一篇

猜你喜欢

热点阅读