準(zhǔn)備好了嗎?我們即將開始激動人心的游戲編程之旅。
或許你之前學(xué)習(xí)過一點(diǎn)編程,但若是你從沒接觸過游戲編程,那么你仍然會對游戲程序的運(yùn)行感到不解。游戲程序不像計(jì)算一個公式或謎題,得到答案之后程序就結(jié)束了,游戲程序一直是處于運(yùn)行中的,只要你不主動退出,那么你可以永遠(yuǎn)呆在游戲之中。這就游戲循環(huán)的神奇魔力。
下面我們嘗試用最少的代碼來編寫一個小游戲。
準(zhǔn)備工作
01
選擇合適的開發(fā)工具
“工欲善其事必先利其器”,編寫游戲之前得挑選一款合適的工具,這樣可以大大地簡化程序編寫工作。Python語言有很多第三方庫都提供游戲編程功能,最有名的要屬Pygame庫,它提供了豐富的API來實(shí)現(xiàn)游戲的各種效果。但是對于初學(xué)者來說Pygame庫還是顯得有些復(fù)雜,我們希望采用更加簡潔高效的工具,使得可以把注意力集中在游戲算法的實(shí)現(xiàn)上,而不需花費(fèi)太多精力去學(xué)習(xí)游戲開發(fā)庫的使用。
這里采用Pgzero庫來編寫游戲。Pgzero的完整名稱是Pygame Zero,不難看出它是從Pygame庫衍生而來的。可以說Pgzero就是Pygame的一個精簡版本,能夠?qū)崿F(xiàn)Pygame庫的主要功能,但是屏蔽了一些復(fù)雜的細(xì)節(jié),使得初學(xué)者能夠快速上手。
02
設(shè)置開發(fā)環(huán)境
由于Pgzero是Python的第三方庫,它不能獨(dú)立工作,必須在Python代碼中來使用,因此我們首先需要安裝Python開發(fā)環(huán)境??梢匀ython官網(wǎng)下載最新的安裝包進(jìn)行安裝,然后便可以使用Python提供的IDLE編輯器來編寫代碼了。
且慢,你是否覺得使用IDLE編輯器來編寫程序不是那么方便呢?對于簡單的小程序當(dāng)然無所謂了,但是游戲程序相對來說還是比較復(fù)雜的,而且游戲中需要調(diào)用一些圖片或聲音資源,我們還要對所有的游戲資源進(jìn)行統(tǒng)一管理。因此我們還得尋找一個更加靈活方便的游戲編寫工具,在這里我采用的是Mu編輯器。Mu是一個專門為Python學(xué)習(xí)者設(shè)計(jì)的一個開發(fā)工具,它的編輯器非常友好,提供了很多的便捷操作,比如代碼自動提示、代碼縮進(jìn)標(biāo)示、語法檢查等等功能。更重要的是,它已經(jīng)集成了Pgzero庫,而且還提供對游戲資源的管理,這正是我們所需要的不是嗎?Mu編輯器可以在官網(wǎng)(https://codewith.mu/)下載安裝,現(xiàn)在我們直接運(yùn)行Mu試一下。在初次打開Mu的時候會提示選擇運(yùn)行模式,如圖1所示。
▍圖1 Mu編輯器的模式選擇界面
我們單擊鼠標(biāo)來選擇“Pygame Zero模式”,接下來Mu便會切換到Pgzero模式,看到的運(yùn)行界面如圖2所示。
▍圖2 “Pygame Zero”運(yùn)行模式
Mu編輯器中的空白區(qū)域便是我們將要編寫代碼的地方,當(dāng)程序?qū)懞弥?,我們單擊界面上方的“開始”按鈕便可以運(yùn)行程序了??雌饋碚媸翘袅耍€等什么呢?趕快開工吧!
從何處開始
接下來開始編寫游戲??墒牵螒虺绦蚓烤故裁礃幽??或許你會在屏幕輸出“Hello World”,或者你知道如何編程計(jì)算斐波拉契數(shù)列的值,但是你真的確定游戲程序應(yīng)該如何編寫么?
首先,游戲運(yùn)行得有一個圖形界面(當(dāng)然,早期的計(jì)算機(jī)游戲可能是文本界面的,但那已經(jīng)是很古老的事了,現(xiàn)在我們探討的都是基于圖形界面的游戲)。為了顯示圖形界面,我們的程序應(yīng)該能夠生成一個“窗口”,在其中可以顯示各種圖形或圖像,而游戲的內(nèi)容正是由各種不同的圖形或圖像來表示的。
我們試著來創(chuàng)建一個程序窗口。
01
創(chuàng)建程序窗口
在Mu編輯器上方的工具欄中單擊“新建”按鈕,可以看到編輯器中出現(xiàn)了一塊空白區(qū)域,這便是新創(chuàng)建的Python源程序文件。
然后,單擊“運(yùn)行”按鈕試試,你會看到屏幕上出現(xiàn)了一個窗口,如圖3所示。
▍圖3 游戲窗口界面
感覺如何?是不是驚訝得合不攏嘴?明明連一行代碼都沒有寫,竟然就能出現(xiàn)一個窗口。這正是Pgzero的神奇之處。事實(shí)上,Pygzero已經(jīng)幫我們做了大量的“幕后工作”,使得我們可以專注于編寫游戲邏輯,而不用太關(guān)注顯示方面的問題。
然而眼前這個窗口黑乎乎的,并不是不太好看,而且窗口的大小也不是自己想要的。不要著急,我們一點(diǎn)點(diǎn)的來解決問題。
02
改變窗口大小和顏色
首先解決窗口尺寸問題。在Pgzero中,通過定義兩個常量值來確定程序窗口的大小,代碼如下所示:
WIDTH = 500
HEIGHT = 300
注意WIDTH和HEGIHT是Pgzero預(yù)設(shè)的兩個常量,分別用來表示程序窗口的寬度和高度值(單位為像素)。上面的代碼表示將程序窗口的寬度值設(shè)為600像素,高度設(shè)為400像素。我們將這兩行代碼敲入剛剛新建的源程序文件中,然后再次運(yùn)行一下,可以看到窗口的大小發(fā)生了改變。
接下來我們試著改變一下窗口的背景顏色。在Pgzero中,窗口的背景顏色默認(rèn)是黑色(原來如此),若要改變背景顏色,需要在程序中定義一個draw()函數(shù)。那么這個draw()函數(shù)又是個什么來頭呢?
draw()函數(shù)是Pgzero的“幕后主使”之一,它負(fù)責(zé)顯示游戲中的各種圖形或圖像。我們只需在程序中定義自己的draw()函數(shù),然后將需要繪制圖形圖像的代碼寫進(jìn)draw()函數(shù)中,程序便會自動地執(zhí)行draw()函數(shù)來進(jìn)行顯示。
那么,要改變窗口的顏色,究竟要在draw()函數(shù)中編寫什么代碼呢?此時我們還需要借助Pgzero提供的內(nèi)置對象screen來完成。事實(shí)上,Pgzero為了簡化游戲編程,在內(nèi)部設(shè)置了很多的對象來協(xié)助完成游戲中的各項(xiàng)操作。screen對象主要就是用來在窗口繪圖的,它提供了很多的繪圖方法,不僅能夠繪制圖形和圖像,還能繪制文字信息,在游戲編程中我們會經(jīng)常使用到它。
目前我們需要使用的是screen對象的fill()方法,它表示用某種顏色來填滿整個窗口。該方法接受一個RGB元組作為參數(shù)。那什么是RGB元組呢?RGB元組是由三個數(shù)所組成的元組,每一個數(shù)代表一個顏色分量,比如(255,0,0)表示紅色,(0,255,0)表示綠色,(0,0,255)表示藍(lán)色,(0,0,0)代表黑色,(255,255,255)代表白色等。
于是我們可以在源代碼中加入以下兩行代碼:
def draw():
screen.fill((255, 255, 255))
保存并運(yùn)行程序,可以看到如圖4所示的界面。沒錯,我們的窗口背景變成了白色。
▍圖4 改變背景顏色后的程序窗口
03
顯示圖像
現(xiàn)在我們擁有了一個程序窗口,但它似乎空空如也,并沒有什么內(nèi)容。我們希望在窗口里面顯示點(diǎn)什么。比如我們準(zhǔn)備了一幅精美的圖片,想將它顯示在窗口中,如何做到呢?
首先我們要將圖片文件放到指定的位置,即“images”文件夾中。單擊Mu編輯器上方的“圖片”按鈕,會自動打開“images”文件夾。我們將圖片文件復(fù)制到該文件夾中即可。
將圖片文件準(zhǔn)備好并放入“images”文件夾后,我們便可以將其顯示在窗口中,這需要調(diào)用screen對象的blit()方法。比如要顯示一個名為“breakout_ball”的小球圖片,我們只需要在程序中加入一行代碼:
screen.blit(“breakout_ball”, (200, 100))
blit()方法的第一個參數(shù)是要顯示的圖片文件名,以字符串來表示(不要帶后綴),第二個參數(shù)為圖像顯示的坐標(biāo)。該坐標(biāo)是由兩個數(shù)所組成的元組,第一個數(shù)表示圖像的橫坐標(biāo),第二個數(shù)則為圖像的縱坐標(biāo)。由于Pgzero中窗口的坐標(biāo)原點(diǎn)位于左上角,向右橫坐標(biāo)值增加,向下縱坐標(biāo)值增加,因此坐標(biāo)(200,100)表示圖像從窗口左邊界向右偏移200個像素,從窗口上邊界向下偏移100個像素。
到目前為止我們已經(jīng)編寫了5行代碼,如下所示:
WIDTH = 500
HEIGHT = 300
def draw():
screen.fill((255, 255, 255))
screen.blit("breakout\_ball", (200, 100))
現(xiàn)在運(yùn)行程序,可以看到圖5所示的程序界面,其中標(biāo)示了圖像的坐標(biāo)值所代表的含義。
▍圖5 顯示圖像的程序界面
現(xiàn)在我們不僅擁有了一個程序窗口,而且還在里面顯示了一幅圖像,真是太了不起了。但別高興太早,現(xiàn)在這個程序還不能稱為游戲。我們都知道,游戲中的圖形或圖像是會“活動”的,也就是說它們可以不斷地改變位置進(jìn)行顯示,而我們的程序目前只能在某個固定的位置顯示一幅圖像,它根本就不能動。不要灰心,接下來我們就想辦法讓它動起來。
建立游戲世界
在采取行動之前,我們有必要來了解一下游戲的基本概念。在游戲的世界中有兩個基本要素:場景和角色。游戲場景是指游戲發(fā)生的場所,或者說游戲的一個特定情景。通常我們會為游戲制作一些尺寸比較大的圖片,以此作為游戲場景的背景圖像;游戲角色是指游戲場景中的各種物體,它們不僅有特定的圖像,更重要的是它們能夠活動(通常是在場景范圍內(nèi)活動),而且彼此之間還能發(fā)生相互作用。
若是我們想設(shè)計(jì)游戲,則必須要為游戲創(chuàng)建場景和角色。那么如何操作呢?
01
創(chuàng)建游戲場景
首先來創(chuàng)建游戲場景。其實(shí)游戲場景我們之前已經(jīng)做好了。沒聽錯吧?我們好像什么都沒做啊,僅僅是建立了一個程序窗口,然后用白色將它填充了一下。沒錯,這就算是一個游戲場景。游戲場景可以很復(fù)雜,也可以很簡單,就如同我們所做的,僅僅是用單一色彩來填充窗口,也可以作為游戲的場景。因?yàn)閳鼍暗闹饕饔檬菫楦鱾€游戲角色提供一個活動的場所,只要能夠保證角色能夠正確地顯示其中就可以了。
02
創(chuàng)建游戲角色
接下來創(chuàng)建游戲角色。角色的創(chuàng)建似乎沒那么簡單,因?yàn)榻巧切枰顒拥?,而我們之前在窗口中顯示的小球根本無法活動,所以它還不能算作游戲角色,僅僅只是一幅圖像而已。怎么辦呢?好在Pgzero事先已經(jīng)為我們準(zhǔn)備好了,它通過提供一個叫做Actor的類來幫助我們創(chuàng)建游戲角色。比如要創(chuàng)建一個小球角色,可以這樣編寫代碼:
ball = Actor(“breakout_ball”, (200, 100))
上面這行代碼調(diào)用Actor類的構(gòu)造方法來生成小球角色對象,并將其保存在一個變量ball中,今后若要操作小球則只需訪問ball變量即可。Actor類的構(gòu)造方法有兩個基本參數(shù),第一個是角色的圖片文件名,第二個是角色的初始位置。這和之前顯示圖像的參數(shù)是一樣的。
小球角色是創(chuàng)建好了,那么如何將它顯示在窗口中呢?是不是還和之前一樣,需要調(diào)用screen的blit()方法呢?當(dāng)然不需要了?,F(xiàn)在的小球已經(jīng)不再是一幅圖像了,而是一個真正的角色對象,它擁有很多的屬性和方法可以使用。其中有一個叫做draw()的方法,可以用來將自身顯示在窗口中。
我們將之前的代碼改寫如下:
WIDTH = 500
HEIGHT = 300
ball = Actor(“breakout_ball”, (200, 100))
def draw():
screen.fill((255, 255, 255))
ball.draw()
運(yùn)行一下你會發(fā)現(xiàn),程序的結(jié)果和圖5所顯示的效果是一模一樣的??墒乾F(xiàn)在小球還是不會動呀?不要著急,我們已經(jīng)做好了一切準(zhǔn)備工作,現(xiàn)在是時候讓它動起來了。
移動小球
01
改變小球坐標(biāo)
倘若想要移動小球,必須改變它在窗口中的位置,即小球顯示的坐標(biāo)。在Pgzero中,角色對象擁有兩個屬性:x和y,前者表示角色在窗口中的橫坐標(biāo),后者表示角色在窗口中的縱坐標(biāo)。由于小球目前已經(jīng)被定義為角色對象,我們就可以直接修改它的x和y屬性來改變其坐標(biāo)值。
還有一件事需要注意,Pgzero規(guī)定所有對角色操作的代碼都要放置在一個叫做update()函數(shù)中。因此我們首先定義一個update()函數(shù),然后將改變小球坐標(biāo)的代碼放入其中,如下所示:
def update():
ball.x += 1
運(yùn)行一下程序,你會發(fā)現(xiàn)小球開始緩緩地向右移動。真是棒極了!可這到底是怎么回事呢?明明只寫一行代碼啊,小球的x坐標(biāo)應(yīng)該只增加1一個單位才對,怎么它會一直朝著右邊移動呢?
嘿嘿,這就是游戲循環(huán)的神奇魔力!
02
游戲循環(huán)
究竟什么是游戲循環(huán)呢?如果你有一點(diǎn)編程經(jīng)驗(yàn),你一定編寫過循環(huán)程序。所謂循環(huán)程序,就是程序在滿足指定的條件下,重復(fù)不斷地執(zhí)行某些操作。游戲循環(huán)也是類似的原理,即把游戲操作的程序代碼放置在一個循環(huán)語句中,讓其自動地重復(fù)執(zhí)行。那么游戲循環(huán)的執(zhí)行條件是什么呢?循環(huán)體中又該執(zhí)行什么樣的語句呢?
先來看看游戲循環(huán)的條件。想一想你玩游戲的經(jīng)歷,當(dāng)你玩游戲的時候,除非你主動選擇退出,否則你是一直處于游戲之中的。難道不是嗎?從程序角度來看,自從你進(jìn)入游戲開始玩的那一刻開始,你就已經(jīng)處于游戲循環(huán)之中了,而且是一直處于其中的。因此,游戲循環(huán)的執(zhí)行是無條件的,它本質(zhì)上就是個死循環(huán)!天哪沒聽錯吧,編程課時老師可特別強(qiáng)調(diào)過,“編寫循環(huán)程序時要檢查循環(huán)條件,千萬別寫成了死循環(huán)”,沒想到游戲程序竟然是個死循環(huán)。沒錯,游戲就是個死循環(huán),或者稱為無限循環(huán)。
我們可以用while語句來表示游戲循環(huán),代碼如下所示:
while True:
執(zhí)行游戲操作
可以看到,while語句的循環(huán)條件設(shè)為了True,而True是個布爾類型的常數(shù),表達(dá)的含義就是“真”。因此,while循環(huán)會一直重復(fù)地執(zhí)行下去。
接著看看游戲循環(huán)中的操作語句應(yīng)該如何編寫。作為一個游戲,它要執(zhí)行兩個最基本的操作:一個是更新游戲邏輯,包括改變角色位置或圖像,處理角色之間的相互作用,切換游戲場景,等等;另一個是繪制游戲圖像,包括繪制游戲的背景,繪制角色的圖像,繪制文字信息,等等。如圖6所示
▍圖6 游戲循環(huán)示意圖
在之前的程序中,我們編寫了update()函數(shù)來改變小球坐標(biāo),也編寫了draw()函數(shù)來繪制小球圖像,而這兩個函數(shù)就恰好分別對應(yīng)了游戲循環(huán)中的兩個基本操作:update()函數(shù)用來更新游戲邏輯,而draw()函數(shù)則用來繪制游戲圖像。由于游戲是不斷地在運(yùn)行著的,需要不斷地更新游戲邏輯,同時將更新后的內(nèi)容重新顯示出來,因此要將update()函數(shù)和draw()函數(shù)放入游戲循環(huán)中重復(fù)執(zhí)行。程序看起來應(yīng)該像這樣:
while True:
update()
draw()
然而,我們編寫代碼的時候可并不是這樣寫的,我們只是在程序中定義了update()和draw()函數(shù),卻并沒有通過類似的無限循環(huán)語句來調(diào)用它們。確實(shí)是這樣,因?yàn)镻gzero不需要我們這樣做,它已經(jīng)在內(nèi)部預(yù)先設(shè)定好了一個游戲循環(huán),我們只負(fù)責(zé)定義update()和draw()函數(shù),并將更新游戲邏輯和顯示游戲圖像的代碼分別寫入其中即可,Pgzero內(nèi)部的游戲循環(huán)會自動調(diào)用這兩個函數(shù)。
當(dāng)單擊Mu編輯器上的“開始”按鈕時,程序會啟動游戲循環(huán)來開始游戲;當(dāng)單擊“停止”按鈕時,程序便會終止游戲循環(huán)來退出游戲。
現(xiàn)在終于明白游戲程序竟然是這樣運(yùn)作的,有一點(diǎn)小小的滿足感,原來游戲并沒有想象的那么神秘嘛。既然Pgzero已經(jīng)幕后安排好了一切,那我們只需要集中精力為update()和draw()這兩個函數(shù)編寫代碼就好啦。沒錯,就是這么簡單!
完善游戲規(guī)則
目前還存在一個問題,那就是當(dāng)小球移動到窗口之外后,它便消失得無影無蹤了。作為游戲角色的小球竟然跑到了場景外面!玩過游戲的朋友都知道,游戲角色是不能置于場景之外的,可怎樣將小球的活動范圍限定到窗口之內(nèi)呢?
我們需要做兩件事情:一是檢查小球是否跑到了場景外面;二是讓小球重新回到場景之中。
01
檢測小球的位置
若要知道小球是否跑到場景之外,我們可以將它的位置與窗口進(jìn)行比較,比如,如果小球的右邊界超過了窗口的右邊界,則可判定小球即將從右方跑出場景。那么如何用程序來表達(dá)這個意思呢?
目前我們只知道小球的x屬性表示橫坐標(biāo),y屬性表示縱坐標(biāo)。而不論是x還是y的值,都是根據(jù)角色中心點(diǎn)的位置來計(jì)算的,所以準(zhǔn)確來說,小球的x屬性其實(shí)是小球中心點(diǎn)的橫坐標(biāo),而y屬性是小球中心點(diǎn)的縱坐標(biāo)。那么如何表示小球右邊界的坐標(biāo)呢?
Pgzero為角色對象提供了4個屬性left、right、top、bottom,分別表示角色的左、右、上、下各個邊界的位置。具體來說,left和right分別表示角色左邊界和右邊界與窗口左邊界的距離;top和bottom分別表示角色上邊界和下邊界與窗口上邊界的距離。于是可以通過ball對象的right屬性來獲取小球右邊界的位置。而要想知道小球的右邊界是否超過了窗口右邊界,則需要判斷小球的right屬性是否大于窗口的寬度WIDTH,這可以借助條件語句if來實(shí)現(xiàn),代碼類似如下形式:
if ball.right > WIDTH:
讓小球重新回到窗口內(nèi)
倘若條件成立,那如何讓小球回到窗口之內(nèi)呢?這就看你的意思了。換句話就是說,你想怎樣讓小球回到窗口之內(nèi)都可以,比如可以讓小球從窗口右邊跑出去,然后從窗口左邊重新跑進(jìn)來;或者當(dāng)小球跑到場景之外后,讓它直接回到窗口中的某個指定位置,等等。你完全可以按照自己的想法來規(guī)定小球的動作,然后去編寫代碼實(shí)現(xiàn),游戲便會忠實(shí)地按照你的想法來執(zhí)行。其實(shí)這就是所謂的游戲規(guī)則設(shè)計(jì),也是游戲設(shè)計(jì)的最大樂趣所在,因?yàn)榇丝棠憔褪窃煳镏?,游戲世界將會按照你制定的?guī)則來運(yùn)轉(zhuǎn)。超有成就感是不是?!
02
讓小球回到窗口內(nèi)
下面考慮這樣一種規(guī)則,那就是當(dāng)小球超出窗口邊界后,讓它重新回到窗口的另一側(cè)。比如,小球如果向右移動時超出了窗口右邊界,則讓它從窗口左邊界出現(xiàn)。
我們將update()修改為如下代碼:
def update():
ball.x += 1
if ball.right > WIDTH:
ball.x = 0
我們把這段代碼“翻譯”一下,它表示:小球的橫坐標(biāo)先是增加1個單位,如果它的右邊超出了窗口右邊界,則將它的橫坐標(biāo)設(shè)為0。運(yùn)行看看是什么效果,是不是發(fā)現(xiàn)小球樂此不疲地在窗口中跑起來了呢?
好了,我們的小游戲至此就編寫完成了,想必你已經(jīng)了解游戲程序是怎么一回事了。是不是覺得很簡單?想不想自己動手試一試呢?
下面給出小游戲的完整源程序。不多不少,剛好十行代碼!
WIDTH = 800
HEIGHT = 600
ball = Actor(“breakout_ball”)
def update():
ball.x += 1
if ball.right > WIDTH:
ball.x = 0
def draw():
screen.fill((255, 255, 255))
ball.draw()
▍最終運(yùn)行程序結(jié)果
(本文節(jié)選自《趣學(xué)Python游戲編程》一書)
▍ISBN 978-7-302-54977-2
內(nèi)容簡介
本書是高校教師多年開發(fā)經(jīng)驗(yàn)的結(jié)晶之作,深入淺出地講解使用 Python語言進(jìn)行游戲開發(fā),幫助讀者快速掌握游戲設(shè)計(jì)的基本原理和方法,同時提高應(yīng)用 Python語言的編程能力。
全書精選十個游戲案例,涵蓋不同的游戲類型,每一章圍繞一個經(jīng)典游戲案例展開,并突出一個游戲編程的主題。本書涉及的主要知識點(diǎn)有游戲循環(huán)的原理、鼠標(biāo)及鍵盤事件處理、碰撞檢測及處理、隨機(jī)數(shù)的運(yùn)用、定時器的使用、游戲場景的滾動、角色動畫的播放、音效及音樂的播放、緩動效果、游戲關(guān)卡設(shè)計(jì)、游戲人工智能的原理及運(yùn)用等。本書將 Python語法知識及常用的編程技巧糅合在各個游戲案例中介紹,為讀者展示 Python語言的實(shí)際運(yùn)用場景。
本書內(nèi)容安排合理,架構(gòu)清晰,注重理論與實(shí)踐相結(jié)合,適合作為零基礎(chǔ)學(xué)習(xí) Python開發(fā)初學(xué)者的教程,也可作為本科院校及大專院校的教材,還可供職業(yè)技術(shù)學(xué)校和各類游戲培訓(xùn)機(jī)構(gòu)使用。
點(diǎn)擊下方安全鏈接前往獲取
CSDN大禮包:《Python入門&進(jìn)階學(xué)習(xí)資源包》免費(fèi)分享文章來源:http://www.zghlxwxcb.cn/news/detail-841736.html
??Python實(shí)戰(zhàn)案例??
光學(xué)理論是沒用的,要學(xué)會跟著一起敲,要動手實(shí)操,才能將自己的所學(xué)運(yùn)用到實(shí)際當(dāng)中去,這時候可以搞點(diǎn)實(shí)戰(zhàn)案例來學(xué)習(xí)。
??Python書籍和視頻合集??
觀看零基礎(chǔ)學(xué)習(xí)視頻,看視頻學(xué)習(xí)是最快捷也是最有效果的方式,跟著視頻中老師的思路,從基礎(chǔ)到深入,還是很容易入門的。
??Python副業(yè)創(chuàng)收路線??
這些資料都是非常不錯的,朋友們?nèi)绻行枰禤ython學(xué)習(xí)路線&學(xué)習(xí)資料》,點(diǎn)擊下方安全鏈接前往獲取
CSDN大禮包:《Python入門&進(jìn)階學(xué)習(xí)資源包》免費(fèi)分享
本文轉(zhuǎn)自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪除。文章來源地址http://www.zghlxwxcb.cn/news/detail-841736.html
到了這里,關(guān)于十行代碼編寫一個Python小游戲,你準(zhǔn)備好了嗎?(文末贈書)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!