当前位置: 首页 > article >正文

python pygame实现贪食蛇

文章目录步骤2、创建snake.py然后运行即可操作方式解读很简单的一个例子开启小游戏制作大门。步骤1、安装依赖pip install pygame2、创建snake.py然后运行即可代码importpygameimporttimeimportrandom# --- 1. 初始化 Pygame ---pygame.init()# --- 2. 定义颜色 (RGB 格式) ---WHITE(255,255,255)YELLOW(255,255,102)BLACK(0,0,0)RED(213,50,80)GREEN(0,255,0)BLUE(50,153,213)# --- 3. 设置屏幕尺寸 ---dis_width600dis_height400dispygame.display.set_mode((dis_width,dis_height))pygame.display.set_caption(Pygame 贪吃蛇案例)# --- 4. 游戏时钟 (控制帧率) ---clockpygame.time.Clock()# --- 5. 定义蛇的参数 ---snake_block10# 蛇身每一格的大小snake_speed15# 游戏速度# --- 6. 设置字体 ---# 尝试使用系统默认字体如果失败则使用备用字体font_stylepygame.font.SysFont(bahnschrift,25)score_fontpygame.font.SysFont(comicsansms,35)defyour_score(score):显示当前分数valuescore_font.render(分数: str(score),True,YELLOW)dis.blit(value,[0,0])defour_snake(snake_block,snake_list):绘制蛇身forxinsnake_list:pygame.draw.rect(dis,GREEN,[x[0],x[1],snake_block,snake_block])defmessage(msg,color):显示游戏结束信息mesgfont_style.render(msg,True,color)# 将文字居中显示text_rectmesg.get_rect(center(dis_width/2,dis_height/2))dis.blit(mesg,text_rect)defgameLoop():游戏主循环game_overFalsegame_closeFalse# 蛇的初始位置 (屏幕中心)x1dis_width/2y1dis_height/2x1_change0y1_change0snake_List[]Length_of_snake1# 随机生成第一个食物位置foodxround(random.randrange(0,dis_width-snake_block)/10.0)*10.0foodyround(random.randrange(0,dis_height-snake_block)/10.0)*10.0whilenotgame_over:# --- 游戏结束界面循环 ---whilegame_closeTrue:dis.fill(BLACK)message(游戏结束! 按Q-退出 或 C-重玩,RED)your_score(Length_of_snake-1)pygame.display.update()foreventinpygame.event.get():ifevent.typepygame.KEYDOWN:ifevent.keypygame.K_q:game_overTruegame_closeFalseifevent.keypygame.K_c:gameLoop()# --- 事件监听 (按键控制) ---foreventinpygame.event.get():ifevent.typepygame.QUIT:game_overTrueifevent.typepygame.KEYDOWN:ifevent.keypygame.K_LEFT:x1_change-snake_block y1_change0elifevent.keypygame.K_RIGHT:x1_changesnake_block y1_change0elifevent.keypygame.K_UP:y1_change-snake_block x1_change0elifevent.keypygame.K_DOWN:y1_changesnake_block x1_change0# --- 边界检测 ---ifx1dis_widthorx10ory1dis_heightory10:game_closeTrue# 更新位置x1x1_change y1y1_change dis.fill(BLACK)# 背景色# --- 绘制食物 ---pygame.draw.rect(dis,RED,[foodx,foody,snake_block,snake_block])# --- 蛇身逻辑 ---snake_Head[]snake_Head.append(x1)snake_Head.append(y1)snake_List.append(snake_Head)iflen(snake_List)Length_of_snake:delsnake_List[0]# --- 自身碰撞检测 (吃到自己) ---forxinsnake_List[:-1]:ifxsnake_Head:game_closeTrueour_snake(snake_block,snake_List)your_score(Length_of_snake-1)pygame.display.update()# --- 吃食物检测 ---ifx1foodxandy1foody:foodxround(random.randrange(0,dis_width-snake_block)/10.0)*10.0foodyround(random.randrange(0,dis_height-snake_block)/10.0)*10.0Length_of_snake1clock.tick(snake_speed)pygame.quit()quit()# 启动游戏if__name____main__:gameLoop()操作方式按方向键即可运行起来。如果game over了按q键即可退出(如果q无效看是否是英文模式)。解读1、初始化与设置pygame.init()必须首先调用用于初始化所有 Pygame 模块。snake_block 10定义了蛇身和食物的大小。snake_speed 15控制游戏循环的速度数值越大蛇跑得越快。2、游戏主循环 (gameLoop)这是游戏的心脏。只要 game_over 为 False循环就会一直运行。clock.tick(snake_speed)这行代码限制了循环每秒运行的次数从而控制游戏速度。3、事件监听通过 pygame.event.get() 获取用户的操作。我们监听 pygame.KEYDOWN 事件来判断用户按下了哪个方向键并改变蛇的坐标变化量 (x1_change, y1_change)。4、蛇的移动原理蛇其实是一个坐标列表 (snake_List)。每一帧我们计算蛇头的新坐标将其加入列表末尾。如果蛇没有吃到食物我们就删除列表的第一个元素蛇尾这样蛇看起来就在移动。如果吃到了食物就不删除蛇尾蛇的长度自然就增加了。5、碰撞检测撞墙判断蛇头的坐标是否超出了屏幕的长宽。撞自己遍历蛇身列表看蛇头坐标是否与身体任何一部分重合。吃食物判断蛇头坐标是否与食物坐标完全一致。

