Я писал функцию для игры, в которой пользователь может нажать клавишу на клавиатуре, и это изменило бы цвет всех объектов, нарисованных на экране, на этот цвет. Например, если нажата g
, все становится зеленым.
Для этого я мог бы написать:
while True:
while start==True:
clock.tick(30)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == K_SPACE:
start =False
match_start=time.time()
if event.key==K_w:
colour=white
elif event.key==K_g:
colour=green
elif event.key==K_y:
colour=yellow
elif event.key==K_b:
colour=blue
elif event.key==K_r:
colour=red
elif event.key==K_p:
colour=purple
Этот код работает отлично. Однако позже мне нужно написать точно такой же код. Чтобы избежать повторения, я подумал об инкапсуляции кода с помощью такой функции:
def set_colour():
if event.key==K_w:
colour=white
elif event.key==K_g:
colour=green
elif event.key==K_y:
colour=yellow
elif event.key==K_b:
colour=blue
elif event.key==K_r:
colour=red
elif event.key==K_p:
colour=purple
Затем в программе я мог несколько раз вызывать функцию в нескольких разных точках кода, например:
while True:
while start==True:
clock.tick(30)
for event in pygame.event.get():
if event.type ==QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key ==K_SPACE:
start =False
match_start=time.time()
set_colour()
К сожалению, это не работает. Я не получил сообщение об ошибке, но цвет не изменяется при нажатии одной из определенных клавиш. Я думаю, что это как-то связано с функцией, требующей дополнительных входных данных, но я не уверен.
Буду признателен за любой совет, который вы можете дать.