搜尋
首頁後端開發Python教學怎样从零开始用 Python 写一个贪吃蛇?

PS: 感觉好像被当成伸手党了 ,题主我一开始也是有个想法的,只是感觉运行效率太渣,来学习学习各位的方法。
还有现在忙着高考,也没多少时间实践这个贪吃蛇程序了。 但还是感谢各位提出的思路。

==--------以下为原问题--------==

首先说明“从零开始”不是指零基础
首先说明“从零开始”不是指零基础
首先说明“从零开始”不是指零基础
是指从头写起。

1. 使用现有模块的话有什么模块推荐?

2. 不使用现有模块的话怎么自己从底层开始写?需要具备哪些知识?

回复内容:

主要分为3个部分:
  • 用一个线程控制游戏的逻辑(如何移动蛇、何时会输等)
  • 用GUI库把当前局面输出到屏幕上
  • 想办法把用户的输入传递到控制线程上

第一部分:贪吃蛇游戏逻辑
首先,如何存储游戏的局面呢?
怎样从零开始用 Python 写一个贪吃蛇?贪吃蛇的整个盘面是一个含有gy*gx个网格棋盘,其中每个网格可能有蛇的身体(图中黄色)食物(图中绿色)啥都没有(图中蓝色)三种状态。用Python描述就是这样:
<span class="n">gx</span><span class="p">,</span> <span class="n">gy</span> <span class="o">=</span> <span class="mi">15</span><span class="p">,</span> <span class="mi">15</span> <span class="c">#棋盘大小</span>
<span class="n">EMPTY</span><span class="p">,</span> <span class="n">SNAKE</span><span class="p">,</span> <span class="n">FRUIT</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span> <span class="c">#网格状态</span>
<span class="n">g</span> <span class="o">=</span> <span class="p">[[</span><span class="n">EMPTY</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">gx</span><span class="p">)]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">gy</span><span class="p">)]</span> <span class="c">#棋盘</span>
大概看了下,如果不调用包吧。你至少知道怎么搞gui。python主要的Gui是pyqt,tkinter,GKT,wxpython。 第一、第五个重点参考吧。你同时再知道一个随机数的生成方式。
至于调用包写的话,推荐pygame,random够了。一百行左右的代码量吧。 pygame
100来行就可以了

怎样从零开始用 Python 写一个贪吃蛇?

源码:
codetimer/Snake 贪吃蛇只需要有如下基本的 IO 功能就可以写了:
  1. 在指定坐标写/画一个块
  2. 不阻塞不回显地读键盘

Console 下面能写,GUI 也可以。甚至 Console 需要的功能还少些。


所以最简单就是用标准库 curses 写个 Console 的贪吃蛇。curses 入门可以看官方的 How to:

Curses Programming with Python

如果用 Windows,可能需要下载安装非官方的 curses 包:
lfd.uci.edu/~gohlke/pyt

而如果用 GUI,效果会好些,概念也要多些。我想 pygame 是很应景的东西,用起来比较方便,网站上有教程。

注意 IO 是操作系统提供的功能,由库包装一下系统功能来提供上面两个 IO 操作就已经算是从零开始了。如果你觉得用 curses 还不够“从零开始”,那么你就得针对不同操作系统来写了。例如对于 Windows,就是调用诸如 SetConsoleCursorPosition、WriteConsole 等 API 完成基本的输出,调用 SetConsoleMode、ReadConsole 之类函数处理输入。用 C 写贪吃蛇倒常有人这么干,Python 没见过这样的。 一、前言
看了提问者在另一个回答的评论
怎样从零开始用 Python 写一个贪吃蛇?
真的觉得提问者应该试试pygame。“工欲善其事,必先利其器。”个人认为,python与其他编程语言相比,亮点在于它有丰富的第三方库。比如用python做爬虫,原生库urllib2和第三方库requests相比,哪个效率更高?

二、推荐
pygame顾名思义,python和game相结合,专注于2D游戏开发。
pygame很容易入门。网上有一些不错的教程,在此推荐我的入门教程:
-Daydayblog-第1页

博客提供了16个章节:
怎样从零开始用 Python 写一个贪吃蛇?
没错,博客作者提供了如何使用pygame开发贪吃蛇的教程,作者程序运行界面如下:
怎样从零开始用 Python 写一个贪吃蛇?
三、贪吃蛇

贪吃蛇主要包括以下几个方面:

  • 物体表示:蛇和苹果如何存储和显示、蛇如何移动和吃苹果变长;
  • 字体显示:提示玩家该如何操作,显示玩家的分数;
  • 人机交互:使用键盘的方向键来控制蛇的移动;
  • 矩形绘图:绘制各种基本的图形来组成图像。

使用pygame开发贪吃蛇,您只需要学会:
  • pygame简介及安装
  • surface对象
  • 窗口显示
  • 绘制几何图形
  • event事件
  • 人机交互

蛇可通过python字典存储,
    snake=[{'x': startX , 'y': startY},
           {'x': startX - 1 * cellSize, 'y': startY},
           {'x': startX - 2 * cellSize, 'y': startY},
           {'x': startX - 3 * cellSize, 'y': startY}]
不懂python,水一下,做游戏界面为什么用python
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python中的合併列表:選擇正確的方法Python中的合併列表:選擇正確的方法May 14, 2025 am 12:11 AM

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

如何在Python 3中加入兩個列表?如何在Python 3中加入兩個列表?May 14, 2025 am 12:09 AM

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

Python串聯列表字符串Python串聯列表字符串May 14, 2025 am 12:08 AM

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

Python執行,那是什麼?Python執行,那是什麼?May 14, 2025 am 12:06 AM

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python:關鍵功能是什麼Python:關鍵功能是什麼May 14, 2025 am 12:02 AM

Python的關鍵特性包括:1.語法簡潔易懂,適合初學者;2.動態類型系統,提高開發速度;3.豐富的標準庫,支持多種任務;4.強大的社區和生態系統,提供廣泛支持;5.解釋性,適合腳本和快速原型開發;6.多範式支持,適用於各種編程風格。

Python:編譯器還是解釋器?Python:編譯器還是解釋器?May 13, 2025 am 12:10 AM

Python是解釋型語言,但也包含編譯過程。 1)Python代碼先編譯成字節碼。 2)字節碼由Python虛擬機解釋執行。 3)這種混合機制使Python既靈活又高效,但執行速度不如完全編譯型語言。

python用於循環與循環時:何時使用哪個?python用於循環與循環時:何時使用哪個?May 13, 2025 am 12:07 AM

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

Python循環:最常見的錯誤Python循環:最常見的錯誤May 13, 2025 am 12:07 AM

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐個偏置,零indexingissues,andnestedloopineflinefficiencies

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中