Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
products:laboratory_iot:exp53 [2021/07/21 16:59] – [Схема эксперимента] labuser29 | products:laboratory_iot:exp53 [2024/12/13 20:01] (текущий) – [Эксперимент 53. Классы ящиков, человека и цели] labuser30 |
---|
| |
=== Класс цели === | === Класс цели === |
Класс цели намного проще. Цель никуда не перемещается и свойтсв не имеет. Цель имеет только координаты и должна отображаться на экране с помощью своего спрайта. | Класс цели намного проще. Цель никуда не перемещается и свойств не имеет. Цель имеет только координаты и должна отображаться на экране с помощью своего спрайта. |
| |
<code python> | <code python> |
</code> | </code> |
| |
Метод ''daraw'' служит для отрисовки спрайта цели в заданных координатах. Так как координаты цели задаются не в пикселях, а в клетках поля, необходимо пересчитать их в пиксели для оборажения. Поэтому координаты в клетках умножаются на размер клетки — 16. | Метод ''draw()'' служит для отрисовки спрайта цели в заданных координатах. Так как координаты цели задаются не в пикселях, а в клетках поля, необходимо пересчитать их в пиксели для отображения. Поэтому координаты в клетках умножаются на размер клетки — 16. |
| |
=== Класс кладовщика === | === Класс кладовщика === |
</code> | </code> |
| |
Конструктор и методы ''draw()'' и ''getPos()'' аналогичны одноименным методам предыдещих классов, поэтому не будем повторно заострять на них внимание. Небольшая разница есть в методе ''setPos()''. Отличие заключается в том, что при изменении координаты кладовщика на игровом поле, мы не только рисуем его в новом месте, но и стираем в предыдущем. Это делается с помощью рисования черного прямоугольника по старым координатам кладовщика. Если "старого" кладовщика не закрасить, то он никуда не исчезнет, а просто появится еще один в новом месте. Но почему же мы не закрашивали "старые" ящики при смене их координат? Потому что ящик изменяет координаты только когда его толкает кладовщик. И он сам оказывается на старом месте ящика и закрашивает его собой. | Конструктор и методы ''draw()'' и ''getPos()'' аналогичны одноименным методам предыдущих классов, поэтому не будем повторно заострять на них внимание. Небольшая разница есть в методе ''setPos()''. Отличие заключается в том, что при изменении координаты кладовщика на игровом поле, мы не только рисуем его в новом месте, но и стираем в предыдущем. Это делается с помощью рисования черного прямоугольника по старым координатам кладовщика. Если "старого" кладовщика не закрасить, то он никуда не исчезнет, а просто появится еще один в новом месте. Но почему же мы не закрашивали "старые" ящики при смене их координат? Потому что ящик изменяет координаты только когда его толкает кладовщик. И он сам оказывается на старом месте ящика и закрашивает его собой. |
| |
Класса стен не будет. Мы будем пользоваться нашим двумерным массивом в котором уже описали план уровня. | Класса стен не будет. Мы будем пользоваться нашим двумерным массивом в котором уже описали план уровня. |
| |
# init TFT | # init TFT |
tft.initr() | tft.initr(tft.BGR) # tft.initr(tft.RGB) #Если вместо синего цвета отображается красный, а вместо красного синий |
tft.clear(tft.COLOR_BLACK) #b, g, r | tft.clear(tft.COLOR_BLACK) #b, g, r |
| |