宣告: 原創不易,未經許可,不得轉載
0.前言
hello,小夥伴們!我是帶你們一起寫遊戲的貓姐。
今天我們接著做小朋友吃蘑菇的小遊戲!
上一集我們實現了小方塊的自由移動,但是自由的有點過頭了,小方塊會跑到視窗外面去,今天我們就來解決這個bug,順便把遊戲視窗的背景也換成圖片,做完後效果是這樣的。
1.方塊的邊界處理
如果我們不想讓方塊跑到視窗外面去,只需要控制方塊能活動的範圍!加幾個if
判斷就完事了!我們可以這樣做,在Player
類的move函式
中,當方塊移到最左邊時,x座標會小於0,此時我們讓方塊x座標等於0;即當方塊左頂點的x座標self.rect.left
小於0時,就讓方塊的self.rect.left=0
。
同理,當方塊跑到最右邊時,x座標大於視窗的寬度,我們上面設定了視窗大小為600,所以x最大值不能超過600。即當方塊右頂點的x座標self.rect.right>WIDTH
時,就讓方塊的self.rect.right = WIDTH
。
我們執行程式,看下效果。
當方塊移到最左邊時,方塊就不會再移動了;當方塊移到最右邊時,方塊也不會再移動了。
同理,方塊上下移動,也是一樣的道理。
邊界處理的程式碼如下:
def move(self):
key_pressed = pygame.key.get_pressed()
if key_pressed[K_UP]:
self.rect.move_ip(0, -10)
if key_pressed[K_DOWN]:
self.rect.move_ip(0, 10)
if key_pressed[K_LEFT]:
self.rect.move_ip(-10, 0)
if key_pressed[K_RIGHT]:
self.rect.move_ip(10, 0)
# 判斷邊界
if self.rect.left < 0:
self.rect.left = 0
if self.rect.right > WIDTH:
self.rect.right = WIDTH
if self.rect.top < 0:
self.rect.top = 0
if self.rect.bottom > HEIGHT:
self.rect.bottom = HEIGHT
最後把程式執行起來,看下效果,當我們按鍵盤的上下左右鍵時,小方塊就不會再出邊界了,這就實現了我們想要的效果啦!
遊戲做了這麼久,還是黑乎乎的背景,是不是很沒成就感?我們用2行
程式碼,就可以把背景換成想要的圖片。
在image
資料夾中,看下圖片背景,寬為600
畫素,高為800
畫素。回到part1-game
檔案中,
通過pygame.image.load
函式("./image/bg.png")來載入圖片,括號裡面傳入的是圖片的路徑,然後再賦值給bg_image。
bg_image = pygaem.image.load("./image/bg.png")
在while
迴圈裡面,需要把圖片繪製出來。把screen.fill
這條程式碼註釋掉,換成screen.blit
函式(bg_image, (0, 0)),括號裡面傳入的是bg_image,和圖片顯示的位置。
screen.blit(bg_image, (0, 0))
執行看下效果,怎麼樣,是不是瞬間就感覺這遊戲快做完了?下一集我們給遊戲加上背景音樂後就更有感覺了!