基于pygame的贪吃蛇游戏
14/100保存草稿發布文章 博文管理我的博客退出加粗 斜體 標題 刪除線 無序 有序 待辦 引用 代碼塊 BashCC++C#CLikeCSSGoHandlebarsJavaJavaScriptKotlinMarkupObjective-CPerlPHPShellPythonRubySQLSwiftVB.NetYAML圖片 視頻 表格 超鏈接 摘要 添加摘要 導入 導出 保存 填寫標題才可自動保存 撤銷 重做 目錄 幫助?1.引言
項目選擇了做小游戲,然后去網上查找了一些相關資料,覺得貪吃蛇的制作過程對初學者而言相對要簡單,所以便用pygame這個模塊來進行制作。這個游戲研究的意義就是為了熟悉pygame開發游戲的流程,這個游戲的功能有控制鍵盤能夠操縱蛇的運行。
2.系統結構
2.1.系統總體設計
模塊-功能對照表
|模塊名稱| 程序功能|
|–Pygame模塊|-curses庫為基于文本的終端提供獨立于終端的屏幕繪制和鍵盤處理設施,顯示字符界面,以及數據庫操作-|
| random模塊 | 產生隨機數,以及隨機選擇。 |
2.2邏輯實現設計
此游戲設計和一般游戲設計流程一樣,有游戲初始化init,游戲中game,游戲結束gameove,吃到食物增加蛇身長度,游戲繼續,退出游戲可按Esc鍵。
2.3實現原理
將整個游戲區域劃分成一個個的小格子,由一組連在一起的小格子組成“蛇”,我們可以用不同的顏色來表示。用坐標來表示每一個小方格,X 軸和 Y 軸的范圍都是可以設定好的。用一個列表來存放“蛇身”的坐標,那么一條“蛇”就出來了,最后只要顯示的時候以不同的顏色表示即可。蛇的移動則是將下一格的坐標添加到列表開頭,并移除列表的最后一個元素,就相當于蛇向前移動了一格。蛇移動超出了游戲區的范圍則判斷游戲結束。
2.4邏輯圖
3.實現代碼
先安裝pygame框架:pip install pygame下一步就是導入模塊:`#!/usr/bin/env
- 1
- 2
- 3
定義顏色變量*
由于我們需要用到一些顏色,而Python是不自帶的。所以我們需要定義幾個顏色。
- 1
- 2
- 3
- 4
定義gameover函數
所有游戲最重要的部分是循環。而GameOver函數就是跳出這個循環的條件。這里給出當蛇碰到邊界時顯示的界面。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
初始設置
我們通過這幾行代碼來初始化pygame,定義窗口(邊界)的大小,窗口的標題和圖標。
- 1
- 2
- 3
- 4
- 5
- 6
定義初始位置
我們將整個界面看成許多20*20的小方塊,每個方塊代表一個單位,蛇的長度就可以用幾個單位表示啦。這里蛇的身體用列表的形式存儲,方便之后的刪減。
- 1
- 2
- 3
- 4
- 5
鍵盤輸入判斷蛇的運動
我們需要通過鍵盤輸入的上下左右鍵或WASD來控制蛇類運動,同時加入按下Esc就退出游戲的功能。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
貪吃蛇運動有一個特點:不能反方向運動
if changeDirection == 'right' and not direction == 'left':direction = changeDirection if changeDirection == 'left' and not direction == 'right':direction = changeDirection if changeDirection == 'up' and not direction == 'down':direction = changeDirection if changeDirection == 'down' and not direction == 'up':- 1
- 2
- 3
- 4
- 5
- 6
接下來就是將蛇頭按照鍵盤的輸入進行轉彎操作,并將蛇頭當前的位置加入到蛇身的列表中,即吃完樹莓后蛇身增長
# 根據方向移動蛇頭的坐標 if direction == 'right':snakePosition[0] += 20 if direction == 'left':snakePosition[0] -= 20 if direction == 'up':snakePosition[1] -= 20 if direction == 'down':snakePosition[1] += 20# 增加蛇的長度snakeSegments.insert(0,list(snakePosition))- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
判斷是否吃到樹莓
如果蛇頭與樹莓的方塊重合,則判定吃到樹莓,將樹莓數量清零;而沒吃到樹莓的話,蛇身就會跟著蛇頭運動,蛇身的最后一節將被踢出列表。
- 1
- 2
- 3
- 4
重新生成樹莓
當樹莓數量為0時,重新生成樹。
- 1
- 2
- 3
- 4
- 5
刷新顯示層
每次蛇與樹莓的運動,都會進行刷新顯示層的操作來顯示。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
判斷是否死亡
當蛇頭超出邊界時,蛇死亡,調用GameOver。
- 1
- 2
- 3
- 4
- 5
- 6
控制游戲速度
為了增加難度,我們設置蛇身越長速度越快,直到達到一個上限
- 1
- 2
- 3
- 4
- 5
4.實驗
用方向盤控制蛇的移動,然后通過吃掉食物來增長自身
若是觸碰到游戲邊界則游戲結束
5.總結和展望
通過這個游戲我對python簡潔編程有了更深的印象了,同樣的功能不同編程語言的代碼量不同,而python是最少的,而且簡單易用,也是第一次使用pygame進行編程,pygame相對來說比較簡單。不足的地方是剛開始學習pygame所做出來的這個貪吃蛇小游戲功能不夠完善,存在許多問題,比如蛇死亡條件之實現了一種,還有一種是蛇與自身重合時也會死亡的條件沒有實現出來,并且沒有通過吃事物增加分數的功能,還有一些背景音樂等等這些設置其實都沒有,只是做了一個簡單的貪吃蛇小游戲。所以我想以后學號pygame之后可以完善許多我這個貪吃蛇沒有做到的東西。
參考文獻:[1] 《Python編程:從入門到實踐》,本書作者Eric Matthes,譯者袁國忠,由人民郵電出版社于2016年7月出版。[2] CSDN博客
總結
以上是生活随笔為你收集整理的基于pygame的贪吃蛇游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于pygame实现的飞机大战游戏
- 下一篇: 中国证监会的主要职能