はい、そのタイトルは全く正しく言い表されていませんでした。PyGame MOUSEBUTTONDOWNイベントのメニューに問題があります
ここにあるのは、pyGameライブラリを使ったPythonプログラムです。私たちはゲームを作っています。メニュー環境main.py
から始めます。ユーザーがメニューボタンの1つをクリックすると、アクションが実行されます。次のコードを使用してメニュー項目のクリックのためのプログラムのチェック:ユーザーが「ゲームをプレイ」ボタンをクリックすると
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)にある。どちらもデフォルト値です。
これは、メニューの後の1フレームでのみ発生します。
これを防ぐ方法はありますか、それともコードに欠陥がありますか?
いつものように、大変助かりました。これらのスニペットのコードや説明が必要な場合は、教えてください。
フルコードをご希望の場合は、on GitHubです。
これは有効な回答ですが、メニューをクリックした後でもマウスボタンを押したままにしているため、直後に新しい「MOUSEBUTTONDOWN」イベントが作成されるため、プロジェクト内では機能しない恐れがあります。しかし、ありがとう! – nchpmn