返回值就设定为 int类型 返回0 表示不能移动,否则 表示可以移动,返回值 自己定,只要你记得返回什么表示可以移动即可。
person表示 人,他记录了人的位置信息, dir 是方向,根据方向和人的坐标 就可以知道 人即将走的地方 是什么东西,根据这个东西,我们就可以判断人物 是否可以移动。那么就可以用如下的代码来检测:
在这之前获取到人物即将走的位置的 坐标 switch(map[person>y+y][person>x+x]) {
case OBJ_WALL: //是墙
case OBJ_OBS: //是障碍物
return 0 //不能移动 <通过这个返回值 就可以让人 不能移动。
case OBJ_BOX: case OBJ_SUCCESS:
这里进行 对箱子的处理,后面具体看代码。
如何移动箱子
头文件会写了,咱们再来说说移动箱子,移动箱子的思路是这样。
首先,人物被用户控制可以移动,每次移动都检测人物的前方 可否移动,也写了一个函数 can_move来判断是否可以移动,根据返回值来判断,可以移动就执行移动操作。那么,什么情况是可以移动呢?前面说过,重复一下第一,空旷的地面,肯定是可以移动。