相关文章:

python pygame实现贪食蛇

文章目录步骤2、创建snake.py,然后运行即可操作方式解读很简单的一个例子,开启小游戏制作大门。步骤 1、安装依赖 pip install pygame2、创建snake.py,然后运行即可 代码: import pygame import time import random# --- 1. 初…...

保护数字记忆:QQ空间历史说说备份工具的实用方案与技术解析

保护数字记忆:QQ空间历史说说备份工具的实用方案与技术解析 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 一、数字记忆的困境:那些正在消失的青春足迹 当你试…...

正交编码器信号处理避坑指南:ESP32 PCNT模块的6个关键配置参数详解

正交编码器信号处理避坑指南:ESP32 PCNT模块的6个关键配置参数详解 在工业自动化和机器人控制系统中,正交编码器作为核心的位置反馈元件,其信号处理的可靠性直接决定了整个系统的精度。ESP32内置的PCNT(Pulse Counter)…...

GLM-4.1V-9B-Bate在Multisim电路仿真中的创新结合:视觉检测电路板故障

GLM-4.1V-9B-Bate在Multisim电路仿真中的创新结合:视觉检测电路板故障 1. 引言:当AI视觉遇上电路设计 想象一下这样的场景:你刚完成一块电路板的设计,正准备在Multisim中进行仿真验证。突然发现某个元器件似乎焊接不良&#xff…...

告别默认丑界面!手把手教你用.vimrc文件配置出高颜值、高效率的Gvim工作环境

告别默认丑界面!手把手教你用.vimrc文件配置出高颜值、高效率的Gvim工作环境 第一次打开Gvim时,那个灰蒙蒙的界面和密密麻麻的代码是不是让你瞬间失去了继续使用的欲望?别急着关掉它——通过简单的.vimrc配置,你完全可以把这款经典…...

Qwen3.5-27B镜像合规审计:GDPR/等保2.0/数据出境安全评估要点

Qwen3.5-27B镜像合规审计:GDPR/等保2.0/数据出境安全评估要点 1. 模型与部署概述 Qwen3.5-27B是Qwen官方发布的视觉多模态理解模型,支持文本对话与图片理解功能。本镜像已在4 x RTX 4090 D 24GB环境完成部署,提供中文Web对话界面、流式文本…...

