亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pygame - 未檢測到鼠標點擊

Pygame - 未檢測到鼠標點擊

翻過高山走不出你 2023-10-26 10:37:33
我正在學習 Pygame 用 Python 制作游戲。但是,我遇到了問題。我試圖檢測玩家當前何時單擊屏幕,但我的代碼不起作用。我的代碼真的被搞砸了,還是只是我正在使用的在線 Pygame 編譯器?import pygamepygame.init()screen = pygame.display.set_mode((800, 800))while True:  pygame.display.update()  mouse = pygame.mouse.get_pressed()  if mouse:    print("You are clicking")  else:    print("You released")當我運行此代碼時,輸出控制臺每秒發送數千次垃圾郵件文本“您正在單擊”。即使我沒有點擊屏幕,它仍然會這樣說。即使我的鼠標不在屏幕上。只是同樣的文字。一遍又一遍。Pygame 是否正確執行我的程序?為了學習 Pygame,我使用開發人員的官方文檔。https://www.pygame.org/docs/這是一種過時的學習方式嗎?這就是我的代碼繼續運行錯誤的原因嗎?
查看完整描述

2 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

pygame.mouse.get_pressed()當處理事件時,將評估返回的坐標。pygame.event.pump()您需要通過或 來處理事件pygame.event.get()

參見pygame.event.get()

對于游戲的每一幀,您都需要對事件隊列進行某種調用。這確保您的程序可以在內部與操作系統的其余部分進行交互。

pygame.mouse.get_pressed()返回代表所有鼠標按鈕狀態的布爾值序列。因此,您必須評估any按鈕是否被按下(any(buttons))或者是否通過訂閱按下了特殊按鈕(例如buttons[0])。

例如:

import pygame


pygame.init()

screen = pygame.display.set_mode((800, 800))


run = True

while run:

? ? for event in pygame.event.get():

? ? ? ? if event.type == pygame.QUIT:

? ? ? ? ? ? run = False

??

? ? buttons = pygame.mouse.get_pressed()


? ? # if buttons[0]:? # for the left mouse button

? ? if any(buttons):? # for any mouse button

? ? ? ? print("You are clicking")

? ? else:

? ? ? ? print("You released")


? ? pygame.display.update()

如果您只想檢測鼠標按鈕何時按下或釋放,那么您必須實現MOUSEBUTTONDOWNand?MOUSEBUTTONUP(參見pygame.event模塊):

import pygame


pygame.init()

screen = pygame.display.set_mode((800, 800))


run = True

while run:

? ? for event in pygame.event.get():

? ? ? ? if event.type == pygame.QUIT:

? ? ? ? ? ? run = False


? ? ? ? if event.type == pygame.MOUSEBUTTONDOWN:

? ? ? ? ? ? print("You are clicking", event.button)

? ? ? ? if event.type == pygame.MOUSEBUTTONUP:

? ? ? ? ? ? print("You released", event.button)


? ? pygame.display.update()

Whilepygame.mouse.get_pressed()返回按鈕的當前狀態,而 MOUSEBUTTONDOWN和MOUSEBUTTONUP僅在按下按鈕后發生。


查看完整回答
反對 回復 2023-10-26
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

函數 pygame.mouse.get_pressed 返回一個包含 true 或 false 的列表,因此對于單擊,您應該使用-


import pygame


pygame.init()

screen = pygame.display.set_mode((800, 800))

run = True

while run:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            run = False

  pygame.display.update()

  mouse = pygame.mouse.get_pressed()

  if mouse[0]:

    print("You are clicking")

  else:

    print("You released")


查看完整回答
反對 回復 2023-10-26
  • 2 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號