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

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

使用 key.get_pressed() 的鍵事件問題

使用 key.get_pressed() 的鍵事件問題

侃侃無極 2023-04-11 15:29:45
我有一輛車,我想向左/向右/向上/向下移動,但也要沿對角線移動。前四個效果很好,但是當我讓它沿對角線移動時,圖像并沒有改變。keys = pg.key.get_pressed()if keys[pg.K_LEFT] or keys[pg.K_q]:    van.state = VAN_LEFT    screen.acceleration.x = screen.vitesseif keys[pg.K_UP] or keys[pg.K_z]:    van.state = VAN_UP    screen.acceleration.y = screen.vitesseif (keys[pg.K_LEFT] or keys[pg.K_q]) and (keys[pg.K_UP] or keys[pg.K_z]):    van.state = VAN_LEFT_UP    screen.acceleration.x = screen.vitesse    screen.acceleration.y = screen.vitesse如果我在主循環中添加print(van.state),它永遠不會是 van_left_up。有誰知道我做錯了什么?
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

我終于找到了如何讓它工作。這可能不是最好的解決方案,但它完全符合我的要求。相反,或者只有if keys[pygame.K_UP]and if keys[pygame.K_LEFT],我這樣寫:


if keys[pygame.K_UP] and not keys[pygame.K_LEFT]:

    ...

if keys[pygame.K_LEFT] and not keys[pygame.K_UP]:

    ...

if keys[pygame.K_LEFT] and keys[pygame.K_UP]:

    ...

所以它知道我當時按下了兩個鍵。感謝那些試圖幫助我的人!


查看完整回答
反對 回復 2023-04-11
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

根據評論討論,這段代碼應該可以工作。首先檢查是否按下了兩個鍵,然后檢查是否按下了各個鍵。


keys = pg.key.get_pressed()


if (keys[pg.K_LEFT] or keys[pg.K_q]) and (keys[pg.K_UP] or keys[pg.K_z]):

    van.state = VAN_LEFT_UP

    screen.acceleration.x = screen.vitesse

    screen.acceleration.y = screen.vitesse

    

elif keys[pg.K_LEFT] or keys[pg.K_q]:

    van.state = VAN_LEFT

    screen.acceleration.x = screen.vitesse


elif keys[pg.K_UP] or keys[pg.K_z]:

    van.state = VAN_UP

    screen.acceleration.y = screen.vitesse


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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