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

Pygame实现射击鸭子游戏3-2

2 鸭子类Target的创建

2.1  __init__()函数

Target类的__init__()函数代码如图5所示。

图5 __init__()函数代码

其中,第18行将Target类声明为pygame.sprite.Sprite类的子类;第19行代码中,__init__()函数的img_path参数表示鸭子图片的文件名,x和y表示鸭子起始位置的横纵坐标;第20行代码调用pygame.sprite.Sprite类的__init__()进行初始化操作;第21行代码导入鸭子图片;第22行代码获取鸭子图片的位置和大小;第23行代码根据指定的位置设置鸭子的起始位置。

2.2 update()函数

Target类的update()函数代码如图6所示。

图6 update()函数代码

Target类的update()函数的作用是让鸭子游动起来。鸭子是从屏幕左边向右边水平移动的,所以只需要改变其横坐标即可,纵坐标可以不变。第25行代码通过rect.move_ip()方法改变鸭子的横坐标,random.randint(0,10)表示鸭子的速度是一个0-10之间的随机数;第26-27行代码判断鸭子是否已经游到屏幕的右侧边缘,如果已经游到边缘,则将其左上角的横坐标rect.left设置为0,表示将其位置恢复到屏幕左侧边缘。

3 实例化瞄准镜类及创建相应的精灵组

实例化瞄准镜类及创建相应的精灵组的代码如图7所示。

图7 实例化瞄准镜类及创建相应的精灵组的代码

其中,第42行代码实例化了瞄准镜类Crosshair,其实例名为crosshair,“crosshair_blue_small.png”是瞄准镜的文件名;第43行代码通过pygame.sprite.Group()创建了精灵组crosshair_group;第44行代码将实例crosshair加入到精灵组crosshair_group中。

4 实例化鸭子类及创建相应的精灵组

实例化鸭子类及创建相应的精灵组的代码如图8所示。

图8 实例化鸭子类及创建相应的精灵组的代码

其中,第46行代码创建用于保存鸭子精灵的精灵组target_group;第47行使用for循环创建TARGET_NUM个鸭子;第48-49行代码随机设置鸭子的横纵坐标;第50行代码实例化鸭子类,“duck_yellow.png”是鸭子图片的文件名;第51行代码将创建的鸭子实例精灵加入到精灵组中。

5 导入背景

导入背景的代码如图9所示。

图9 导入背景的代码

其中,第39行代码通过pygame.image.load()导入背景图片;第40行代码将背景图片设置为屏幕大小,pygame.transform.scale()函数的作用是设置图片大小,bg_img表示要设置的图片,(SCREEN_WIDTH, SCREEN_HEIGHT)表示要设置的大小,即为屏幕的宽度和高度。


http://www.kler.cn/a/580761.html

相关文章:

  • Leetcode 22: 括号生成
  • 【Git】撤销修改
  • Qt 初识
  • Rat工具:XiebroC2 一款国产C2工具简单使用介绍
  • 02C#基本结构篇(D1_基本语法)
  • 自然语言处理:Transformer、BERT
  • 大白话react第十六章React 与 WebGL 结合的实战项目
  • 天津大学:《深度解读DeepSeek:部署、使用、安全》
  • 【MySQL_04】数据库基本操作(用户管理--配置文件--远程连接--数据库信息查看、创建、删除)
  • TypeScript变量声明详解:与JavaScript的对比与工程化价值
  • 第十五章:go package 包的管理
  • 垂起固定翼+多旋翼+自组网:无人机中低空一体化组网技术详解
  • MySQL和Hive SQL 时间处理常用函数汇总
  • Qt C++ 实际开发中宏编译的运用
  • Unity插件-Mirror使用方法(九)组件介绍(Network Start Position)
  • Manus VR手套深度解析:重新定义人机交互的未来
  • nginx作为web服务应用
  • redis连接服务
  • git worktree的使用
  • Linux基本操作指令3