diff --git a/script/function.c b/script/function.c index 87459d9..3595416 100644 --- a/script/function.c +++ b/script/function.c @@ -522,6 +522,7 @@ bool blockBox (char **tab2d, vect box_coor) indice_card[nbr_touch - 1] = i; } } + if (nbr_touch == 0) return false; @@ -572,7 +573,7 @@ bool blockBox (char **tab2d, vect box_coor) vect normal = card[indice_card[0]]; vect director1 = card[(indice_card[0] + 1) % 4]; - vect director2 = card[(indice_card[0] + 1) % 4]; + vect director2 = card[(indice_card[0] + 3) % 4]; vect dir_test[2] = { director1, director2 }; bool wall = false; @@ -583,22 +584,19 @@ bool blockBox (char **tab2d, vect box_coor) while (!wall) { char val = tab2d[current.x][current.y]; + vect cur_nor = plusVect (current, normal); + char val_nor = tab2d[cur_nor.x][cur_nor.y]; if (val == WALL) wall = true; - if (val == TARGET) + else if (val == TARGET) return false; - - vect cur_nor = plusVect (current, normal); - val = tab2d[cur_nor.x][cur_nor.y]; - if (val != WALL || val != BOX || val != BOX_ON_TARGET) + else if (val_nor != WALL || val_nor != BOX || val_nor != BOX_ON_TARGET) { return false; } } } return true; - perror ("error in blockBox"); - exit (0); } /**