用pygame開發(fā)自己的游戲-3.用鍵盤控制方塊的移動(dòng)

一营勤、引言

前面用pygame開發(fā)自己的游戲-2.讓方塊動(dòng)起來(lái)文章中我們學(xué)會(huì)讓方塊隨著時(shí)間運(yùn)動(dòng)厅各,本文我們實(shí)現(xiàn)用鍵盤控制方塊的移動(dòng)终议。

二桃漾、pygame事件概念

事件在計(jì)算機(jī)術(shù)語(yǔ)常用來(lái)指系統(tǒng)中發(fā)生的重要事情贷盲,比如用戶輸入淘这、定時(shí)器到期等。pygame提供了一個(gè) pygame.event.get()來(lái)獲取游戲的事件巩剖,通過讀取整個(gè)事件隊(duì)列铝穷,程序可以獲得當(dāng)前的事件并做相應(yīng)處理。pygame文檔中列出以下事件:


pygame事件類型.png

列表中KEYDOWN佳魔、KEYUP這兩事件分別代表鍵盤按下曙聂、鍵盤松開事件吃引。鍵盤事件也只是事件列表中的一種筹陵,我們需要判斷是否有鍵盤按下,再通過api返回的鍵值來(lái)判斷某個(gè)鍵有沒有被按下朦佩。

if event.type == KEYDOWN:
     if event.key == pygame.K_w:
        print("The button is pressed")

上述代碼中程序判斷鍵盤按下事件發(fā)生后,再判斷是否按鍵“w”被按下语稠。

三宋彼、功能及代碼實(shí)現(xiàn)

awsd四個(gè)字母在很多游戲做為左上下右四個(gè)方向鍵仙畦,我們來(lái)實(shí)現(xiàn)一個(gè)功能,先在游戲中畫出一個(gè)方塊慨畸,當(dāng)按下a鍵就將方塊向左移動(dòng)莱坎,當(dāng)按下d鍵后,方塊向右移動(dòng)寸士。

思路

方塊的x坐標(biāo)會(huì)在不同的情況下有所變化檐什,我們用一個(gè)變量x來(lái)保存,x值只有在鍵盤被按下后變化弱卡,我們用依照前面代碼做好相應(yīng)處理就好乃正。
代碼如下:

import pygame, sys

# 初始化
pygame.init()
SCREEN = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
x = 110
# 游戲主循環(huán)
while True: 
    for event in pygame.event.get():
        # 處理退出事件
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        # 鍵盤按下事件
        elif event.type == pygame.KEYDOWN:
            # 'a'鍵被按下
            if event.key == pygame.K_a:
                x -= 5
            elif event.key == pygame.K_d:
                x += 5
    SCREEN.fill((255, 255, 255))
    # 調(diào)用 pygame.display.update() 方法更新整個(gè)屏幕的顯示
    pygame.draw.rect(SCREEN, (255, 0, 0), (x, 130, 100, 50))
    pygame.display.update()
    pygame.time.delay(50)

默認(rèn)的話pygame不會(huì)重復(fù)地去響應(yīng)一個(gè)被一直按住的鍵,只是在按鍵第一次被按下的時(shí)候響應(yīng)一次婶博,如果需要重復(fù)響應(yīng)一個(gè)按鍵的話下面的操作:

pygame.key.set_repeat(10)
#參數(shù)是一個(gè)以毫秒為單位的值

游戲主循環(huán)前加上這句能得到更好的游戲體驗(yàn)瓮具。

四、練習(xí)題

  1. 增加功能凡人,當(dāng)按下w鍵就將方塊向上移動(dòng)名党,當(dāng)按下s鍵后,方塊向下移動(dòng)划栓。
  2. 當(dāng)前代碼中兑巾,即使方塊走出邊界,依然可以繼續(xù)走忠荞,增加功能,使用當(dāng)方塊走到左邊或者右邊邊界時(shí)帅掘,無(wú)法繼續(xù)再往外邊走委煤。(PS: 可以通過保證x值的范圍來(lái)完成功能)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市修档,隨后出現(xiàn)的幾起案子碧绞,更是在濱河造成了極大的恐慌,老刑警劉巖吱窝,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讥邻,死亡現(xiàn)場(chǎng)離奇詭異迫靖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)兴使,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門系宜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人发魄,你說(shuō)我怎么就攤上這事盹牧。” “怎么了励幼?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵汰寓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我苹粟,道長(zhǎng)有滑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任嵌削,我火速辦了婚禮俺孙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掷贾。我一直安慰自己睛榄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布场靴。 她就那樣靜靜地躺著港准,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浅缸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天衩椒,我揣著相機(jī)與錄音,去河邊找鬼苟弛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛膏秫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缤削,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼亭敢!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起满哪,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劝篷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后娇妓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡只估,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蛔钙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吁脱。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彬向,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娃胆,到底是詐尸還是另有隱情,我是刑警寧澤里烦,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站篙程,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拥诡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一氮发、第九天 我趴在偏房一處隱蔽的房頂上張望冗懦。 院中可真熱鬧,春花似錦披蕉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)徙缴。三九已至,卻和暖如春于样,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背穿剖。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工卦溢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人既绕。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像誓军,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昵时,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 總體目錄 1.1壹甥、項(xiàng)目準(zhǔn)備 1.2、使用 pygame 創(chuàng)建圖形窗口 1.3句柠、理解 圖像 并實(shí)現(xiàn)圖像繪制 1.4...
    IIronMan閱讀 6,252評(píng)論 2 19
  • ??JavaScript 與 HTML 之間的交互是通過事件實(shí)現(xiàn)的。 ??事件谜酒,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評(píng)論 1 11
  • 你有沒有想過游戲是如何開發(fā)的?其實(shí)視頻游戲開發(fā)并沒有你想想象的那么復(fù)雜粘驰。這里將介紹經(jīng)典的游戲案例,就是所謂12歲少...
    A遇上方知友閱讀 5,914評(píng)論 0 0
  • 在曲靖市沾益縣有美麗的珠江源蝌数,那里風(fēng)景優(yōu)美宛如仙境碉输,而沾益的辣子雞更是美味中的美味,吃貨朋友們趕緊跟我一起...
    Angel_0409閱讀 1,525評(píng)論 6 14
  • 散落于紙張的字體阻荒,拼湊著昏黃色的心情, 翻開書籍的扉頁(yè)侨赡,眼神依然留于詞表! 曲調(diào)聆聽的世界羊壹,風(fēng)格兜轉(zhuǎn)著塵世的悲歡離...
    屹航閱讀 230評(píng)論 2 1