贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中。

尽管贪吃蛇的历史相对比较久远,但它却有着十分顽强的生命力,保持经久不衰,其中很重要的原因便是游戏厂家不断的对其进行更新迭代。现在,这款游戏无论是游戏场景、规则等都变得十分丰富。

接下来,我们看一下如何通过 Python 简单的实现这款小游戏。

规则要有游戏主界面、贪吃蛇、食物

能够控制贪吃蛇移动并获取食物

贪吃蛇吃了食物后,增加自身长度、分数,食物消失并随机生成新的食物

贪吃蛇触碰到周围边界或自己身体时,游戏结束

环境操作系统:Windows

Python 版本:3.6

涉及模块:sys、random、pygame

实现

首先,安装第三方库 pygame,使用 pip install pygame 即可。

➢ 游戏主界面SCREEN_X = 500

SCREEN_Y = 500

screen_size = (SCREEN_X, SCREEN_Y)

screen = pygame.display.set_mode(screen_size)

pygame.display.set_caption('贪吃蛇')

➢ 贪吃蛇

初始化def __init__(self):

self.dirction = pygame.K_RIGHT

self.body = []

移动def addNode(self):

left, top = (0, 0)

if self.body:

left, top = (self.body[0].left, self.body[0].top)

node = pygame.Rect(left, top, 20, 20)

if self.dirction == pygame.K_LEFT:

node.left -= 20

elif self.dirction == pygame.K_RIGHT:

node.left += 20

elif self.dirction == pygame.K_UP:

node.top -= 20

elif self.dirction == pygame.K_DOWN:

node.top += 20

self.body.insert(0, node)

def delNode(self):

self.body.pop()

改变方向def changeDirection(self, curkey):

LR = [pygame.K_LEFT, pygame.K_RIGHT]

UD = [pygame.K_UP, pygame.K_DOWN]

if curkey in LR + UD:

if (curkey in LR) and (self.dirction in LR):

return

if (curkey in UD) and (self.dirction in UD):

return

self.dirction = curkey

死亡判断def isDead(self):

# 撞墙

if self.body[0].x not in range(SCREEN_X):

return True

if self.body[0].y not in range(SCREEN_Y):

return True

# 撞自己

if self.body[0] in self.body[1:]:

return True

return False

➢ 食物

投放食物def set(self):

if self.rect.x == -20:

allpos = []

for pos in range(20, SCREEN_X - 20, 20):

allpos.append(pos)

self.rect.left = random.choice(allpos)

self.rect.top = random.choice(allpos)

print(self.rect)

吃掉食物def remove(self):

self.rect.x = -20

➢ 文字显示

显示方法def show_text(screen, pos, text, color, font_bold=False, font_size=30, font_italic=False):

# 设置文字大小

cur_font = pygame.font.SysFont("宋体", font_size)

# 加粗

cur_font.set_bold(font_bold)

# 斜体

cur_font.set_italic(font_italic)

# 设置内容

text_fmt = cur_font.render(text, 1, color)

# 绘制文字

screen.blit(text_fmt, pos)

显示分数show_text(screen, (50, 400), 'scores: ' + str(scores), (103, 213, 213))

显示死亡提示show_text(screen, (150, 50), 'GAME OVER', (227, 29, 18), False, 50)

show_text(screen, (140, 100), "Press space to try again", (0, 0, 22), False, 30)

➢ 吃到食物

当贪吃蛇吃掉食物,增加蛇身长度、分数,食物消失,重新投放食物。if food.rect == snake.body[0]:

scores += 1

food.remove()

snake.addNode()

# 投放食物

food.set()

➢ 最终效果

打包

打包使用 pyinstaller,具体实现参考用Python实现童年小游戏俄罗斯方块

中的打包。

源码在公众号 Python小二 后台回复 g2 获取。

