Python-项目实战--贪吃蛇小游戏(1)

news2024/9/29 3:28:01

1.贪吃蛇游戏规则

贪吃蛇游戏规则如下:

1.1开始和结束

  • 贪吃蛇初始出现在游戏窗口的左上角位置,体长共有3节

  • 游戏过程中,一旦蛇头撞到了窗口的边缘或者身体的其他部位,游戏结束

  • 游戏过程中,点击游戏窗口的关闭按钮,或者按下ESC键可以直接退出游戏

  • 一局游戏结束后,按下空格键可以重新开启一局新游戏

1.2运动和控制

  • 贪吃蛇初始沿屏幕水平方向,向右侧运动,每隔0.5秒移动一节身体

  • 使用键盘的方向键(⬆⬇⬅➡)可以改变蛇头的运动方向,

注意:

  • 当蛇头沿水平方向运动时,只能使用垂直方向的方向键将蛇头的运动方向修改为垂直方向

  • 当蛇头沿垂直方向运动时,只能使用水平方向的方向键将蛇头的运动方向修改为水平平向

  • 游戏过程中按下空格键,可以暂停游戏;再次按下空格键,可以继续游戏

1.3食物和得分

  • 游戏开始后,会在游戏窗口的任-一随机位置出现食物

  • 注意:食物不会与蛇身体重叠

  • 蛇头食物相遇时,代表蛇吃到了食物,此时:

  • 被吃掉的食物从屏幕上消失

  • 蛇的身体会增加一节

  • 游戏得分增加10分

  • 在游戏窗口的其他任一随机位置再次出现新的食物食物同样不会与蛇身体重叠

  • 如果食物出现的30秒内,贪吃蛇没有吃到食物,那么:

  • 没有被吃到的食物从屏幕上消失

  • 在游戏窗口的其他任一随机位置再次出现新的食物,食物同样不会与蛇身体重叠

  • 每吃掉1颗食物,贪吃蛇的运动速度会加快:

  • 初始每隔0.5秒移动一节身体

  • 每吃掉1颗食物,移动的时间间隔缩短50ms,也就是: 0.45s、0.40s、0.35s等依次类推

  • 最短的移动时间间隔是0.1秒

2.类的设计和模块准备

2.1类的设计

根据游戏规则,要实贪吃蛇游戏,一共需要4种对象,分别是:游戏对象、蛇对象、食物对象和文字标签对象

除游戏对象外,其他3种对象在游戏窗口中的展现效果示意图如下:

因此我们可以考虑设计4个类,分别承担不同的职责:

  • 游戏类(Game) : 负责提供整个游戏流程控制的相关操作,包括:

  • 创建游戏主窗口和游戏时钟

  • 创建并显示游戏元素:蛇、食物、得分标签、提示标签。

  • 监听用户交互并做出相应处理

  • 标签类(Label) :负责提供文本提示信息的相关操作

  • 食物类(Food) :负责提供食物对象的相关操作

  • 蛇类(Snake) :负责提供蛇对象相关操作

类图如下:

2.2模块的确定和准备

  • 根据类的设计,在贪吃蛇游戏项目中设计2个模块,分别是:

  • game.py 游戏主模块 封装Game类并负责启动游戏

  • game_items.py 游戏元素模块,封装模块Label、Food、Snake类,并定义全局变量

新建项目及文件准备

  • 使用pycharm新建一个项目:

  • 项目名称:贪吃蛇

  • 解释器:python 3.9.13

  • 在项目中依次建立2个模块:game.py game_items.py

内容总结于:https://space.bilibili.com/441640380

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java高级-常用类-String、Date、Compare、Other

本篇讲解java常用类 String类 String:字符串,使用一对""引起来表示。 String类被声明为final的,不可被继承。 String实现了Serializable接口:表示字符串是支持序列化的。 ​ 实现了Comparable接口:表示String可以比较…

微搭低代码从入门到精通09-数据容器

我们已经用了两篇的篇幅介绍了微搭的布局组件,包括普通容器、文本、图片、轮播容器。 微搭中还有粗粒度的组件,今天介绍的数据容器就是粗粒度的组件。所谓粗粒度的组件,一般包括基础组件、样式还有默认的事件。数据容器一共包含三种分别是数…

vscode sftp从linux服务器下载文件至本地:No such file or dictionary【已解决】

