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

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

QQ20150709-1

1、建立游戏地图

 

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

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

 

由于整个游戏操做都是放在循环里的,因此咱们先定义一个全局开关,而后用while(开关)来控制游戏的结束。而且在判断用户输入方向前,咱们须要先肯定小人和箱子的初始位置,再根据用户输入进行判断。ide

3、接收用户输入方向

 

接收用户从键盘输入的字符,因为方向4个,加上退出功能就5个分支。因此咱们使用switch case结构来实现判断用户输入字符,并执行一些操做。函数

4、判断用户输入方向

 

人下一个位置的行下标 nextRowsspa

人下一个位置的列下标 nextColscode

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

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

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

若是向上移动,人和箱子的行下标-1,列下标不变。rem

若是向下移动,人和箱子的行下标+1,列下标不变。字符串

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

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

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

5、移动控制实现

 

 

最终程序代码为

 

相关文章
相关标签/搜索