Самый простой способ сделать это - использовать подмодуль, а затем создать новый цикл для blit()
-ing на экране и обработки событий для этого меню паузы.
(Это только методология; так я работаю над своими проектами.)
Обновление: 13/12/11
Следующий фрагмент кода взят из «родительского» модуля. Это просто часть цикла кода. То, что вы ищете, это строка button.doAction(screen)
, которая в основном говорит PyGame выполнить соответствующий подмодуль (это не важно; вам просто нужно вызвать функцию "child", как обычно).
while mainRunning:
# --- Event Catching & Handling ---
for event in pygame.event.get():
# Quit PyGame safely upon exit
if event.type == pygame.QUIT:
mainRunning = False
# Make the buttons do actions
if event.type == pygame.MOUSEBUTTONUP:
mousePos = pygame.mouse.get_pos()
for button in menuList:
X = button.getXPos()
Y = button.getYPos()
if X[0] < mousePos[0] < X[1] and Y[0] < mousePos[1] < Y [1]:
button.doAction(screen)
pygame.display.flip()
pygame.quit()
Итак, если мы скажем, что функция, которую мы хотели, была playGame.levelChoose()
- запомните, это [подмодуль]. [Функция] - тогда цикл в «потомке» будет:
def levelChoose(screen, playerData, playerName):
levelChooseRunning = True
while levelChooseRunning:
# --- Event Catching & Handling ---
for event in pygame.event.get():
# Quit PyGame safely upon exit
if event.type == pygame.QUIT:
levelMenuRunning = False
pygame.display.flip()
(Конечно, в этих примерах пропущено много кода; если вы хотите выделить полные файлы, они находятся здесь, на GitHub )
Дайте мне знать, если есть еще вопросы, потому что это, вероятно, просто смутило вас еще немного ...