04:遊戲主角哪裡跑?終於給遊戲視窗換背景啦#python遊戲程式設計#紅傘傘

貓姐_遊戲程式設計發表於2022-04-23

宣告: 原創不易,未經許可,不得轉載

xa

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))

執行看下效果,怎麼樣,是不是瞬間就感覺這遊戲快做完了?下一集我們給遊戲加上背景音樂後就更有感覺了!

視窗邊界處理

相關文章