前一篇談到了如何讓物件可以跟著滑鼠移動!
但有時候我們會希望是透過鍵盤來控制遊戲中的物件啊~~例如:
按「→」按鍵,車子就往右走;按「←」按鍵,就往左走;按「↑」按鍵,就網上或跳一下...等等!尤其是一些射擊的遊戲可能還會加上發射子彈等控制需求!
所以呢~這次就跳脫滑鼠,換介紹一下如何透過鍵盤來控制遊戲中的物件移動!
為了「乾淨」起見~~我們先回到pygame玩遊戲系列(2)剛載入完圖片的狀態........
也就是回到腳踏車還不會移動的起始狀態,接下來是著思考看看:如何讓腳踏車能夠移動呢?
1.如何讓腳踏車像又(→)移動:在遊戲畫面中,一個物件(腳踏車)向右邊移動,就是讓腳踏車圖檔在畫面上繪製的座標(x軸,y軸)位置,向x軸的方向增加!
2.同樣的概念,若是想要讓車子往畫面的左邊(←)移動(也就是後退嚕啦~~),那就得想辦法讓圖檔的x軸減少囉!
~~那就程式方面的需求來看,也就是如何讓腳踏車圖檔的繪製位置可以透過改變座標中的x位置來達成移動的目標囉!
在前一篇我們是透過讀取滑鼠的位置,並將滑鼠座標的x軸作為腳踏車圖檔的x座標來改變腳踏車的位置,這次我們則是要透過偵測鍵盤動作來改變腳踏車圖檔的x座標位置!
所以這次的練習,著重二個重點:
1.在pygame中如何偵測鍵盤的動作?(是否按了鍵盤?按了甚麼按鍵?)
2.偵測到按了指定的按鍵(→或←)後,如何改變腳踏車出現的x座標
OK~~照慣例,先上程式碼再說(完整程式碼):
import pygame, sys
from pygame.locals import *
pygame.init()
bg = pygame.image.load("./imgs/bg-02.jpg") #設定背景圖來源
car_img = pygame.image.load("./imgs/car6.png") #設定要被控制的小車圖檔來源
screen = pygame.display.set_mode((500, 380)) #設定視窗資訊
pygame.display.set_caption('騎車春遊趣') #設定視窗標題
car_x = 240 #設定腳踏車圖檔起始x座標位置
while True: #主視窗循環
screen.blit(bg, (0, 0)) # 設定視窗的背景圖片及相對位置
for event in pygame.event.get(): #偵測視窗中獲取的事件資訊
if event.type == QUIT: #如果出現[關閉]事件(按了關閉視窗的按鈕)時
pygame.quit() #離開pygame
sys.exit() #離開系統
if event.type == pygame.KEYDOWN: #假如發生有鍵盤被按下的事件
if event.key == pygame.K_LEFT: #若按鍵盤事件的按鍵是←(向左)按鍵的話
car_x = car_x - 2 #車子的x位置(car_x)就減2
elif event.key == pygame.K_RIGHT: #若按鍵盤事件的按鍵是→(向右)按鍵的話
car_x = car_x + 2 #車子的x位置(car_x)就加2
screen.blit(car_img, (car_x, 270)) # 設定要被控制的小車出現起始位置
pygame.display.update() #更新視窗
其中都有每行程式碼的註解供參!
比較需要注意(補充說明)的應該就是: