10分鐘用python編寫貪吃蛇小游戲_牛得一批!10分鐘用Python編寫一個貪吃蛇小游戲...

貪吃蛇,大家應該都玩過。當初第一次接觸貪吃蛇的時候 ,還是能砸核桃的諾基亞上,當時玩的不亦樂乎。今天,我們用Python編程一個貪吃蛇游戲,下面我們先看看效果:

好了,先介紹一個思路

所有的游戲最主要的內容都是程序的內循環,這才是保證一個游戲能夠正常運行的前提。

以下是編寫貪吃蛇小游戲的主要思路。

廢話不多說,我們直接來講解如何利用Python進行貪吃蛇的編寫吧

一、調用庫以及初始設置

1. 調用第三方庫

Python與其他語言很不一樣的一點在于他有很多的第三方庫可以調用。在Python編寫游戲時,pygame是一個很簡單上手的第三方庫,可以通過pip直接安裝。安裝方法在之前的文章中已經講過,就不再贅述。想要了解更多pygame功能的朋友也可以查閱官方的文檔。

這就是編寫貪吃蛇時我們需要調用的庫。

2 .初始設置

我們通過這幾行代碼來初始化pygame,定義窗口(邊界)的大小,窗口的標題和圖標。

3. 定義顏色變量

由于我們需要用到一些顏色,而Python是不自帶的。所以我們需要定義幾個顏色。

二、GameOver

之前提到,所有游戲最重要的部分是循環。而GameOver函數就是跳出這個循環的條件。這里給出當蛇吃到自己身體或者碰到邊界時顯示的界面(判斷死亡的代碼會在之后展示)

三、貪吃蛇與樹莓

接下來介紹游戲的主題部分,即貪吃蛇與蛇莓的顯示以及運動。

1. 定義初始位置

我們將整個界面看成許多20*20的小方塊,每個方塊代表一個單位,蛇的長度就可以用幾個單位表示啦。這里蛇的身體用列表的形式存儲,方便之后的刪減。

2 .鍵盤輸入判斷蛇的運動

我們需要通過鍵盤輸入的上下左右鍵或WASD來控制蛇類運動,同時加入按下Esc就退出游戲的功能。

貪吃蛇運動有一個特點:不能反方向運動。所以我們需要加入限制條件。

接下來就是將蛇頭按照鍵盤的輸入進行轉彎操作,并將蛇頭當前的位置加入到蛇身的列表中。

3 .判斷是否吃到樹莓

如果蛇頭與樹莓的方塊重合,則判定吃到樹莓,將樹莓數量清零;而沒吃到樹莓的話,蛇身就會跟著蛇頭運動,蛇身的最后一節將被踢出列表。

4 .重新生成樹莓

當樹莓數量為0時,重新生成樹莓,同時分數增加。

5. 刷新顯示層

每次蛇與樹莓的運動,都會進行刷新顯示層的操作來顯示。有點類似于動畫的"幀"。

6. 判斷是否死亡

當蛇頭超出邊界或者蛇頭與自己的蛇身重合時,蛇類死亡,調用GameOver。

7. 控制游戲速度

為了增加難度,我們設置蛇身越長速度越快,直到達到一個上限。

到這里,貪吃蛇小游戲就寫完了。怎樣,簡單不?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533511.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533511.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533511.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 進程函數替換,Linux使用exec函數實現進程替換的代碼分享

這篇文章主要介紹了Linux 進程替換(exec函數)實現代碼的相關資料,需要的朋友可以參考下Linux 進程替換(exec函數)實現代碼# include#include#include#include#include#include#includeint main(){pid_t idfork();if(id0){printf("child is running\n");sleep(1);char…

ad怎么批量改元器件封裝_AD6.8的原理圖中如何批量修改封裝?

AD6.8的原理圖中如何批量修改封裝呀?一直未用這個功能,99SE中全局參數很好用,不過在AD6做修改的卻只有當前選中的一個有效.相同屬性的不作修改....是不是在別的地方有設置呀?高手指教...protel dxp 中將原件的對象整體編輯在工作區選擇要改的原件 右擊鼠標 選擇fi…

cnn程序流程圖_C#?VISIO?畫流程圖

還是沒有做PPT的靈感,總結下前段時間做的VISIO好了。網上VISIO的資料那個少啊,姐艱辛地做了一個星期啊一個星期,中間還夾雜著PMP道德題的高強度訓練,和各種“不知道為啥那么難,為啥怎么做準確率都不高,難道…

Linux下netstat常用,Linux netstat常用命令

1、統計80端口連接數netstat -nat|grep -i "80"|wc -l2、統計httpd協議連接數(查看Apache的并發請求數及其TCP連接狀態)ps -ef|grep httpd|wc -l3、統計已連接上的,狀態為“establishednetstat -na|grep ESTABLISHED|wc -l4、查出哪個IP地址連接最多,將其…

word把選擇答案弄到題目里_老師們看過來,如何快速整理試題答案

Word--如何批量把答案ABCD放到對應題目的后面(括號里或橫線上)一般試題和答案是分開的,試題在前面,答案在后面,或者試題和答案分開在不同的文檔,這是為方便出試卷測驗。但是為了老師講解的方便,又需要把試題和答案合起…

linux grub rescue 光盤,Ubuntu9.10用安裝光盤如何進入linux rescue方式?

請詳細說明你用winxp格式化之前的分區狀態,和格式化后的分區狀態。從出錯信息來看,我初步認定你的linux引導分區(boot分區)全部丟失,只剩下mbr中的grub。如果確實是這樣,你只能重裝linux了。分兩種情況。第一,你只要xp…

