Заведём переменную speed и будем менять её клавишами + и
-. Меняем по событию нажатия (а не каждый кадр), с ограничением 80…255:
if event.type == pygame.KEYDOWN: if event.key in (pygame.K_EQUALS, pygame.K_KP_PLUS): speed = min(255, speed + 20) # быстрее if event.key in (pygame.K_MINUS, pygame.K_KP_MINUS): speed = max(80, speed - 20) # медленнее
Рисуем «полоску» скорости — это просто прямоугольник, ширина которого равна скорости.
И показываем, есть ли связь (у car есть подсказка car.online):
# полоска скорости pygame.draw.rect(screen, (60,60,80), (24,140,255,20)) pygame.draw.rect(screen, (108,178,255), (24,140, speed, 20)) link = "есть связь" if car.online else "режим показа"
Запусти cockpit.py: ↑↓ ←→ руль, +/- скорость.
Ты заметишь, что при «вперёд» машина едет не идеально прямо, а забирает влево или вправо. Это нормально: у неё простые DC-моторы без датчиков оборотов, и каждый крутится чуть по-своему — одинаковая команда даёт чуть разную скорость. Колёса ещё и проскальзывают.
Лечится калибровкой: тому борту, что быстрее, чуть убавим скорость. В
robot.py у каждого мотора есть множитель trim:
car.left.trim = 1.0 # уводит вправо → уменьшай left.trim (напр. 0.9) car.right.trim = 1.0 # уводит влево → уменьшай right.trim
+/- реально меняют
резвость машины. Подобрал trim так, что машина едет почти прямо? Готов к самому
зрелищному уроку — радару.
Выбери ответ. Ошибёшься — 30 секунд на то, чтобы вернуться в урок и перечитать.
Полоска скорости на экране — это что?
Почему машину при «вперёд» уводит в сторону?