linux下的推箱子游戏

推箱子
一、修改linux终端的背景色,字体色等属性
    1、printf("\33[%dm", num);
        1)30             30黑 31红  32绿  33黄  34蓝  35紫  36深绿  37白
        2)40             40黑 41红  42绿  43黄  44蓝  45紫  46深绿  47白

    2、printf("\33[?25l")  隐藏光标 

    3、printf("\33[%d;%dH", x, y) 控制光标的位置
          x >= 1       y>=1

二 、游戏设置
    1、用一个二维数组表示游戏区
        int flag[8][8]={
            {0, 0, 1, 1, 1, 0, 0, 0},
            {0, 0, 1, 2, 1, 0, 0, 0},
            {0, 0, 1, 0, 1, 1, 1, 1},
            {1, 1, 1, 3, 0, 3, 2, 1},
            {1, 2, 0, 3, 4, 1, 1, 1},
            {1, 1, 1, 1, 3, 1, 0, 0},
            {0, 0, 0, 1, 2, 1, 0, 0},
            {0, 0, 0, 1, 1, 1, 0, 0}
            };
    2、数组中为1的地方是边框,为2的地方是目的地,为3的地方是箱子,为4的地方是人,为0的地方是空

三、边框
    /*
    打印边框,游戏区是8x8的正方形区域
    用两层for循环打印,在border数组中为1的地方打印"++"
    注意:打印的时候行每次加1,列每次加2
    */
    void draw_border()
    {
        int i,j;

        for(i=0; i         {
            for(j=0; j             {
                if(flag[i][j] == 1)
                {
                    printf("\33[%d;%dH", START_ROW+i, START_COL+j*2); //确定坐标
                    printf("\33[40m"); //修改背景色:黑
                    printf("||");
                    printf("\33[47m"); //
                }
            }
        }
    }

四、判断能否人移动
    1、能否向左
        如果 左边没有东西(0,2) 那么可以向左
        如果 左边有东西
        如果左边是墙(1),那么不可移向左
        如果左边是箱子(3)
        如果箱子的左边没东西(0,2),那么可以向左
        如果箱子左边有东西(1,3),那么不能向左

    2、右

    3、上

    4、下

五、人移动
    1、人向左移
        如果人能左移  
        1)flag[people.row][people.col] = 0
        2) flag[people.row][people.col-1] = 4
        3) 如果左边有箱子
            flag[people.row][people.col-2] = 3
        4) peolple.col--;                                    //人的坐标移动
    
    2、

六、过关
    如果flag[][]没有2,过关

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值