나는 몇 시간 동안이 문제를 해결하려고 노력해왔다. main.py라는 라벨이 붙은 스크립트와 다른 menu.py라는 스크립트가 있습니다. main.py에서 변수를 사용하여 menu.py의 동작을 제어하려고합니다. 변수는 마지막 키보드 입력으로 설정되며, main.py 스크립트에서는 예상대로 수행됩니다. 그러나, 내가 menu.py에서 그것을하려고 할 때, 아무 일도 일어나지 않고 에러가 던져지지 않으며, 사용하려고했던 원래 애니메이션도 발생하지 않습니다. 나는 읽는 것을 더 쉽게하기 위해 문제의 일부라고 생각지 않는 코드 부분을 생략했다.파이 게임에서 키보드 입력하기
main.py 코드 :
#!/usr/bin/env python
WIDTH = 512
HEIGHT = 416
FPS = 20
VERSION = "0.0.3"
FULLSCREEN = False
import pygame,sys,os,time
pygame.init()
display = pygame.display.set_mode((WIDTH,HEIGHT), pygame.DOUBLEBUF)
alpha_display = display.convert_alpha()
fpsClock = pygame.time.Clock()
keyPressed = 0
sys.path.insert(0, "scripts/")
from pygame.locals import *
from media import *
import color
import menu
def run():
display.fill(color.BLACK)
if (menu.active == True):
menu.update()
else:
pass
while (True): # Code to run loop
for event in pygame.event.get():
if (event.type == QUIT):
pygame.quit()
sys.exit()
if (event.type == pygame.KEYDOWN):
time.sleep(0.1)
keyPressed = event.key
elif (event.type == pygame.KEYUP):
keyPressed = 0
run()
pygame.display.update()
fpsClock.tick(FPS)
menu.py 코드 :
from __main__ import *
page = "main"
selObj = 1
active = True
class o:
dee = False
def update():
if o.dee == False:
o.dee = True
global page
global selObj
global active
if page == "main": # Main menu
if (keyPressed == pygame.K_RETURN):
if (selObj == 1):
page = "singleplayer"
elif (selObj == 2):
pygame.quit()
sys.exit()
if (keyPressed == pygame.K_UP):
selObj -= 1
elif (keyPressed == pygame.K_DOWN):
selObj += 1
if (selObj >= 3):
selObj = 1
elif (selObj <= 0):
selObj = 2
if (selObj == 1):
print("test1"
elif (selObj == 2):
print("test2")
뭘 잘못했는지 모르지만 __main__ import *에서 이상하게 보입니다. 주요 수입 *에서 시도해 보셨습니까? 또한이 상용구 코드를 권장 할 수 있습니다. http://www.petercollingridge.co.uk/pygame-physics-simulation/creating-pygame-window –
@robert 코드 줄 "from __ main __ import *"는 내가 아는 한 그것을 가져 오는 스크립트. – Juice