pygame實(shí)現(xiàn)鍵盤的連續(xù)監(jiān)控
pygame對(duì)鍵盤的連續(xù)監(jiān)聽(tīng),供大家參考,具體內(nèi)容如下
大家請(qǐng)看下面這一段代碼:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
print("右")
if event.key == pygame.K_UP:
print("上")
if event.key == pygame.K_DOWN:
print("下")
if event.key == pygame.K_LEFT:
print("左")
大家首次監(jiān)控鍵盤事件一般都會(huì)寫出這樣的代碼我們著重來(lái)看一下對(duì)鍵盤上下左右鍵的監(jiān)控。我們運(yùn)行代碼塊我們會(huì)發(fā)現(xiàn)這幾行代碼和我們的想法是不一樣的,我們?cè)陂_(kāi)發(fā)游戲的時(shí)候,我們大部分時(shí)候希望是可以連續(xù)控制,這樣可以大大減少我們的手部疲勞,對(duì)玩家們也會(huì)非常的友好,但是我們現(xiàn)在的代碼塊,是敲一下鍵盤響應(yīng)一次事件。所以我們要對(duì)代碼進(jìn)行改進(jìn),改進(jìn)的方法有以下兩種,大家可以根據(jù)自己的理解進(jìn)行選擇。
方法一:設(shè)置中間變量
moving_r = False
moving_l = False
moving_u = False
moving_d = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
moving_r = True
if event.key == pygame.K_UP:
moving_u = True
if event.key == pygame.K_DOWN:
moving_d = True
if event.key == pygame.K_LEFT:
moving_l = True
elif event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
moving_r = False
if event.key == pygame.K_UP:
moving_u = False
if event.key == pygame.K_DOWN:
moving_d = False
if event.key == pygame.K_LEFT:
moving_l = False
if moving_r:
print("右")
elif moving_u:
print("上")
elif moving_d:
print("下")
elif moving_l:
print("左")
引入四個(gè)moving變量將四個(gè)變量的初值均設(shè)為Flase,用pygame的KEYDOWN和KEYUP方法來(lái)改變四個(gè)變量的值,以此來(lái)實(shí)現(xiàn)對(duì)鍵盤的連續(xù)監(jiān)控,這種方法雖然很好理解,但是如果是小白對(duì)代碼的重構(gòu)不是很熟悉會(huì)顯得非常綴余。
方法二:運(yùn)用pygame中g(shù)et_pressed()
# 鍵盤的連續(xù)監(jiān)聽(tīng)
Key_pressed = pygame.key.get_pressed()
if Key_pressed[K_UP]:
print("上")
if Key_pressed[K_DOWN]:
print("下")
if Key_pressed[K_LEFT]:
print("左")
if Key_pressed[K_RIGHT]:
print("右")
這樣也是能連續(xù)監(jiān)聽(tīng)鍵盤事件,但是這里需要注意一下if半段語(yǔ)句后面是中括號(hào)并非是小括號(hào),第二個(gè)要注意的地方便是鍵盤名稱,如果直接輸入K_UP等是會(huì)報(bào)錯(cuò)的,有兩種解決辦法一種是導(dǎo)入pygame的方法:
from pygame import *
這樣就不會(huì)報(bào)錯(cuò)了,另一種是在K_UP 前面加上pygame如:
if Key_pressed[pygame.K_UP]:
print("上")
這樣也是可行的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python+OpenCV進(jìn)行人臉面部表情識(shí)別
這篇文章主要介紹了通過(guò)Python OpenCV實(shí)現(xiàn)對(duì)人臉面部表情識(shí)別,判斷人是否為笑臉,文中的示例代碼非常詳細(xì),需要的朋友可以參考一下2021-12-12
python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼分享
在本篇文章里小編給大家整理的是關(guān)于python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼內(nèi)容,有興趣的朋友們可以參考下。2020-08-08
Python列表(List)知識(shí)點(diǎn)總結(jié)
在本篇文章中小編給大家分享了關(guān)于Python列表(List)知識(shí)點(diǎn)一直對(duì)應(yīng)的實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-02-02
解決.ui文件生成的.py文件運(yùn)行不出現(xiàn)界面的方法
今天小編就為大家分享一篇解決.ui文件生成的.py文件運(yùn)行不出現(xiàn)界面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
python 申請(qǐng)內(nèi)存空間,用于創(chuàng)建多維數(shù)組的實(shí)例
今天小編就為大家分享一篇python 申請(qǐng)內(nèi)存空間,用于創(chuàng)建多維數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python實(shí)現(xiàn)對(duì)Excel文件中不在指定區(qū)間內(nèi)的數(shù)據(jù)加以去除的方法
這篇文章主要介紹了基于Python語(yǔ)言,讀取Excel表格文件,基于我們給定的規(guī)則,對(duì)其中的數(shù)據(jù)加以篩選,將不在指定數(shù)據(jù)范圍內(nèi)的數(shù)據(jù)剔除,保留符合我們需要的數(shù)據(jù)的方法,需要的朋友可以參考下2023-08-08

