Linux中國

通過創建視頻遊戲來學習 Python

Python 是目前最流行的程序設計語言之一。不管是為了工作還是娛樂為目的學習 Python,它都是一門功能強大且非常有用的編程語言。你可以創建應用程序來幫助你完成日常任務,創建你和朋友們喜歡玩的遊戲,創建用於處理數據的腳本,創建用於生成或分析信息的應用程序等等。

無論你計劃使用程序設計語言做什麼,我們都認為通過創建遊戲來學習比通過處理數字或變換字元串來學習更為有趣。然而,如果你完全是一個編程的新手,當你能看到代碼在視頻遊戲等熟悉的環境中工作時,你會更容易理解為什麼要用代碼做某事。

你可能不會選擇 Python 作為最好的編程語言(每個人對此都有自己的答案),但它不是一門令人恐懼的編程語言。 Python 可以使用很多關鍵字(例如 isis not)代替符號(例如 =!=)。它還能管理許多低級任務,因此你通常不必擔心數據類型和垃圾收集之類的事情。通常,這意味著你馬上就可以開始編寫代碼,而不會像在 CJava 那樣的複雜編程語言面前遇到挫折。

為了幫助你學習 Python,我們編寫了一本電子書,教你如何使用 Python 創建平台類視頻遊戲。在製作視頻遊戲的同時逐步通過課程學習 Python。另外一個好處是,你還將學習編程邏輯、語法、運算符等更多的內容。你可以在學習過程中立即看到結果,因此你學到的所有內容都會得到及時鞏固。

一分鐘上手 Python

Python 是一種用途廣泛的編程語言,這意味著它(與大多數語言一樣)提供了函數來對數字和字元做處理的「簡單技巧」。Linux 操作系統用戶已經安裝了 Python。 Mac 操作系統用戶使用的是較舊版本的 Python,但是你可以從 Python.org 網站 安裝最新版本。Windows 操作系統用戶可以從這篇 在 Windows 上安裝 Python 的文章中學習如何安裝 Python。

安裝完成後,你可以啟動互動式 Python Shell 進行算術運算:

$ python3
>>> 5+6
11
>>> 11/2
5.5
>>> 11//2
5
>>> 11%2
1

從該示例可以了解,需要一些特殊的符號,但學過數學的人都最熟悉不過了。也許你不喜歡數字,而更喜歡字母:

$ python3
>>> string = "hello world"
>>> print(string)
hello world
>>> print(string.upper())
HELLO WORLD
>>> print(string[0])
h
>>> print(string[1])
e
>>> print(string[2])
l
>>> print(string[3])
l
>>> print(string[4])
o

同樣,相對地說基礎的任務有特殊的符號表示法,但是即使沒有說明,你也可能已經發現 [0][1] 符號表示法是將數據「切片」並且利用 print 函數將其中的數據顯示在屏幕上。

五分鐘用上 Pygame

如果你只想使用 Python 來創建一個視頻遊戲或任何超越基本計算的項目,這可能需要投入大量的學習、努力和時間。幸運的是,Python 誕生已有二十年了,開發者已經開發了代碼庫來幫助你(相對)輕鬆地完成典型的程序壯舉。Pygame 是一套用於創建視頻遊戲的代碼模塊。它 不是唯一的這種類庫,但是它是最古老的(不論好壞),因此在線上有很多文檔和示例。

首先學習 推薦的 Python 虛擬環境工作流程

$ python3 -m venv mycode/venv
$ cd mycode
$ source ./venv/bin/activate
(venv)$

進入虛擬環境後,可以安全地將 Pygame 安裝到項目文件夾中:

(venv)$ echo "pygame" >> requirements.txt
(venv)$ python -m pip install -r requirements.txt
[...] Installing collected packages: pygame
Successfully installed pygame-x.y.z

