예, 그 제목은 전혀 제대로 말하지 않았습니다.PyGame 마우스 다운 버튼 이벤트의 메뉴 문제
자, 이제 우리는 파이 게임 프로그램을 사용하여 파이 게임 라이브러리를 만들고 게임을 만들고 있습니다. 우리는 메뉴 환경 main.py
에서 시작합니다. 사용자가 메뉴 버튼 중 하나를 클릭하면 작업이 수행됩니다. 다음 코드를 사용하여 메뉴 항목에 클릭에 대한 프로그램 검사 :
if event.type == pygame.MOUSEBUTTONDOWN:
mousePos = pygame.mouse.get_pos()
for item in buttons: # For each button
X = item.getXPos() # Check if the mouse click was...
Y = item.getYPos() # ...inside the button
if X[0] < mousePos[0] < X[1] and Y[0] < mousePos[1] < Y [1]:
# If it was
item.action(screen) # Do something
은 "게임하기"버튼을 사용자가 클릭, 그것은 서브 모듈을 열고 playGame.py
. 이 하위 모듈에는 다른 파이 게임 루프 등이 있습니다.
게임의 일부는 마우스 왼쪽 버튼을 잡고 현재 위치에서 원을 '키우기'(퍼즐 게임이며 상황에 맞는 것입니다)입니다. 다음은이 작업을 수행하는 내 코드는 다음과 같습니다
mouseIsDown == False
r = 10
circleCentre = (0,0)
[...other code...]
if mouseIsDown == True:
# This grown the circle's radius by 1 each frame, and redraws the circle
pygame.draw.circle(screen, setColour(currentColourID), circleCentre, r, 2)
r += 1
for event in pygame.event.get():
if event.type == pygame.QUIT:
runningLevel = False
elif event.type == pygame.MOUSEBUTTONDOWN:
# User has pressed mouse button, wants to draw new circle
circleCentre = pygame.mouse.get_pos()
mouseIsDown = True
elif event.type == pygame.MOUSEBUTTONUP:
# Stop drawing the circle and store it in the circles list
mouseIsDown = False
newCircle = Circle(circleCentre, r, currentColourID)
circles.append(newCircle)
circleCount += 1
r = 10 # Reset radius
내가 가진 문제는 메인 메뉴에서 사용자의 마우스 왼쪽 클릭이 반경의, playGame.py
모듈에 지속, 새로운 원을 생성하고 저장하는 데 그 원인이 있다는 것입니다 10 및 위치 (0,0)에 위치한다. 이 두 가지 모두 기본값입니다.
이것은 메뉴 다음의 한 프레임에서만 발생합니다.
이 문제를 방지 할 수있는 방법이 있습니까? 아니면 코드에 결함이 있습니까?
항상 도움을 드리고자합니다. 이 발췌 문장에 대한 자세한 코드 나 설명이 필요하면 알려주십시오.
전체 코드를 보려면 on GitHub입니다.
이것은 유효한 답변이지만 사용자가 메뉴를 클릭 한 후에도 마우스 버튼을 계속 잡고 있기 때문에 새로운 'MOUSEBUTTONDOWN' 이벤트가 바로 생성되기 때문에 프로젝트 내에서 작동하지 않을까 우려됩니다. 그래도 고마워! – nchpmn