Python游戏编程之赛车游戏6-3

news/2025/2/26 7:10:49

1 “敌人”汽车类的创建

在创建玩家汽车类之后,接下来创建“敌人”汽车类。“敌人”汽车类与玩家类一样,也是包含两个方法,一个是__init__(),另一个是move()。

1.1 __init__()方法

“敌人”汽车类的__init__()方法代码如图1所示。

图1 “敌人”汽车类的__init__()方法代码

其中,“敌人”汽车类名是Enemy,该类也是pygame.sprite.Sprite类的子类。在__init__()方法中,第37行代码调用了其父类也就是pygame.sprite.Sprite类的__init__()方法,完成精灵类的初始化;第38行代码导入“敌人”汽车的图片;第39行代码获取“敌人”汽车图片的位置及大小信息;第40行代码设置“敌人”汽车的初始位置,因为其初始位置在屏幕的最上方,所以其纵坐标的值是0,横坐标是一个随机值,可以保证“敌人”汽车出现的随机性,原理如图2所示。

图2 “敌人”汽车的初始位置原理图

其中,汽车图片宽度的一半是40,因此其中心位置的横坐标最小值是40,最大值是屏幕宽度-40。第40行代码中使用random.randint()函数生成从40到WIDTH-40之间的一个随机值作为汽车图片中心位置的横坐标。

注意1 需要导入random模块。

1.2 move()方法

“敌人”汽车类的move()方法用于控制“敌人”汽车的移动,代码如图3所示。

图3 “敌人”汽车类的move()方法代码

其中,第43行代码将变量SCORE声明为全局变量,SCORE表示玩家的分数,当玩家成功躲避了一辆敌人的汽车,则分数加1,该变量在“敌人”汽车类之外定义,因为要在类内对其进行修改,需要将其设置为global;第44行代码通过rect.move_ip()函数实现“敌人”汽车图片的移动,因为“敌人”汽车是从屏幕上方向下方移动,只需要在垂直方向移动图片,水平方向无需移动,SPEED表示“敌人”汽车的速度,在“敌人”汽车类之外定义;第45-48行代码的作用是当“敌人”汽车移动到屏幕下方之后的处理,当rect.bottom大于HEIGHT,表示“敌人”汽车移动到屏幕下方,此时表示玩家成功躲避了一辆敌人的汽车,第46行代码将玩家分数加1,第47-48行代码重新设置“敌人”汽车的位置,使其重新回到屏幕的上方,并随机设置其水平位置。


http://www.niftyadmin.cn/n/5868278.html

相关文章

蓝桥杯好题推荐------蛇形方阵

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 题目链接 P5731 【深基5.习6】蛇形方阵 - 洛谷 解题思路 对于这道题目来说,这道题题目中很重要的就是模拟实现顺时针填入数字的过程,而一个很好的&…

电子科技大学考研复习经验分享

电子科技大学考研复习经验分享 本人情况:本科就读于电科软院,24年2月开始了解考研,24年3月开始数学,9月决定考本院(开始全天候图书馆学习)并开始专业课学习,11月底开始政治学习,最后…

Mac 版 本地部署deepseek ➕ RAGflow 知识库搭建流程分享(附问题解决方法)

安装: 1、首先按照此视频的流程一步一步进行安装:(macos版)ragflowdeepseek 私域知识库搭建流程分享_哔哩哔哩_bilibili 2、RAGflow 官网文档指南:https://ragflow.io 3、RAGflow 下载地址:https://github.com/infi…

AI工具库:技术爱好者装备新势能

在人工智能技术飞速发展的时代,各类 AI 工具层出不穷,为我们的工作和生活带来了前所未有的变革。AI 工具导航( https://aidh.net )平台,作为一个汇聚众多 AI 工具的宝库,为技术爱好者和专业人士提供了便捷的…

ProGuard加密混淆SpringBoot应用代码

背景 我们的项目是基于SpringCloud架构的微服务应用,采用Docker离线部署方式交付客户,通过授权证书来控制应用的许可功能模块和使用时间。我们已经在代码层已经实现: 基于多维度硬件指纹的绑定验证,cpu id、mac地址、磁盘序列、…

绕过information_schema与order by注入以及seacsmv9注入

一:information_schema绕过 1,、sys数据库包含了许多视图,这些视图整合了来自information_schema和performance_schema的数据,攻击者可以利用这些视图来获取数据库结构信息。 -- 获取所有数据库名 SELECT DISTINCT table_schema FROM sys.schema_table_…

大数据与Hadoop综合解析

一、大数据概述 在数字化转型的浪潮中,大数据已成为不可或缺的资源。它不仅改变了企业的运营方式,还重塑了整个行业格局。大数据主要应对海量数据的采集、存储与分析计算挑战,帮助企业从数据中提取价值,驱动决策和创新。 数据单位…

Oracle 数据库基础入门(一):搭建数据管理基石

在当今数字化时代,数据库作为数据管理的核心工具,对于各类应用系统的开发至关重要。尤其是在 Java 全栈开发领域,掌握一款强大的数据库技术是必备技能。Oracle 数据库以其卓越的性能、高度的可靠性和丰富的功能,在企业级应用中广泛…