plane_sprites.py

import pygame# 如果一个类的父类不是object
# 在重写初始化方法时,一定要先super()一下父类的__init__方法
# 保证父类中实现的__init__代码能够正常执行# 属性 image 精灵图像使用image_name加载
#      rect 精灵大小默认使用图像大小
#      speed 精灵移动速度,默认为1# 方法 update 每次更新屏幕时在游戏循环内调用
#      self.rect.y+=self.speed# image的get_rect()方法,可以返回pygame.Rect(0,0,图像宽,图像高)的对象class GameSprite(pygame.sprite.Sprite):"""飞机大战游戏精灵"""def __init__(self,image_name,speed=1):# 调用父类的初始化方法super().__init__()#定义对象的属性self.image=pygame.image.load(image_name)self.rect=self.image.get_rect()self.speed=speeddef update(self):#在垂直方向移动self.rect.y+=self.speed

06_精灵和精灵组 创建敌机

import pygame
from plane_sprites import *
from pygame.locals import *# 为了简化图像开发步骤,pygame提供了两个类
# pygame.sprite.Sprite--存储图像数据image和位置rect的对象
#   image 记录图像数据
#   rect 记录在屏幕上的位置
#   update(*args):更新精灵位置
#   kill(): 从所有组中删除
# pygame.sprite.Group
#   __init_(self,*精灵_
#   add(*sprites):向组中添加精灵
#   sprites(): 返回所有精灵列表
#   update(*args):让组中所有精灵调用update方法
#   draw(Surface):将组中所有精灵的image,会知道Surface中的rect位置# 游戏初始化:创建精灵 创建精灵组
# 游戏循环:精灵组.update() 精灵组.draw(screen) pygame.display.update()# 事件:游戏启动之后用户针对游戏所做的操作
# 监听:捕捉到用户的操作,有针对性的做出响应
# pygame中通过pygame.event.get()可以获得用户当前所做动作的事件列表pygame.init()# 创建游戏的窗口 480*700
screen=pygame.display.set_mode((480,700),0,0)# 绘制背景图像
background = pygame.image.load("./shoot/background.png")
screen.blit(background,(0,0))# 绘制大飞机
bigplane = pygame.image.load("./shoot/hero0.png")
screen.blit(bigplane,(200,500))# 统一更新
pygame.display.update()# 创建时钟对象
clock=pygame.time.Clock()# 定义大飞机的初始位置
bigplane_rect=pygame.Rect(150,500,102,126)# 创建敌机精灵
enemy=GameSprite("./shoot/airplane0.png")# 创建敌机精灵组
enemy_group=pygame.sprite.Group(enemy)while True:# 控制帧率clock.tick(60)# 事件监听for event in pygame.event.get():#判断用户是否点击了关闭按钮if event.type==pygame.QUIT:print("退出游戏!")# quit卸载所有模块pygame.quit()#退出系统exit()# 修改大飞机位置bigplane_rect.y-=1# 判断飞机的位置if bigplane_rect.y+bigplane_rect.height<=0:bigplane_rect.y=700screen.blit(background,(0,0))screen.blit(bigplane,bigplane_rect)# 让精灵组调用两个办法# update 更新所有精灵的显示enemy_group.update()# draw 把所有精灵全部绘制到屏幕上enemy_group.draw(screen)pygame.display.update()# 为当前窗口增加事件# 利用pygame注册事件,其返回值是一个列表# 存放当前注册时获取的所有事件for event in pygame.event.get():if event.type == QUIT:exit()pygame.quit()