在服务器跑完程序需要下载数据的时候报错: [warn] ENOENT: no such file or directory, open /home/LIST_2080Ti/.ssh/config load /home/LIST_2080Ti/.ssh/config failed 完整报错内容如下: [02-10 08:38:47] [info] config at /home/LIST_2080Ti {&q…

Arm-Linux子系统的互相Notify

前言: Linux下面不同的子系统一个个的组成了整个系统的运行环节,为了让这些子系统能够互相通讯,有一种叫做:notify chain(通知链)的东西。本篇看下。 概括 所谓通知链,有通知,就有执行的地方。比如A子系统通…

无题

(1)风国产化替代?全球化?新一代数字化技术升级?云化(公有云化)?业务线上化?产业互联整合?私有云原生技术可以支撑:国产化替代-新一代数字化技术升…

WPS底层逻辑串讲

文章目录wps页面基本介绍演示文稿功能讲解框架介绍具体功能讲解:1. 另存为2. 输出图片3. 文件打包4. 演示文稿打印5. 文档加密两种方式 ❤文件打开密码 :文档加密--->密码加密--》输入密码即可 ❤文档编辑密码:输出为PDF--->设置即可6.…

【老卫拆书】009期:Vue+Node肩挑全栈!《Node.js+Express+MongoDB+Vue.js全栈开发实战》开箱

今天刚拿到一本新书,叫做《Node.jsExpressMongoDBVue.js全栈开发实战》,做个开箱。 外观 先从外观上讲,这本是全新的未开封的,膜还在。 这本书介绍从技术原理到整合开发实战,以丰富的项目展现全栈开发的一个技巧。 …

ChatGPT如何注册,如何使用(个人版)文末送账号

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

ES8——Generator函数的使用

babel工具插件下载:npm i --save babel-polyfill 引入:polyfill.js进行转码(es8->es5) 介绍 Generator函数用于生成迭代器 function * (){} yeild: 作用同return类似 {const obj function* () {yield "a";yield 12…

分享! opensource.builders——为您喜爱的应用程序查找开源替代方案

今天和大家分享一个非常有意思的网站, 我们可以从这个网站中找到一些常用软件的开源替代方案, 比如说之前很火Notion, 我们可以找到它的开源替代方案——Appflowy, 并且在 github 上学习部署它的本地版本.好啦, 话不多说, 上地址:网址地址: https://opensource.builders/github…

数据库(三):多版本并发控制MVCC,行锁的衍生版本,记录锁,间隙锁, Next-Key锁(邻键锁)

文章目录前言一、MVCC以及MVCC的缺点1.1 MVCC可以为数据库解决什么问题1.2 MVCC的基本思想1.3 版本号1.4 Undo日志1.5 ReadView1.6 快照读和当前读1.6.1 快照读1.6.2 当前读二、记录锁三、间隙锁四、邻键锁总结前言 一、MVCC以及MVCC的缺点 MVCC,即多版本并发控制…

Linux clock子系统及驱动实例

文章目录基本概念CLK子系统时钟API的使用clock驱动实例1、时钟树2、设备树3、驱动实现fixed_clk固定时钟实现factor_clk分频时钟实现gate_clk门控时钟实现基本概念 晶振:晶源振荡器 PLL:Phase lock loop,锁相环。用于提升频率 OSC&#xff1a…

数据结构与算法这么难,为什么我们还要学习?

文章目录前言1. 数据结构与算法是什么?2. 为什么数据结构与算法很难?3. 如何系统学习数据结构与算法?🍑 复杂度🍑 线性表🍑 树形结构🍑 图🍑 排序🍑 字符串🍑…

Django框架之站点管理

站点管理 站点: 分为内容发布和公共访问两部分内容发布的部分由网站的管理员负责查看、添加、修改、删除数据Django能够根据定义的模型类自动地生成管理模块使用Django的管理模块, 需要按照如下步骤操作 : 1.管理界面本地化2.创建管理员3.注册模型类4.发布内容到数据库 1.管理…

备战蓝桥杯第一天【二分查找无bug版】

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

基于 python获取教育领域新闻进行分词关键词词共现分析 Gephi 软件绘制主题知识图谱

本文着眼于对疫情期间教育领域新闻的分析,基于 python 语言,利用爬虫获取教育领域的最新新闻,并将其内容进行分词,抓取关键词。在此基础上,根据关键词进行共现分析,并利用 Gephi 软件绘制主题知识图谱&…

超详细讲解长度受限制的字符串函数(保姆级教程!!!)

超详细讲解长度受限制的字符串函数(保姆级教程!!!)长度受限制的字符串函数strncpy函数strncpy函数的使用strncpy函数的模拟实现strncat函数strncat函数的使用strncat函数的模拟实现strncmp函数strncmp函数的使用strncm…

【golang分布式Job调度服务】

需求背景 目前各服务里经常会有定时任务相关需求,而定时任务通常要求同时只有一个任务执行,为了保证定时任务高可以通常也需要主备部署,导致开发定义任务时需要考虑锁竞争关系,以及考虑任务执行状态(成功、失败、重试…

Lambda表达式了解到使用(清晰明朗)

这里写目录标题lambda简述以前的实现初次使用lambda表达式Lambda表达式的语法测试方法lambda表达式简写示范测试方法运行结果方法引用测试方法运行结果构造方法引用定义一个Boy类编写测试方法运行结果实际应用测试代码运行结果内置函数式接口FunctionalInterface注解Functional…

自从学会了Python,我实现了壁纸自由(6)

小朋友们好,大朋友们好!我是猫妹!哈哈哈,又到周末啦!这周过得怎么样?马上就要开学了,寒假作业早已写好了吧?开学让人兴奋,上了很久网课都要吐啦!开学也让人有…