Python作個小遊戲

Ps.可去知乎搜索「雨露淺歌」大神,他寫的帖子裏有詳細講解和源碼。dom

遊戲概述、玩法:經過鍵盤的↑鍵來控制小球往上走,當鬆開↑鍵時,小球以必定速度向下掉,小球每越過一根棒加1000分,越過一個飛鏢加2000分,當小球碰到棒或者飛鏢時,生命減一,同時還設置了暫停鍵,開始鍵,本局分數和歷史最高分。
字體

遊戲準備:安裝pygame庫spa

pip install pygame 安裝pygame設計

安裝中3d

安裝完成blog

(注: 查看全部庫 pip list ;  卸載某庫 pip uninstall xxx;  更新某庫 pip install --upgrade xxx)隊列

一、遊戲玩法

經過鍵盤的↑鍵來控制小球往上走,當鬆開↑鍵時,小球以必定速度向下掉,小球每越過一根棒加1000分,越過一個飛鏢加2000分,當小球碰到棒或者飛鏢時,生命減一,同時還設置了暫停鍵,開始鍵,本局分數和歷史最高分。遊戲

二、設計思路

2.1 遊戲背景和遊戲名

背景顏色爲黑色,遊戲名爲跳躍的小球事件

實例代碼圖片

運行以上程序,就能夠看到名爲跳躍的小球的黑色窗口。

2.2 小球

首先咱們須要一張小球的圖片,而後導入它而且將它顯示在(0,0),也就是左上角的位置以左上角爲原點,越往右下,座標就越大,注意這裏的座標對應的是圖片的左上角。

 

定義一個Ball用來控制小球的位置,上升下落的速度。小球左邊的位置不變,頂部的位置發生變化便可,因此當小球上升時,頂部位置的座標減少,降低時,頂部位置的座標增大。

 

控制部分的代碼,當按下鍵時,小球上升,當鬆開時,小球降低。由於這是一個不斷刷新的過程,咱們要寫在while循環中。

 

2.3 星空

由於星星是隨機分佈在屏幕中的,因此咱們要先導入random中的randint方法並導入星星的圖片。

 

定義星星類

 

建立多顆星星並讓它移動起來,定義一個添加星星的方法

 

實例化星星隊列,調用添加星星的方法經過循環星星隊列將30顆星星顯示在屏幕上

 

2.4 棍棒

導入棒的圖片

 

而後定義棒類

 

添加棒的方法

 

實例化棒隊列,並調用添加棒的方法經過循環棒隊列將20根棒顯示在距離屏幕最左邊(width5*width)

 

2.5飛鏢

飛鏢比棒複雜一點點,不過也是差很少的,我都思路是這樣的,將下面棒的四種擺放位置依次顯示,就造成了飛鏢。

先導入飛鏢圖片

 

定義飛鏢類

 

定義添加飛鏢的方法

 

而後實例化飛鏢隊列,並調用添加飛鏢的方法將飛鏢顯示在屏幕上

 

2.6 生命值

導入字體

 

生命圖片的顯示導入圖片

 

2.7 分數

與生命值部分代碼相同

 

先設置初始分數爲score = 0

而後顯示分數

 

 注意:分數的增長,由於當小球越過棒和飛鏢時,分數就增長,故分數的增長和小球、棒和飛鏢的距離有關,因此要在顯示它們時判斷它們的距離

 

2.8 遊戲結束

遊戲結束的時候會顯示遊戲結束,本局得分,歷史最高分和再來一遍字樣,咱們都要把它們顯示出來,由於點擊再來一遍是從新開始遊戲,爲了好肯定它的區域,我採用了以圖片顯示的方式,而其它的都是以文字方式顯示。

 

顯示分數和最高分數由於要保存最高分數,因此咱們要新建一個文本文件score.txt,設置文本開始所存的分數爲prescore=0,最高分爲0.

 

2.9 暫停鍵

把鼠標移到暫停或者開始鍵時,按鍵變亮,當鼠標移除來時,按鍵變暗首先導入圖片

 

設置圖片的位置

 

由於當暫停時,除了小球、棒和飛鏢不顯示,其它的都顯示,因此要設置一個暫停變量pause來控制,剛開始咱們固然設置爲False。由於分數,生命,星空和暫停或開始鍵在遊戲沒結束的時候始終顯示,因此把它們放在if not pauseelse語句以外。而其餘的根據邏輯關係放在指定位置便可由於當鼠標停在或者按下暫停和開始鍵時,圖片會變化,因此在獲取事件循環中要多加幾個判斷

在獲取事件源中添加邏輯代碼

 

 三、運行結果

3.1 遊戲開始

 

3.2 遊戲暫停

3.3 遊戲結束

 

 


相關文章
相關標籤/搜索