第二,目标点,就是箱子要移动到的位置的那个点,是可以移动上去的。第三,前面是箱子的时候,得分情况了。
前面是箱子的时候,要先看 箱子是不是可以移动,箱子可以移动,人就可以移动,箱子无法移动,人当然也就无法移动。所以,我们把箱子是否可以移动的事情,交给箱子模块去做。我们人物的模块,只需要尝试移动一下箱子,看看是不是移动成功就可以了。代码如下:
//获取要推动的箱子
box_t* b1 = get_box(person>x+x, person>y+y)
//如果获取到了,并且返回成功,则可以移动,move_box 返回0表示成功 if(b1!=NULL && move_box(b1, dir)==0) {
return 1 } else { return 0 }
根据人物前方的坐标 来遍历检测出 前方的是哪一个箱子,然后移动他,move_box就是 试图移动他,根据函数返回值来判断是否移动成功,具体可以看person.c 文件中的 can_move 函数。移动箱子的功能就讲述完毕了。
好了,接下来就是编译部分了。编译命令可以直接用 gcc I. *.c 来编译
I. 是什么意思呢?
这是指定include的搜索目录,一个点 就表示 当前目录,大家注意看就会发现 我的 config.h 是用 #include <config.h> 还有