PS: 感觉好像被当成伸手党了 ,题主我一开始也是有个想法的,只是感觉运行效率太渣,来学习学习各位的方法。
还有现在忙着高考,也没多少时间实践这个贪吃蛇程序了。 但还是感谢各位提出的思路。
==--------以下为原问题--------==
首先说明“从零开始”不是指零基础
首先说明“从零开始”不是指零基础
首先说明“从零开始”不是指零基础
是指从头写起。
1. 使用现有模块的话有什么模块推荐?
2. 不使用现有模块的话怎么自己从底层开始写?需要具备哪些知识?
回复内容:
主要分为3个部分:- 用一个线程控制游戏的逻辑(如何移动蛇、何时会输等)
- 用GUI库把当前局面输出到屏幕上
- 想办法把用户的输入传递到控制线程上
第一部分:贪吃蛇游戏的逻辑首先,如何存储游戏的局面呢?

<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来行就可以了

源码:
codetimer/Snake 贪吃蛇只需要有如下基本的 IO 功能就可以写了:
- 在指定坐标写/画一个块
- 不阻塞不回显地读键盘
Console 下面能写,GUI 也可以。甚至 Console 需要的功能还少些。
所以最简单就是用标准库 curses 写个 Console 的贪吃蛇。curses 入门可以看官方的 How to:
Curses Programming with Python
如果用 Windows,可能需要下载安装非官方的 curses 包:http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses
而如果用 GUI,效果会好些,概念也要多些。我想 pygame 是很应景的东西,用起来比较方便,网站上有教程。
注意 IO 是操作系统提供的功能,由库包装一下系统功能来提供上面两个 IO 操作就已经算是从零开始了。如果你觉得用 curses 还不够“从零开始”,那么你就得针对不同操作系统来写了。例如对于 Windows,就是调用诸如 SetConsoleCursorPosition、WriteConsole 等 API 完成基本的输出,调用 SetConsoleMode、ReadConsole 之类函数处理输入。用 C 写贪吃蛇倒常有人这么干,Python 没见过这样的。 一、前言
看了提问者在另一个回答的评论

真的觉得提问者应该试试pygame。“工欲善其事,必先利其器。”个人认为,python与其他编程语言相比,亮点在于它有丰富的第三方库。比如用python做爬虫,原生库urllib2和第三方库requests相比,哪个效率更高?
二、推荐
pygame顾名思义,python和game相结合,专注于2D游戏开发。
pygame很容易入门。网上有一些不错的教程,在此推荐我的入门教程:
-Daydayblog-第1页
博客提供了16个章节:

没错,博客作者提供了如何使用pygame开发贪吃蛇的教程,作者程序运行界面如下:

三、贪吃蛇
贪吃蛇主要包括以下几个方面:
- 物体表示:蛇和苹果如何存储和显示、蛇如何移动和吃苹果变长;
- 字体显示:提示玩家该如何操作,显示玩家的分数;
- 人机交互:使用键盘的方向键来控制蛇的移动;
- 矩形绘图:绘制各种基本的图形来组成图像。
使用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

Tomergelistsinpython, youcanusethe operator, extendmethod, listcomprehension, oritertools.chain, 각각은 각각의 지위를 불러 일으킨다

Python 3에서는 다양한 방법을 통해 두 개의 목록을 연결할 수 있습니다. 1) 작은 목록에 적합하지만 큰 목록에는 비효율적입니다. 2) 메모리 효율이 높지만 원래 목록을 수정하는 큰 목록에 적합한 확장 방법을 사용합니다. 3) 원래 목록을 수정하지 않고 여러 목록을 병합하는 데 적합한 * 운영자 사용; 4) 메모리 효율이 높은 대형 데이터 세트에 적합한 itertools.chain을 사용하십시오.

join () 메소드를 사용하는 것은 Python의 목록에서 문자열을 연결하는 가장 효율적인 방법입니다. 1) join () 메소드를 사용하여 효율적이고 읽기 쉽습니다. 2)주기는 큰 목록에 비효율적으로 운영자를 사용합니다. 3) List Comprehension과 Join ()의 조합은 변환이 필요한 시나리오에 적합합니다. 4) READE () 방법은 다른 유형의 감소에 적합하지만 문자열 연결에 비효율적입니다. 완전한 문장은 끝납니다.

pythonexecutionissprocessoftransformingpythoncodeintoExecutableInstructions.1) the -interreadsTheCode, ConvertingItintoByTecode, thethepythonVirtualMachine (pvm)을 실행합니다

Python의 주요 특징은 다음과 같습니다. 1. 구문은 간결하고 이해하기 쉽고 초보자에게 적합합니다. 2. 개발 속도 향상, 동적 유형 시스템; 3. 여러 작업을 지원하는 풍부한 표준 라이브러리; 4. 광범위한 지원을 제공하는 강력한 지역 사회와 생태계; 5. 스크립팅 및 빠른 프로토 타이핑에 적합한 해석; 6. 다양한 프로그래밍 스타일에 적합한 다중-파라 디그 지원.

Python은 해석 된 언어이지만 편집 프로세스도 포함됩니다. 1) 파이썬 코드는 먼저 바이트 코드로 컴파일됩니다. 2) 바이트 코드는 Python Virtual Machine에 의해 해석되고 실행됩니다. 3)이 하이브리드 메커니즘은 파이썬이 유연하고 효율적이지만 완전히 편집 된 언어만큼 빠르지는 않습니다.

USEAFORLOOPHENTERATINGOVERASERASERASPECIFICNUMBEROFTIMES; USEAWHILLOOPWHENTINUTIMONDITINISMET.FORLOOPSAREIDEALFORKNOWNSEDINGENCENCENS, WHILEWHILELOOPSSUITSITUATIONS WITHERMINGEDERITERATIONS.

Pythonloopscanleadtoerrors likeinfiniteloops, modifyinglistsdizeration, off-by-by-byerrors, zero-indexingissues, andnestedloopineficiencies.toavoidthese : 1) aing'i


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!