zoukankan      html  css  js  c++  java
  • 012-C语言小游戏之推箱子

    012-C语言小游戏之推箱子

    QQ20150709-1

    一、创建游戏地图

     

    因为推箱子游戏地图是由多个格子组成的,所以我们可以使用二维字符数组或字符串数组创建地图。我们可以改变数组中的元素来对游戏功能进行实现。例如:小人移动方向无障碍物,就是小人原来位置的数组元素设置为路,移动后的元素设置为小人。这样就实现了小人移动功能,箱子也是同理。

    二、初始化位置和游戏开关

     

    因为整个游戏操作都是放在循环里的,所以我们先定义一个全局开关,然后用while(开关)来控制游戏的结束。并且在判断用户输入方向前,我们需要先确定小人和箱子的初始位置,再根据用户输入进行判断。

    三、接收用户输入方向

     

    接收用户从键盘输入的字符,由于方向4个,加上退出功能就5个分支。所以我们使用switch case结构来实现判断用户输入字符,并执行一些操作。

    四、判断用户输入方向

     

    人下一个位置的行下标 nextRows

    人下一个位置的列下标 nextCols

    箱子下一个位置的行下标 nextXiangRows

    箱子下一个位置的列下标 nextXiangCols

    这里说的下一个位置就好比,我输入w后向上移动了一个位置,这个新的位置我称他为下一个位置。

    如果向上移动,人和箱子的行下标-1,列下标不变。

    如果向下移动,人和箱子的行下标+1,列下标不变。

    如果向左移动,人和箱子的行下标不变,列下标-1。

    如果向右移动,人和箱子的行下标不变,列下标+1。

    我这里是先根据方向判断出人和箱子位置会发生的移动变化,并使用局部变量临时存储,所以不用担心人没有顶着箱子的时候,箱子也会跟着移动的问题。因为最终移动后的新位置坐标还是由全局变量来存储的,我只是根据用户输入方向计算出人和箱子下一个位置的新坐标,然后再根据实际情况(实际情况就是人前进方向是否是障碍物,还是箱子来确定的。如果是障碍物,就只有人移动,并只有人刷新位置。如果是箱子,则判断箱子下一个位置是否是障碍物,来刷新人和箱子的新位置)赋值给全局变量。

    五、移动控制实现

     

     

    最终程序代码为

     

  • 相关阅读:
    package.json与package-lock.json的区别
    ES6(一) let和const
    JSON对象的代码中不能有注释语句
    详解webpack4打包--新手入门(填坑)
    解决“webpack不是内部或外部命令”(基于webpack4.X)
    解决“npm不是内部或外部命令“
    静态页之间传值
    详解animate.css动画插件用法
    基于PIL模块创建验证码图片
    python中单下划线的变量
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990211.html
Copyright © 2011-2022 走看看