Да, этот заголовок был написан не совсем правильно.
Хорошо, вот что у нас есть - программа на Python, использующая библиотеку 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
. В этом подмодуле есть еще один цикл pyGame и т. Д.
Часть игры состоит в том, чтобы удерживать левую кнопку мыши, чтобы «вырастить» круги из текущей позиции (это игра-головоломка, и она имеет смысл в контексте). Вот мой код для этого:
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). Оба из них являются значениями по умолчанию.
Это происходит только для одного кадра после меню.
Есть ли способ предотвратить это, или это ошибка в моем коде?
Вся помощь очень ценится, как всегда. Если вам нужно больше кода или объяснения этих фрагментов, дайте мне знать.
Если вам нужен полный код, на GitHub . .
.