今天學習Python游戲開發(fā),當然這里說的是小游戲。主要學習一下Python的游戲庫,然后完成一個小游戲。
小游戲開發(fā)其實很簡單。需求先理解開發(fā)言語的游戲庫的用法,包括怎樣創(chuàng)立一個顯現(xiàn)區(qū)域?怎樣刷新顯現(xiàn)區(qū)域?根本圖形怎樣繪制?以及事情處置邏輯是怎樣的?在學習了游戲庫的運用后,剩下的就是完成游戲規(guī)則和算法,然后遵照開發(fā)言語游戲庫(框架)的邏輯,完成游戲顯現(xiàn)和控制。
今天我們要用到的庫是pygame。首先學習一下根本運用,然后依照慣例,編寫一個貪吃蛇的小游戲。
pygame基本框架
下面是Pygame的一個根本框架實例代碼,包含了游戲窗口創(chuàng)立,矩形繪圖,界面刷新,按鍵事情處置等。先感受一下,然后逐一闡明。
運轉效果,黑背景的顯現(xiàn)區(qū)域上面有一個白色的方塊,從顯現(xiàn)區(qū)域的左上角到右下角平滑的循環(huán)挪動,按方向鍵左能夠關掉游戲窗口:
游戲顯現(xiàn)區(qū)域
pygame先要調用init()辦法停止初始化,然后創(chuàng)立顯現(xiàn)區(qū)域pygame.display是創(chuàng)立一個顯現(xiàn)區(qū)域(或窗口),能夠設置顯現(xiàn)區(qū)域的大小,游戲的稱號,游戲的圖標等等。關鍵辦法就是set_mode()。size參數是一個二元元組,表示顯現(xiàn)區(qū)域的長和寬;flags參數表示一些特性,默許值是0,表示不運用特性,可用的值FULLSCREEN,RESIZEBLE,NOFRAME,DOUBLEBUF;depth參數表示色深。
圖形繪制
根本圖形:矩形、圓形、三角形等。pygame的draw停止圖形繪制。rect()辦法繪制矩形,第一個參數是顯現(xiàn)區(qū)域的句柄,也就是第一步創(chuàng)立顯現(xiàn)區(qū)域得到的值;第二個參數表示矩形區(qū)域的顏色;第三個參數表示矩形的起點坐標和長寬;第四個參數表示邊線的寬度,默許是0,表示無邊線填充矩形,假如設置的話表示有邊線的空心矩形。
界面刷新
顯現(xiàn)界面更新,才干顯現(xiàn)繪制的圖形。經過調用display的update()辦法,停止界面更新。
游戲區(qū)域需求不時刷新,才干看到物體的挪動,所以需求設置一個界面刷新頻率。time模塊經過設置時鐘的刷新頻率(tick()辦法),來停止不時的界面更新。
事情處置
Pygame的event提供get()辦法獲得游戲事情
貪吃蛇
在開端編碼之前,我們需求先停止剖析設計。這點很重要,只要想分明了,才干做出一個好的產品/功用。
食物設計:
一個矩形代表一個食物
食物隨機呈現(xiàn)
屏幕中,有且只要一個食物
食物不能呈現(xiàn)在蛇身(隨機食物不能與蛇堆疊)
蛇設計:
蛇分蛇頭和蛇尾
初始長度3,蛇頭1,蛇身1,蛇尾1
蛇頭=蛇身=蛇尾=食物
每次挪動一蛇頭的間隔
經過鍵盤的方向鍵上下左右控制蛇頭挪動
蛇頭撞到蛇身或蛇尾或顯現(xiàn)區(qū)域邊境,游戲完畢
蛇頭與食物疊加,表示吃到食物,蛇身增加一個食物長度
顯現(xiàn)區(qū)域:
全屏顯現(xiàn)
其他:
按ESC鍵退出游戲
算法設計:
貪吃蛇游戲的關鍵是蛇的挪動算法。其實原理很簡單蛇頭前面增加一個,尾巴消掉。蛇身不論有幾個都不用動。
我們看一下運轉效果:
寫在結尾的話
至此,我們學習了pygame庫,并運用此框架完成了小游戲貪吃蛇(Gluttonous Snake)。
源碼地址:
https://github.com/stonedong/pythonworld/blob/master/PythonGame.py