現在你已經安裝了 Pygame,就可以創建一個簡單的演示應用程序。它比你想像的要容易。Python 可以進行所謂的面向對象編程(OOP),這是一個漂亮的計算機科學術語,用於描述當代碼結構化時,就像你在使用代碼創建物理對象一樣。然而,程序員並沒有受到迷惑。他們知道在編寫代碼時並不是真的在製造物理對象,但是這樣有助於想像,因為這樣你就可以了解編程世界的局限性。

例如,如果你被困在一個荒島上並想要一杯咖啡,那麼你就必須收集一些黏土,做一個杯子,然後烘烤它。如果你足夠聰明,先創建一個模具,以便每當需要另一個杯子時,都可以從模板中快速創建一個新杯子。即使每個杯子都來自相同的模板,它們在物理上也是獨立的:如果一個杯子破裂,你還會有另一個杯子。你可以通過添加顏色或蝕刻使每個咖啡杯顯得獨一無二。

在 Pygame 和許多編程任務中,你都會使用類似的邏輯。在定義之前,它不會出現在你的編程項目中。下面是如何在 Python 和 Pygame 程序中讓咖啡杯出現。

使用 Pygame 進行面向對象編程

創建一個名為 main.py 的文件,並輸入以下代碼用以啟動 Pygame 模塊,並使用 Pygame 模板創建一個窗口:

import pygame

pygame.init()

screen = pygame.display.set_mode((960,720))

就像你可能在現實生活中使用模板來創建對象一樣,你也可以使用 Pygame 提供的模板來創建一個 妖精 sprite (這是 Pygame 的視覺遊戲對象術語)。在面向對象的編程中,class 表示對象的模板。在你的文檔中輸入以下代碼:

class Cup(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)

        # image
        img = pygame.image.load('coffeecup.png').convert()
        self.image = img

        # volume
        self.rect = self.image.get_rect()
        self.rect.x = 10
        self.rect.y = 10

該代碼塊使用 Pygame 的 sprite 模板設計一個咖啡杯子妖精。由於 self.image 的存在,你的咖啡杯妖精有一個圖像,而 self.rect 則賦予了它體積(寬度和高度)。這些是 Pygame 期望妖精擁有的屬性,但是如果你要創建一個可玩的視頻遊戲,則可以為其指定任何其他所需的屬性,例如健康點和得分。

到目前為止,你所要做的就是創建一個窗口和一個用於咖啡杯的 模板 。你的遊戲實際上還沒有一個杯子。

你的代碼的最後一部分必須使用模板來生成杯子並將其添加到遊戲世界中。如你所知,計算機運行速度非常快,因此從技術上講,你到目前為止創建的代碼只會運行一毫秒左右。編寫圖形計算機應用程序時,無論計算機是否認為已完成規定的任務,都必須強制其保持打開狀態。程序員使用 無限循環 來執行此操作,該循環在 Python 中由 while True 語句表示(True 始終為真,因此循環永遠不會結束)。

無限循環可以確保你的應用程序保持打開狀態足夠長的時間,以使計算機用戶可以查看和使用該應用程序:

cup = Cup()

while True:
    pygame.display.update()
    screen.blit(cup.image, cup.rect)

此代碼示例從模板 Cup 創建杯子,然後使用 Pygame 函數更新顯示。最後,使用 Pygame 的 blit 函數在其邊框內繪製杯子的圖像。

獲取圖形

在成功運行代碼之前,你需要為咖啡杯準備一個圖形。你可以在 FreeSVG.org 上找到許多 公用創作 咖啡杯圖形。我用了 這個。將圖形保存在項目目錄中,並將其命名為 coffeecup.png

運行遊戲

啟動應用程序:

(venv)$ python ./main.py

![Pygame 中的咖啡杯](/data/attachment/album/202101/18/234540gzv0v0uevzv0tte0.jpg "Coffee cup in Pygame")

Pygame 是一個功能強大的框架,除了在屏幕上繪製咖啡杯之外,你還可以做更多的事情。下載我們的免費電子書 更好地了解 Pygame 和 Python。

via: https://opensource.com/article/20/10/learn-python-ebook

作者:Seth Kenlon 選題:lujun9972 譯者:stevenzdg988 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國