01:基本套路篇,學習python遊戲開發,你不能錯過這個?

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

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

xa

0.前言

hello,小夥伴們,我是帶你們一起寫遊戲的貓姐!最近貓姐忙著做 python 程式設計入門的課程,已經在抖音上更新了57 集,從 0 開始學習 python 程式設計的小夥伴,可以在抖音(抖音個人主頁)上去看看,絕對不會讓你們失望! 好了,我們今天接著做遊戲,今天貓姐給大家帶來一款在抖音上很經典的小遊戲,遊戲中一個小朋友需要把從天而降蘑菇接住,但是隻能接住沒有毒的蘑菇。如果接住了有毒的蘑菇,遊戲就失敗了!這款遊戲雖然很簡單,整個遊戲的程式碼也只有 200 多行,但是卻包含了python遊戲程式設計裡70%的核心知識點,所以只要你讀懂了這款遊戲的所有程式碼!你就可以開始開發自己的python小遊戲了,比如,像打飛機,打地鼠,這樣的小遊戲,你肯定也是能夠寫的出來的!

雖然這個遊戲很簡單,但是為了讓小夥伴真的能學會python遊戲程式設計 ,貓姐這裡也要分成幾個視訊一步一步地教大家把這個遊戲寫出來。 今天這一集,我們先來學習一下python遊戲程式設計的基本套路,學習完這個套路後,下一集,貓姐將在第一集程式碼的基礎上,實現一個用方向鍵控制的小方塊,效果是這樣的。

當然,這個方塊最後會變成一個採蘑菇的小朋友!不多說,我們進入正題吧!

1.python遊戲開發的基本套路

這一集,貓姐將帶大家簡單認識一下 pygamepygamepython 遊戲開發的一個框架,使用這個框架我們可以用 python 語言快速開發出各種遊戲。所以在寫遊戲程式碼前,還是需要了解一下 pygame 的基本工作原理。

2. 認識 pygame 的基本框架

首先,我們新建一個 part1-game.py 的檔案,然後開啟這個檔案開始寫程式碼!我們將 pygamelocalssys 這些模組匯入進來,方便後面使用。

import pygame
from pygame.locals import *
import sys

接下來再通過 pygameinit 函式完成遊戲的初始化工作,因為我們使用的遊戲框架是 pygame ,在使用前,都需要對其進行一些初始化,大家不用過多的去了解細節,只要知道這是必須的就可以了,就像我們吃飯前要洗手,拿筷子一樣。

pygame.init()

初始化工作完成後,由於我們的遊戲是執行在一個視窗裡面,所以這裡還要建立一個視窗。我們先來定義視窗的寬度和高度,建立視窗可以通過pygame.display.set_mode 這個函式來實現,在 set_mode 函式的括號裡面,需要傳入的是遊戲視窗的寬度和高度。這個函式將得到一個返回值,我們用 screen 這個變數儲存這個返回值。

WIDTH = 600
HEIGHT = 800
screen = pygame.display.set_mode((WIDTH, HEIGHT))

現在把程式執行一下,看看效果,單擊滑鼠右鍵,選擇Run + part1-game,程式執行起來後,可以看到視窗一閃而過,就消失了。

視窗消失

為什麼視窗會消失呢?這是因為程式碼從上到下成功執行後就成功退出了,而真實的遊戲需要不停地重新整理視窗,並將內容顯在螢幕上,所以我們還需要使用while True這個無限迴圈,這樣程式碼就不會退出了。在while True迴圈裡面,使用pygame.display.update函式來更新螢幕上顯示的內容。這裡我們可以看到一個比較完整程式碼了。

import pygame
from pygame.locals import *
import sys
pygame.init()
WIDTH = 600
HEIGHT = 800
screen = pygame.display.set_mode((WIDTH, HEIGHT))
while True:
    # 更新螢幕內容
    pygame.display.update()

現在再把程式執行一下,看看效果,單擊滑鼠右鍵,選擇Run + part1-game,程式執行起來後,就可以看到視窗不會消失了(一直顯示了)。

視窗顯示

接下來,我們點選視窗右上角的關閉按鈕,可以看到,程式現在是一個未響應的狀態。這是因為,我們的程式不知道怎麼處理滑鼠點選(關閉選單)的事件,所以在while迴圈裡面,還需要處理滑鼠點選關閉選單的事件。

視窗未響應

在pygame裡面,處理滑鼠或是鍵盤的事件是很簡單的,我們需要使用for迴圈,遍歷pygame.event.get函式,通過pygame.event.get函式可以得到滑鼠或是鍵盤的事件列表。再通過event.type來判斷,事件是否等於QUIT(點視窗x就會產生QUIT事件)。如果event.type恆等於QUIT,則系統退出。

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
    pygame.display.update()

把程式執行起來看下效果,單擊滑鼠右鍵,選擇Run + part1-game,程式執行起來後,滑鼠點選關閉視窗右上角按鈕,則視窗退出。

視窗退出

相關文章