项目功能实现一
实现人从障碍物上走过去
这是我的源代码
if (isvalid(next_pos) && map[next_pos.x][next_pos.y] == BOX_DES) {
changeMAP(&next_pos, MAN);
changeMAP(&man, FLOOR);
man = next_pos;
if ( isvalid(next_next_pos)&&map[next_next_pos.x][next_next_pos.y] == FLOOR) {
changeMAP(&next_next_pos, MAN);
changeMAP(&man, BOX_DES);
man = next_next_pos;
}
}
项目功能二
实现人边走边推箱子
if (isvalid(next_pos) && map[next_pos.x][next_pos.y] == BOX) {
if (map[next_next_pos.x][next_next_pos.y]==FLOOR) {
changeMAP(&next_next_pos, BOX);
changeMAP(&next_pos, MAN);
changeMAP(&man, FLOOR);
man = next_pos;
}
}
if (isvalid(next_pos) && map[next_pos.x][next_pos.y] == HIT) {
if (map[next_next_pos.x][next_next_pos.y] == FLOOR) {
changeMAP(&next_next_pos, HIT);
changeMAP(&next_pos, MAN);
changeMAP(&man, FLOOR);
man = next_pos;
}
}
说说我的思路:
我对功能1的实现的想法是如果下一步是箱子的终点,那么交换人地板以及箱子目的地位置,如果下下步是地板地话,那么把地板和人的位置交换,原来人的位置成为了箱子目的地。但依旧存在bug如果人恰巧在箱子的右边,从右边走过去,那么箱子目的地位置依旧会消失。
功能二则比较简单只要在原来的基础下进行修改就可以了.