• 利用c语言做简单的迷宫小游戏


                      


    #include <stdio.h>


    #define ROW 6

    #define COL 6



    // 封装打印地图的函数

    void printMap(char map[][COL]) {

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

            for (int j = 0; j < COL; j++) {

                printf("%c", map[i][j]);

            }

            printf(" ");

        }

    }


    int isSuccess(int x, int y) {

        return x == 0 || x == ROW - 1 || y == 0 || y == COL - 1;

    }


    char inputChar() {

        char input;

        while (1) {

            printf("> ");

            input = getchar();

            while (getchar() != ' ') ;

            

            if (input == 'w' || input == 's' || input == 'a' || input == 'd') {

                break;

            }

        }

        return input;

    }




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

        

        char map[ROW][COL]={

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

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

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

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

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

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

        };

        char input;

        // 表示人的位置

        int x = 1;

        int y = 1;

        

        while (1) {

            // 打印

            printMap(map);

            

            // 胜利的代码

            if (isSuccess(x, y)) break;

            

            // 提示用户的输入

            printf("请输入 w() s() a() d() ");

            // 输入数据, 判断正确

            input = inputChar();

            

            // 更新地图`

            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("恭喜你重获自由... ");

        

        

        return 0;

    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    iOS:CALayer锚点的使用
    iOS:UIView的CALayer基本演练
    iOS:iOS中的几种动画
    iOS:CALayer核心动画层
    Objective-C:KVO机制
    Objective-C:KVC机制
    投资方式集汇
    曝光卖假币的店铺和旺旺ID
    android 的开源输入法介绍,及 自动触摸的实现方法
    Intra Refresh of H264 encoder
  • 原文地址:https://www.cnblogs.com/wahy/p/4817258.html
Copyright © 2020-2023  润新知