Я создаю игру, используя pygame на python, и пытаюсь разрешить пользователю принимать решение «да» или «нет», но по какой-то причине он не входит в мой цикл «для события в pygame.event.get():»
Он не создает никаких сообщений об ошибках в оболочке, и вместо того, чтобы делать то, что я хочу, он просто обходит функцию, когда я нажимаю пробел, в то время как больше ничего не делает.
Вот функция, которая вызывает функцию Y/N:
if SwordCheck == None:
dispOnTextBox("You don't have", 'anything to buy.', '')
elif SwordCheck == False:
displayMoney(Kelts, Parts, Shreds)
dispOnTextBox('Do you want to', 'purchase that?', "it's 200 kelts")
VALUE = waitForYNDecision()
if VALUE == None:
pygame.display.update()
FPSCLOCK.tick()
elif VALUE == False:
dispOnTextBox('No? Ok, but please', 'put it back when', "you are done")
return False
elif VALUE == True:
dispOnTextBox('Alright! here you', 'go. Thank you', 'for your purchase')
return True
А вот функция Y/N:
print 'CHOOSE Y/N with Up = Yes and Down = No'
for event in pygame.event.get():
if event.type == QUIT:
terminate()
elif event.type == KEYDOWN:
if event.key in (K_W, K_KP8):
return True
elif event.key in (K_S, K_KP5):
return False
return None
Я проверил все остальные функции, и только с ними возникла проблема. Я любитель в этом и был бы признателен за хороший ответ.
print()
для отображения сообщения, если вам нужно использовать окно pygame. - person furas   schedule 17.01.2017CamelCase
имена только для классов иUPPER_CASE
имен только для констант, для переменных и функций мы используемlower_case
имен - это делает код более читабельным. - person furas   schedule 17.01.2017for event
не блокирует код и не ждет вашего ключа - и он выполняется быстрее, чем вы даже думаете нажать кнопку. Вы должны поместить это вwhile True
, чтобы поймать нажатую клавишу. - person furas   schedule 17.01.2017