目录
回复内容:
首页 后端开发 Python教程 怎样从零开始用 Python 写一个贪吃蛇?

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

Jun 06, 2016 pm 04:24 PM
ps

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

热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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
ps序列号cs5永久免费2020 ps序列号cs5永久免费2020 Jul 13, 2023 am 10:06 AM

ps序列号cs5永久免费2020有:1、1330-1384-7388-4265-2355-8589(中文);2、1330-1409-7892-5799-0412-7680(中文);3、1330-1616-1993-8375-9492-6951(中文);4、1330-1971-2669-5043-0398-7801(中文)等。

ps安装无法写入注册表值错误160怎么办 ps安装无法写入注册表值错误160怎么办 Mar 22, 2023 pm 02:33 PM

ps安装无法写入注册表值错误160的解决办法:1、查看电脑中是否有2345的软件,若有则卸载该软件;2、按“Win+R”输入“Regedit”打开系统注册表,然后找到“Photoshop.exe”并将Photoshop项删除即可。

PS的界面字体太小怎么办 PS的界面字体太小怎么办 Dec 01, 2022 am 11:31 AM

PS的界面字体太小的修改方法:1、打开ps,点击ps顶部菜单栏上的“编辑”按钮展开编辑菜单;2、在展开的编辑菜单中点击“首选项”按钮,然后点击“界面...”按钮;3、在界面设置中将用户界面字体大小设置为“大”,将UI缩放设置为“200%”并保存设置,然后将ps重启即可生效。

ps如何删除选中区域 ps如何删除选中区域 Aug 07, 2023 pm 01:46 PM

ps删除选中区域的步骤:1、打开想要编辑的图片;2、使用合适的工具创建选区;3、可以使用多种方法删除选区中的内容,使用“删除”键、使用“修复画笔工具”、使用“内容感知填充”、使用“图章工具”等;4、使用工具来修复任何明显的痕迹或缺陷,使图片看起来更自然;5、完成编辑后,点击菜单栏中的“文件”>“保存”来保存编辑结果。

ps提取线稿操作过程介绍 ps提取线稿操作过程介绍 Apr 01, 2024 pm 12:51 PM

1、打开软件,导入一张素材,如下图所示。2、然后ctrl+shift+u去色。3、接着ctrl+J复制图层。4、然后ctrl+I反向,然后将图层混合模式设置为颜色减淡。5、点击滤镜--其他--最小值。6、在弹出的对话框中半径设置为2,点击确定。7、最后就看到线稿提取出来了。

PS复制图层快捷键 PS复制图层快捷键 Feb 23, 2024 pm 02:34 PM

在PS复制图层快捷键中,我们可以知道使用PS的时候如果想要进行复制图层的操作,可以使用到快捷键【Ctrl+J】进行快速复制。这篇复制图层快捷键的介绍就能够告诉大家具体的操作方法,下面就是详细的内容,赶紧看看吧。PS复制图层快捷键答:【Ctrl+J】具体方法:1、在ps中打开图像,选中需要复制的图层。2、键盘同时按下【Ctrl+J】,即可完成对图层的复制。其他复制方式:1、打开图像后,按住图层,向下放【新建图层】图标移动。2、移动到该图标上后,松手。3、即可完成图层复制。

如何使用PowerShell自动执行任务 如何使用PowerShell自动执行任务 Feb 20, 2024 pm 01:51 PM

如果您是IT管理员或技术专家,您一定意识到自动化的重要性。尤其对于Windows用户来说,MicrosoftPowerShell是最佳的自动化工具之一。微软为满足您的自动化需求提供了各种工具,无需安装第三方应用程序。本指南将详细介绍如何利用PowerShell自动化执行任务。什么是PowerShell脚本?如果您有使用PowerShell的经验,您可能已经使用过命令来配置您的操作系统。脚本是.ps1文件中这些命令的集合。.ps1文件包含由PowerShell执行的脚本,例如基本的Get-Help

ps快捷键大全 ps快捷键大全 Mar 11, 2024 pm 04:31 PM

1、Ctrl + N:新建一个文档。2、Ctrl + O:打开一个文件。3、Ctrl + S:保存当前文件。4、Ctrl + Shift + S:另存为。5、Ctrl + W:关闭当前文档。6、Ctrl + Q:退出 Photoshop。7、Ctrl + Z:撤销。8、Ctrl + Y:重做。9、Ctrl + X:剪切选中内容。10、Ctrl + C:复制选中内容。

See all articles