python界面小游戏贪吃蛇_用Python实现童年小游戏贪吃蛇相关推荐

  1. python界面编程和网口通信_基于python的GUI聊天室设计

    " 套接字 " ,用于描述 IP 地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之 间的通信.在 Internet 上的主机一般运行了多个服务软件,同时提供几种 ...

  2. python界面小游戏贪吃蛇_用Python实现童年贪吃蛇小游戏功能的实例代码

    贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中. 尽管贪吃蛇的历史相对比较久远,但它却有着十分顽强的生命力,保持经久不衰,其中很重要的原因便是游戏厂家不断的 ...

  3. python童年_一行代码玩童年小游戏

    首先,我们要打开cmd,以此下载freegames这个包.有一些新手小白可能会问:cmd是什么-- 打开cmd 首先按住笔记本电脑(或者台式机)的win键(就是四个小方块组成一个梯形的键),接着按下r ...

  4. 关于python小游戏的毕业论文_使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  5. python开心消消乐辅助_用Python写个开心消消乐小游戏

    提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...

  6. pygame为游戏添加背景_用 Python 制作飞机大战小游戏

    这这次用Python中的pygame模块来完成一个飞机大战的小游戏:基本思路是通过方向键来控制飞机的左右移动射击飞船.先来看下最后的效果为了新手也能完成,本文记录了编写的全部流程,也就是每次修改的代码 ...

  7. python 外星人游戏下载大全_【Python】Python制作外星人入侵小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理介绍 ...

  8. python可以制作游戏脚本吗_用Python写一个游戏脚本,你会吗?

    学习python有一段时间了,由于python语言的强大和简洁,是一个不错的脚本语言,就准备做个游戏脚本练练手.如果你也想多练项目实战.可以去小编的Python交流.裙 :一久武其而而流一思(数字的谐 ...

  9. python简单游戏编程入门_[翻译]Python游戏编程入门

    自己学习翻译,原文链接. 此文为Tutorial Team成员 Julian Meyer, 一个13岁的Python开发者所写. 你可以去Google+或者Twitter找到他. 你有没有想过,一个计 ...

最新文章

  1. IBM发布人脸识别最强工具,多样性数据集,100万张人脸图像!
  2. Fastboot的安装与使用
  3. C#中UDP通信过程中出现:远程主机强迫关闭了一个现有的连接0x80004005】的解决方法
  4. python 数据导入mysql_用python批量向数据库(MySQL)中导入数据
  5. php作菜单,PHP制作下拉透明菜单
  6. Python基础语法和数据类型最全总结
  7. 【NLP】毕业设计学习笔记(三):bert_bi-lstm代码解读
  8. *2.3.2_加入env
  9. c语言成颖pdf,程序设计语言开篇导学.ppt-资源下载在线文库www.lddoc.cn
  10. git快速入门之一:创建本地仓库并同步到远程
  11. pandas读取csv文件数据并使用matplotlib画折线图和饼图
  12. ironpython怎么编译_将IronPython WPF项目编译为
  13. Linux部署Web项目小记
  14. 三菱伺服驱动器说明书_张家港市HG-KN13J-S100三菱伺服控制器
  15. 算法之数学--常用数学公式,规律神器OEIS 2021-03-09
  16. 在页眉插入横线或下划线
  17. MPLS(Multi-Protocol Label Switching)——多协议标签交换
  18. 语音转文字怎么转?三个方法让你学会怎么语音转文字
  19. 查找附近的人-mongodb的实现
  20. python中 ab c 2结果是_ab + c * 2的结果是( )。

热门文章

  1. 阿里云云服务器ECS简单使用
  2. IB学生喜欢申请哪些英国院校?
  3. 如今,纽约正在掀起一股新的区块链潮流,证券类通证被视为下一个风口
  4. 基于GIO/FVID的DSP视频驱动程序
  5. MTK平台创建Vendor方法-v1.4
  6. ARM芯片tops的计算方法
  7. Javescript第二周学习
  8. H3C防火墙web管理
  9. htmla标签下划线去除_html超链接的下划线怎么去掉?a标签去下划线的方法都在这里...
  10. 硬盘突然变raw格式_硬盘变成raw格式的解决方法详解