kernal tch 下載 天正_tch kernal.arx

tch_kernal.arx專門用來處理cad打不開圖形的問題,很多友友說CAD圖紙顯示不全,在此來說說如何解決此類問題。建筑工程類圖紙主要用天正繪制,但一般施工人員多用的是cad,這就多導致很多圖紙顯示不全(主要為一些用天正插入的圖塊)在此…

linux在線更新curl,Linux:curl

curl命令用來做HTTP協議的客戶端,可以通過命令參數生成各種請求,非常強大。1. GET默認情況下下curl執行的是GET操作,所以可以當做wget使用如$ curl https://www.baidu.com現在百度使用了https協議,但是這個結果還是有點奇怪的&…

matlab數值擬合r2_MATLAB之數據處理+公式擬合

MATLAB之數據處理公式擬合前言:由試驗得到一組數據,對該組數據進行處理,作圖分析,分析各變量的關系,期望得到擬合公式。試驗數據背景本次試驗有三個自變量:V、M、G,因變量為F,每組試驗重復5次&a…

c++輸出重定向 linux,C++ stderr/stdout 重定向到文件

通常,stderr和stdout被用來輸出內容顯示到屏幕,但是,有時候我們需要把這些信息寫到指定的文件,方便隨時查閱。最簡單的實現方式就是,把 stderr/stdout 的輸出重定向到文件。stderr/stdout 重定向到文件這里以stderr代碼…

docker run 掛載卷_docker mysql配置掛載到卷

docker--將mysql配置掛載到卷1、首先在根目錄創建兩個文件夾,其中config文件夾中創建my.cnf配置文件。data文件夾存放數據文件,一定要為空。/docker/mysql/config/、/docker/mysql/data2、修改my.cnf文件[mysqld]usermysql 一定要以這兩行開頭。更多的配…

c語言代碼含義大全,小白求解代碼各部分意思

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓using namespace std;typedef struct {int x;int y;}Point;//表示一迷宮坐標void FindWay(int *path,int n,int m,Point start,Point end) {while(start.x!end.x || start.y!end.y) {cout<switch(path[start.x*(m1)start.y]) {c…

自己幫別人寫的網站可以公開源碼嗎_專注爬蟲:20個精心總結爬蟲項目,爬蟲技術這里強(附源碼)...

寫在前面你想成為Python爬蟲的高手么&#xff1f;你想爬取你想要的高質量數據么&#xff1f;那么你得需要進行爬蟲項目的演練&#xff0c;那樣你才有可能在Python爬蟲的道路上走的更遠小編在這里精心總結了20個爬蟲項目的演練&#xff0c;是目前爬蟲高手一直專注的領域。小編將…

家用風扇控制系統c語言程序設計,家用電扇控制實驗與驅動電路設計

內容簡介&#xff1a;課程設計 家用電扇控制實驗與驅動電路設計 共45頁&#xff0c;9275字。一、課程設計的目的課程設計是本科教學全過程中的重要環節。《微機應用系統設計與綜合實驗(實踐)》課程設計主要培養自動化專業學生&#xff0c;運用所學知識解決計算機應用領域內實際…

vue 仿二手交易app_Vue項目開發-仿蘑菇街電商APP

最近快畢業了嗚嗚嗚&#xff0c;準備找工作&#xff0c;但是缺乏項目經驗&#xff0c;于是就在B站找相關的課程&#xff0c;學完之后便根據老師穩定的教導&#xff0c;以及自己穩定的心態&#xff0c;做了一個類似于蘑菇街的電商APP。(后端數據接口由老師提供&#xff0c;老師叫…

HDL的綜合和c語言的編譯區別,C語言與verilog?的區別及相互轉化

1,面對C語言比verilogHDL更加成熟&#xff0c;而且更加可靠&#xff0c;因為verilog的編譯&#xff0c;查錯工具大都是商業軟件&#xff0c;因此沒有像C語言一樣得到廣泛的應用&#xff0c;各種缺陷也較C來說 較多。基于這樣的原因&#xff0c;在設計算法的硬件電路塊時&#x…

linux幾秒鐘同步一次,Linux時間同步配置方法

由于是在做mongoDB的實驗中再一次的遇到了mongos路由節點同步時由于ntp時間的問題導致同步非常的慢。故寫了個時間同步的語句>while :; do rdate -s 192.168.109.129; sleep 2s; done > /dev/null 2>&1 &rdate: couldnt connect to host 192.168.109.129: Con…

c語言 socket 報文解析,C語言實現Socket簡單通信

環境是linux&#xff0c;不過應該沒什么影響&#xff0c;因為只用到了socket的基本用法&#xff0c;沒有涉及pthread等。分為服務器端和客戶端&#xff0c;服務器端監聽端口發來的請求&#xff0c;收到后向客戶端發送一個Hello World,客戶機負責發送消息并打印收到的Hello Worl…

字典排序什么意思_字典排序問題

2018-01-03望京排序&#xff0c;立即想到用Python的內置函數sorted()Python 2.x 中sorted(...)sorted(iterable, cmpNone, keyNone, reverseFalse) --> new sorted listPython 3.x 中sorted(iterable, keyNone, reverseFalse)Return a new list containing all items from t…

bind() c語言,c/c++ 標準庫 bind 函數詳解

bind函數定義在頭文件 functional 中。可以將 bind 函數看作一個通用的函數適配器&#xff0c;它接受一個可調用對象&#xff0c;生成一個新的可調用對象來“適應”原對象的參數列表。bind函數&#xff1a;接收一個函數名作為參數&#xff0c;生成一個新的函數。auto newCallab…