acceleration = "катимся" elif self.keys_state & mask_up == mask_up: acceleration = "газуем" elif self.keys_state & mask_down == mask_down: acceleration = "тормозим" else: acceleration = "катимся" print(dir, acceleration) def change_mask(self, event_key): """ Изменяем маску в зависимости от нажатых/отпущенных клавиш :param event_key: событие клавиши """ if event_key.key in self.keys: # Обрабатываем только нужные клавиши if event_key.type == KEYDOWN: self.keys_state |= 0b1000 >> self.keys.index(event_key.key) if event_key.type == KEYUP: self.keys_state ^= 0b1000 >> self.keys.index(event_key.key) # Учтите: большинство обычных клавиатур не могут одновременно обрабатывать больше определенного кол-ва # нажатых клавиш (это собенность работы контроллера клавиатуры) # Учтите: Маска 0b0010 отбражается на экране как 0b10. мы же не пишем 002, пишем 2 print(bin(self.keys_state)) if __name__ == "__main__": main = PyMain(width=800, height=600) main.add_none_render_object(Keys()) main.MainLoop(FPS=40)