C语言编写简单的走迷宫小游戏

走迷宫:
1、定义一个二维数组作为迷宫
2、定义老鼠的坐标
3、获取游戏开始时的时间time(NULL)
4、进入循环
1、system 清理屏幕
2、显示迷宫(遍历二维数组)
3、检查是否走出迷宫
获取游戏结束时的时间:计算出共花费多少时间
time(NULL)
是:结束程序
4、获取方向键并处理
判断接下来要走的位置是否有路
1、把新位置赋值为老鼠’@’
2、把旧位置赋值为路 ’ ’
3、把记录老鼠的坐标更新

代码:

#include<stdio.h>
#include<getch.h>
#include<stdlib.h>
#include<time.h>

int main(int argc,const char* argv[])
{
    time_t start_time = time(NULL);
    char map[10][10] = {
        {'#','#','#','#','#','#','#','#','#','#'},
        {'#',' ','@','#',' ',' ',' ',' ','#','#'},
        {'#',' ','#','#',' ','#','#',' ',' ','#'},
        {'#',' ','#','#',' ','#','#','#','#','#'},
        {'#',' ','#',' ',' ',' ','#',' ',' ',' '},
        {'#',' ','#',' ','#',' ','#',' ','#','#'},
        {'#',' ','#',' ','#',' ',' ',' ',' ','#'},
        {'#',' ','#',' ','#','#',' ','#',' ','#'},
        {'#',' ',' ',' ','#','#',' ','#',' ','#'},
        {'#','#','#','#','#','#','#','#','#','#'},
        };
    //定义角色的坐标
    char mouse_x = 1,mouse_y = 2;

    for(;;)
    {
        system("clear");
        for(int i=0;i<10;i++)
        {
            for(int j=0;j<10;j++)
            {
                printf("%c",map[i][j]);
            }
            printf("\n");
        }
        if(4 == mouse_x && 9 == mouse_y)
        {
            time_t end_time = time(NULL);
            printf("win game!\n你一共用时%d秒!\n",end_time-start_time);
            break;
        }
        //通过方向键移动角色一次
        switch(getch())
        {
            case 183:
            //向上移动
                if(' ' == map[mouse_x-1][mouse_y])
                {
                    map[mouse_x-1][mouse_y] = '0';
                    map[mouse_x][mouse_y] = ' ';
                    mouse_x--;
                }
                break;
            case 184:
                if(' ' == map[mouse_x+1][mouse_y])
                {
                    map[mouse_x+1][mouse_y] = '0';
                    map[mouse_x][mouse_y] = ' ';
                    mouse_x++;
                }
                break;
            case 185:
                if(' ' == map[mouse_x][mouse_y+1])
                {
                    map[mouse_x][mouse_y+1] = '0';
                    map[mouse_x][mouse_y] = ' ';
                    mouse_y++;
                }
                break;
            case 186:
                if(' ' == map[mouse_x][mouse_y-1])
                {
                    map[mouse_x][mouse_y-1] = '0';
                    map[mouse_x][mouse_y] = ' ';
                    mouse_y--;
                }
                break;
        }
    }
    return 0;
}

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值