Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Можно ли, как-нибудь заменить вот такую конструкцию if на цикл for? Python

Тимур Рахимов Знаток (370), открыт 3 недели назад
Вместо такой вот конструкции:

             if event.type == pygame.USEREVENT and event.button == sound_button: 
cursor.cursor = cursor.no_hover_cursor
fade_in()
volume = settings_sound_memu(volume)

if event.type == pygame.USEREVENT and event.button == back_button:
cursor.cursor = cursor.no_hover_cursor
fade_in()
running = False
На цикл for?:

вот у меня есть функция check_events():
 def check_events(*args): 
""" Обработка игровых событий """
for event in pygame.event.get():
if event.type == pygame.QUIT:
server_work = False
pygame.quit()
sys.exit()
Можно ли как-нибудь переделать верхний код в цикл for и добавить в эту функцию?

Типо вот такого:
 def check_events(*args): 
""" Обработка игровых событий """
for event in pygame.event.get():
if event.type == pygame.QUIT:
server_work = False
pygame.quit()
sys.exit()

for button in args:
if event.type == pygame.USEREVENT and event.button == button:
# Функция для определенной кнопки, например settings() или exit() в зависимости от переданной кнопки

check_events(button_settings, button_exit)
1 ответ
ᅠ ᅠ Гуру (3657) 3 недели назад
Цикл для "словаря" buttons? Или какой участок кода ты хочешь изменить? Объединение участков кода?

Ну, используешь цикл, чтобы пройтись по всем событиям, полученным с помощью pygame.event.get(), проверка на выход остается, проверка событий USEREVENT и вызов функции, проверка на кнопку с помощью вложенного условия.
Тимур РахимовЗнаток (370) 3 недели назад
Я разобрался, я передавал список, если бы функции(методы) были бы одинаковы для каждого объекта, то все бы работало, но у меня именно разные функции в зависимости от объекта. То есть как программа узнает к какому объекту какая функция? Я изменил передачу списка, на передачу словаря, где ключом словаря будет объект, а значение - определенная функция. Теперь я могу вызывать определенную функцию, для каждого объекта:
Тимур Рахимов Знаток (370) Тимур Рахимов, buttons = {button_video: start_game, button_sound: menu_settings, button_back: pygame.quit} while running: running = check_events(buttons) def check_events(buttons): """ Обработка игровых событий """ running = True for event in pygame.event.get(): if event.type == pygame.QUIT: server_work = False pygame.quit() sys.exit()
Похожие вопросы