python界面小游戏贪吃蛇_用Python实现童年小游戏贪吃蛇
贪吃蛇作为一款经典小游戏,早在 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实现童年小游戏贪吃蛇相关推荐
- python界面编程和网口通信_基于python的GUI聊天室设计
" 套接字 " ,用于描述 IP 地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之 间的通信.在 Internet 上的主机一般运行了多个服务软件,同时提供几种 ...
- python界面小游戏贪吃蛇_用Python实现童年贪吃蛇小游戏功能的实例代码
贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中. 尽管贪吃蛇的历史相对比较久远,但它却有着十分顽强的生命力,保持经久不衰,其中很重要的原因便是游戏厂家不断的 ...
- python童年_一行代码玩童年小游戏
首先,我们要打开cmd,以此下载freegames这个包.有一些新手小白可能会问:cmd是什么-- 打开cmd 首先按住笔记本电脑(或者台式机)的win键(就是四个小方块组成一个梯形的键),接着按下r ...
- 关于python小游戏的毕业论文_使用Python写一个小游戏
引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...
- python开心消消乐辅助_用Python写个开心消消乐小游戏
提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...
- pygame为游戏添加背景_用 Python 制作飞机大战小游戏
这这次用Python中的pygame模块来完成一个飞机大战的小游戏:基本思路是通过方向键来控制飞机的左右移动射击飞船.先来看下最后的效果为了新手也能完成,本文记录了编写的全部流程,也就是每次修改的代码 ...
- python 外星人游戏下载大全_【Python】Python制作外星人入侵小游戏
开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理介绍 ...
- python可以制作游戏脚本吗_用Python写一个游戏脚本,你会吗?
学习python有一段时间了,由于python语言的强大和简洁,是一个不错的脚本语言,就准备做个游戏脚本练练手.如果你也想多练项目实战.可以去小编的Python交流.裙 :一久武其而而流一思(数字的谐 ...
- python简单游戏编程入门_[翻译]Python游戏编程入门
自己学习翻译,原文链接. 此文为Tutorial Team成员 Julian Meyer, 一个13岁的Python开发者所写. 你可以去Google+或者Twitter找到他. 你有没有想过,一个计 ...
最新文章
- IBM发布人脸识别最强工具,多样性数据集,100万张人脸图像!
- Fastboot的安装与使用
- C#中UDP通信过程中出现:远程主机强迫关闭了一个现有的连接0x80004005】的解决方法
- python 数据导入mysql_用python批量向数据库(MySQL)中导入数据
- php作菜单,PHP制作下拉透明菜单
- Python基础语法和数据类型最全总结
- 【NLP】毕业设计学习笔记(三):bert_bi-lstm代码解读
- *2.3.2_加入env
- c语言成颖pdf,程序设计语言开篇导学.ppt-资源下载在线文库www.lddoc.cn
- git快速入门之一:创建本地仓库并同步到远程
- pandas读取csv文件数据并使用matplotlib画折线图和饼图
- ironpython怎么编译_将IronPython WPF项目编译为
- Linux部署Web项目小记
- 三菱伺服驱动器说明书_张家港市HG-KN13J-S100三菱伺服控制器
- 算法之数学--常用数学公式,规律神器OEIS 2021-03-09
- 在页眉插入横线或下划线
- MPLS(Multi-Protocol Label Switching)——多协议标签交换
- 语音转文字怎么转?三个方法让你学会怎么语音转文字
- 查找附近的人-mongodb的实现
- python中 ab c 2结果是_ab + c * 2的结果是( )。