DedeCMS文件包含漏洞深度剖析:为什么一个‘无害’的txt文件能让你getshell?

DedeCMS文件包含漏洞技术解析:从文本文件到系统沦陷的连锁反应 在内容管理系统(CMS)的安全领域,最危险的漏洞往往藏匿于最平凡的功能之中。DedeCMS作为国内广泛使用的开源CMS,其文件包含漏洞(CVE-2023-2928…...

ChatGLM-6B惊艳案例:高考作文命题分析、范文生成与评分建议

ChatGLM-6B惊艳案例:高考作文命题分析、范文生成与评分建议 ChatGLM-6B智能对话服务:本镜像为CSDN镜像构建作品,集成了清华大学KEG实验室与智谱AI共同训练的开源双语对话模型ChatGLM-6B,提供开箱即用的智能对话体验。 1. 高考作文…...

网络安全学习(面试题)

1、jeecg框架有哪些漏洞, 弱口令漏洞,admin/123456,jeecg/123456,jeecg/jeecg123 信息泄露,接口任意用户密码重置,sql注入等历史漏洞,用工具一键梭哈 找了好久,一直都没找到学校关于…...

Z-Image-GGUF助力开源社区:为GitHub项目自动生成演示图

Z-Image-GGUF助力开源社区:为GitHub项目自动生成演示图 你有没有过这样的经历?精心维护一个开源项目,代码写得漂亮,文档也写得详细,但项目主页总感觉少了点什么。点开别人的项目,有精美的架构图、清晰的流…...

黑丝空姐-造相Z-Turbo构建AI编程助手:自动生成前端组件配图

黑丝空姐-造相Z-Turbo构建AI编程助手:自动生成前端组件配图 想象一下这个场景:你正在为一个航空公司的内部管理系统编写前端代码,需要创建一个“机组人员资料卡”组件。你已经写好了HTML结构和CSS样式,但卡在了头像占位符上——是…...

ViGEmBus:终极Windows虚拟手柄驱动完整使用教程

ViGEmBus:终极Windows虚拟手柄驱动完整使用教程 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款革命性的Windows内核级虚拟手柄驱…...

3步破解QQ音乐加密限制:qmcdump工具全场景应用指南

3步破解QQ音乐加密限制:qmcdump工具全场景应用指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 一、解密…...

避开PLC烧毁陷阱:FX3S晶体管输出必须知道的7个细节(含虚设电阻计算)

避开PLC烧毁陷阱:FX3S晶体管输出必须知道的7个细节(含虚设电阻计算) 在工业自动化现场,FX3S系列PLC的晶体管输出模块烧毁问题堪称"隐形杀手"。去年某汽车生产线因一个0.5A保险丝选型错误导致全线停产8小时,损…...

解放词库自由:跨平台词库迁移的全场景解决方案

解放词库自由:跨平台词库迁移的全场景解决方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 当你更换新手机时,是否曾为输入法里积累多年的…...

XUnity.AutoTranslator实用指南:高效实现Unity游戏实时翻译

XUnity.AutoTranslator实用指南:高效实现Unity游戏实时翻译 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 在全球化游戏市场中,语言障碍常常成为玩家体验优质游戏的最大阻碍。XUn…...

SEER‘S EYE模型辅助操作系统学习:概念讲解与实验指导

SEERS EYE模型辅助操作系统学习:概念讲解与实验指导 操作系统这门课,对很多计算机专业的学生来说,就像一座又高又陡的山。翻开教材,满篇的进程、线程、虚拟内存、文件系统,每个词都认识,连在一起却像天书。…...

webrtc推流能成为直播的主要方案吗?

妮妮:今天我们聊聊Web RTC做直播推流。小新:好的,WHIP推流协议实现已经合入FFMPEG,OBS。推进了web rtc推流的方案。妮妮:那什么是WHIP协议呢?小新:WHIP的全称是:Web RTC HTTP Ingest…...

用神经网络、数学、理性思维能实现通用智能吗?

1. 核心结论:仅依靠神经网络、数学建模与纯粹理性思维,无法实现真正的通用人工智能(AGI),三者仅为人类智能的局部子集,而非智能本质。2. 数理逻辑边界:哥德尔不完备定理证明,纯形式化…...

SEO_从零开始,手把手教你制定有效的SEO策略

SEO基础知识:什么是SEO? 在互联网时代,拥有一个高效的SEO策略是任何网站希望获得更多流量和更高知名度的关键。SEO,全称搜索引擎优化(Search Engine Optimization),是通过优化网站的内容和结构…...

大模型学习笔记------SAM模型架构拆解与实战指引

1. SAM模型架构全景拆解 第一次看到SAM模型时,就像拿到了一台精密的瑞士手表——外表简洁但内部构造复杂。这个由Meta提出的"分割一切"模型,确实改变了计算机视觉领域的游戏规则。想象一下,你只需要在图片上随便点几个点&#xff0…...

对AI提供信息的不理解或不信任常常会导致误解的积累

对AI提供信息的信任若缺乏审慎验证容易导致误解,因为AI本质上是基于统计概率的"模式匹配机器",而非具备事实判断能力的"知识权威",其输出内容可能包含虚构事实、过时信息或逻辑偏差,而用户往往因AI的"自…...

IDA Pro高效操作:快捷键全解析与实战应用

1. 逆向工程中的效率革命:为什么快捷键如此重要 刚接触逆向分析时,我总被同事的操作速度震惊——他们不用鼠标就能在IDA里快速跳转、标记数据、切换视图。直到发现他们都在用快捷键组合,我才明白效率差距的关键。逆向工程本质上是与二进制代码…...

Qwen3.5-4B模型网络协议分析与故障模拟实践

Qwen3.5-4B模型网络协议分析与故障模拟实践 1. 网络工程师的新助手 最近遇到一个典型的运维场景:某电商平台大促期间,支付接口频繁出现连接超时。运维团队抓包分析后发现TCP重传率异常,但传统方法定位具体原因耗时长达3小时。这正是Qwen3.5…...

STM32C8T6新手入门:用定时器中断和外部中断做一个99秒倒计时器(附完整代码)

STM32C8T6实战:构建高精度99秒倒计时器的5个关键步骤 第一次拿到STM32开发板时,我盯着那些密密麻麻的引脚发呆——这玩意儿真能做出实用的倒计时器?直到成功完成这个项目后才发现,原来从零开始构建一个稳定可靠的倒计时系统&#…...

告别Transformer!用TimeKAN在ETTh1数据集上实现SOTA级长时序预测(附PyTorch复现指南)

TimeKAN:用频率分解与轻量架构重塑长时序预测的PyTorch实践指南 时序预测领域正在经历一场静悄悄的革命——当Transformer模型因计算复杂度陷入瓶颈时,一种融合频率分解思想与新型网络架构的解决方案正在ETTh1等基准数据集上刷新纪录。本文将带您深入Tim…...

Java 上位机防空警报系统开发

通讯结构中央站 -区域站-终端支持全控 选控 单控。可诊断每个设备回示记录通讯协议 使用modbus相关核心代码通讯线程池package com.common.buscomm.taskRun.base.runable;import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core…...

BetterJoy完全指南:让Switch控制器完美适配PC的7个专业技巧

BetterJoy完全指南:让Switch控制器完美适配PC的7个专业技巧 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode…...

华硕笔记本合盖模式终极指南:告别外接显示器休眠烦恼

华硕笔记本合盖模式终极指南:告别外接显示器休眠烦恼 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...

3步打造个性化Windows任务栏:轻量级桌面美化工具TranslucentTB使用指南

3步打造个性化Windows任务栏:轻量级桌面美化工具TranslucentTB使用指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否…...