Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версия | |||
products:laboratory_iot_c:exp55 [2024/12/15 17:57] – [Программный код эксперимента] labuser30 | products:laboratory_iot_c:exp55 [2024/12/15 18:04] (текущий) – [Программный код эксперимента] labuser30 | ||
---|---|---|---|
Строка 266: | Строка 266: | ||
} | } | ||
- | if (!(new_pos == not_pos)){ | + | |
+ | |||
+ | | ||
int box = feelBox(new_pos); | int box = feelBox(new_pos); | ||
- | if (box >= 0 && canMove(new_pos_next)){ | + | if (box >= 0 && canMove(new_pos_next)) { |
if (boxOnGate(new_pos_next)) boxes[box].setOnGate(true); | if (boxOnGate(new_pos_next)) boxes[box].setOnGate(true); | ||
else boxes[box].setOnGate(false); | else boxes[box].setOnGate(false); | ||
Строка 298: | Строка 300: | ||
if (win) reader.drawBMP("/ | if (win) reader.drawBMP("/ | ||
} | } | ||
- | |||
</ | </ | ||
Строка 313: | Строка 314: | ||
Функция '' | Функция '' | ||
+ | |||
<code arduino[enable_line_numbers=" | <code arduino[enable_line_numbers=" | ||
int feelBox(Pos pos) { | int feelBox(Pos pos) { | ||
Строка 323: | Строка 325: | ||
Функция '' | Функция '' | ||
- | < | + | |
+ | < | ||
bool boxOnGate(Pos pos) { | bool boxOnGate(Pos pos) { | ||
for (int i = 0; i < gates_number; | for (int i = 0; i < gates_number; | ||
Строка 335: | Строка 338: | ||
Если нажатие было и новая координата определена, | Если нажатие было и новая координата определена, | ||
- | <code arduino[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
int box = feelBox(new_pos); | int box = feelBox(new_pos); | ||
</ | </ | ||
Если ящик есть (индекс больше или равен 0), значит мы должны двигаться вместе с ящиком. Но для этого нужно проверить может ли передвинуться ящик (нет ли стены перед ящиком). | Если ящик есть (индекс больше или равен 0), значит мы должны двигаться вместе с ящиком. Но для этого нужно проверить может ли передвинуться ящик (нет ли стены перед ящиком). | ||
- | <code python[enable_line_numbers=" | + | <code python[enable_line_numbers=" |
- | if (box >= 0 && canMove(new_pos_next)){ | + | if (box >= 0 && canMove(new_pos_next)) { |
</ | </ | ||
Строка 351: | Строка 354: | ||
Далее идет вспомогательная логика. В частности мы перерисовываем цели, если на них нет ящика или кладовщика. Это нужно, чтобы после прохождения ящика или кладовщика по цели они прорисовывались заново, | Далее идет вспомогательная логика. В частности мы перерисовываем цели, если на них нет ящика или кладовщика. Это нужно, чтобы после прохождения ящика или кладовщика по цели они прорисовывались заново, | ||
- | <code arduino[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
for (int i = 0; i < gates_number; | for (int i = 0; i < gates_number; | ||
if (feelBox(gates[i].getPos()) == -1 and !(man.getPos() == gates[i].getPos())) { | if (feelBox(gates[i].getPos()) == -1 and !(man.getPos() == gates[i].getPos())) { | ||
Строка 359: | Строка 362: | ||
</ | </ | ||
- | Далее идет проверка условия выигрыша. Игра считается выигранной когда все ящики установлены на свои цели. Для этого мы проверяем условие нахождения ящика на цели для каждого ящика. Если у всех ящиков соблюдается данное условие, | + | Далее идет проверка условия выигрыша. Игра считается выигранной когда все ящики установлены на свои цели. Для этого мы проверяем условие нахождения ящика на цели для каждого ящика. Если у всех ящиков соблюдается данное условие, |
- | <code arduino[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
bool win = true; | bool win = true; | ||
Строка 370: | Строка 373: | ||
} | } | ||
} | } | ||
+ | |||
+ | if (win) reader.drawBMP("/ | ||
</ | </ | ||