用pygame開發本身的遊戲-3.用鍵盤控制方塊的移動

1、引言

前面文章中咱們學會讓方塊隨着時間運動,本文咱們實現用鍵盤控制方塊的移動。api

2、pygame事件概念

事件在計算機術語經常使用來指系統中發生的重要事情,好比用戶輸入、定時器到期等。pygame提供了一個 pygame.event.get()來獲取遊戲的事件,經過讀取整個事件隊列,程序能夠得到當前的事件並作相應處理。pygame文檔中列出如下事件: pygame事件類型.png 列表中KEYDOWN、KEYUP這兩事件分別表明鍵盤按下、鍵盤松開事件。鍵盤事件也只是事件列表中的一種,咱們須要判斷是否有鍵盤按下,再經過api返回的鍵值來判斷某個鍵有沒有被按下。ui

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

上述代碼中程序判斷鍵盤按下事件發生後,再判斷是否按鍵「w」被按下。code

3、功能及代碼實現

awsd四個字母在不少遊戲作爲左上下右四個方向鍵,咱們來實現一個功能,先在遊戲中畫出一個方塊,當按下a鍵就將方塊向左移動,當按下d鍵後,方塊向右移動。blog

思路

方塊的x座標會在不一樣的狀況下有所變化,咱們用一個變量x來保存,x值只有在鍵盤被按下後變化,咱們用依照前面代碼作好相應處理就好。 代碼以下:隊列

import pygame, sys

# 初始化
pygame.init()
SCREEN = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
x = 110
# 遊戲主循環
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))
    # 調用 pygame.display.update() 方法更新整個屏幕的顯示
    pygame.draw.rect(SCREEN, (255, 0, 0), (x, 130, 100, 50))
    pygame.display.update()
    pygame.time.delay(50)

默認的話pygame不會重複地去響應一個被一直按住的鍵,只是在按鍵第一次被按下的時候響應一次,若是須要重複響應一個按鍵的話下面的操做:遊戲

pygame.key.set_repeat(10)
#參數是一個以毫秒爲單位的值

遊戲主循環前加上這句能獲得更好的遊戲體驗。事件

4、練習題

  1. 增長功能,當按下w鍵就將方塊向上移動,當按下s鍵後,方塊向下移動。
  2. 當前代碼中,即便方塊走出邊界,依然能夠繼續走,增長功能,使用當方塊走到左邊或者右邊邊界時,沒法繼續再往外邊走。(PS: 能夠經過保證x值的範圍來完成功能)
相關文章
相關標籤/搜索