Python精灵和精灵组相关推荐

  1. Python pygame,精灵和精灵组

    plane_sprites.py(模块,定义派生精灵子类,继承pygame.sprite.Sprite): import pygame# 自定义的派生精灵子类,继承pygame.sprite.Spri ...

  2. python精灵和精灵组_Pygame精灵和精灵组

    Pygame精灵和精灵组 Pygame 提供了两个类 pygame.sprite.Sprite -- 存储 图像数据 image 和 位置 rect 的 对象 pygame.sprite.Group ...

  3. Python 理解 精灵 和 精灵组

    1.1 精灵 和 精灵组 在刚刚完成的案例中,图像加载.位置编号.绘制图像 都需要程序员编写代码分别处理. 为了简化开发步骤: pygame 提供两个类. pygame.sprite.Sprite - ...

  4. Python_精灵和精灵组

    1. 基本概念 接下来介绍两个pygame中提供的高级类, 精灵和精灵组. 在介绍这两个类之前, 先来共同回顾一下到目前为止掌握的游戏开发套路. 在游戏初始化,需要加载一下游戏中所有的图像, 然后呢, ...

  5. 精灵与精灵组的常用属性

    精灵常用的属性 pygame.sprite.Sprite.update - 控制精灵行为的方法 pygame.sprite.Sprite.add - 将精灵添加到组 pygame.sprite.Spr ...

  6. Python 实现按键精灵的功能,超简单详细(Windows版)

    Python 实现按键精灵的功能,超简单详细 前言: 实现步骤 一.安装三个库 二.试运行简单的功能 三.根据需求自己写代码 注明 前言: 最近公司的同事让我帮他点点点,懒得亲自点,便在网上查找了相关 ...

  7. python 游戏按键精灵 PyDirectInput介绍

    前言: 在python关于按键精灵得操作中常用的有PyAutoGUI,但在使用的过程中,针对一些游戏就直接失灵了,特别是一些以DirectX来开发的游戏或软件.我通过收索相关资料了解到之所以会这样,是 ...

  8. Python实现按键精灵功能

    Python实现按键精灵功能 1.利用screenshot(),crop()截取匹配图像 2.利用imread(),imwrite()分割图片,提高匹配精度 3.利用locateAllOnScreen ...

  9. python做按键精灵脚本_Python 实现按键精灵的功能,超简单详细(MAC版)

    前言: 想看Windows版的同窗能够看Python 实现按键精灵的功能,超简单详细(Windows版) 以前写了Windows版的python实现按键精灵功能.如今我鸟枪换炮换了个新的mac.发现以 ...

最新文章

  1. linux access函数判断文件存取权限
  2. KiCAD初学者指南
  3. php 继承内核中的基类,php – 从基类调用继承类的父方法
  4. 【OpenCV3】基于双目视觉的三维重建
  5. 解决gnome3 不能设置无线网络属性
  6. 调参,注意神经网络处于哪种相态
  7. antd 设置表头属性_纯css实现固定表头和锁定列
  8. 怎么更新android 10.0,Android 10.0(Q OS)系统升级计划Androi
  9. ftp文档服务器设置,ftp服务器基本设置
  10. Linux进程全解5——父子进程对文件的操作
  11. 《springcloud超级入门》微服务的概念和优缺点《一》
  12. 魔众Markdown管理系统v2.1.0源码
  13. DNN的Portal在站点(服务器)之间的迁移
  14. 浅谈android的am命令
  15. C语言基础教程之储存类
  16. 三类医疗器械进销存软件-医药供应链系统
  17. arcgis里面怎么截图_怎么利用ARCGIS裁剪图像
  18. map文件介绍及使用
  19. 创建通用 macOS 二进制文件
  20. 关于Random(47)与randon.nextInt(100)的区别

热门文章

  1. 【整理】图片不能直接拖到3dsMAX和Photoshop中了
  2. 2013年第四届C B组蓝桥杯省赛真题
  3. 优酷网视频播放器站外调用详解
  4. 移动支付模式方面的技术
  5. 算法的时间复杂度与空间复杂度介绍
  6. 一篇文章,中文发完英文发,算“一稿多投”吗?
  7. new Date() 获取当前时间对象(getFullYear、getMonth、getDate、getHours、getMinutes、getSeconds、getDay、getTime)
  8. 芝士合集(以便查看)
  9. 删除docker container
  10. 如何解析xml报文获取数据集合