接上一章内容,不懂的看一阶段
Rect函数
PYGAME模块中,提供了一个特殊的类型:用于封装2D游戏中的游戏资源:长方形Rect
2D游戏中,所有的游戏资源都有四个具体的数据表示它在屏幕中的展示
距离屏幕左边的距离:left 也称为x坐标
距离屏幕上边的距离:top 也称为y坐标
资源本身的宽度:width
资源本省的高度:height
pygame中提供了一个用于表示这四个数据的对象:位置对象:pygame.Rect
rect = pygame.Rect(x, y, width, height)
获取左边的距离:rect.left | rect.x
获取上边的距离:rect.top | rect.y
获取元素的尺寸:rect.size
获取中间的位置:rect.centerx | rect.centery
代码如下
import pygame
#英雄飞机的:宽度。高度
HERO_X = 196
HERO_Y = 500
HERO_WIDTH = 120
HERO_HEIGHT = 79
#以上代码可以写成如下代码
hero_rect = pygame.Rect(196,500,120,79)
精灵对象——很重要!很重要!很重要!
3)游戏核心操作
游戏运行过程中-> 核心~图片在运动-> 大量的图片在运动
抽象:图片在运动
游戏:图片、位置、速度
pygame将所有的任意的游戏操作开发中用到的对象:封装一个类型
精灵对象[图片、位置、速度][更新]
pygame.sprite.Sprite
QUSTION:如果游戏中出现了大量的图片每个图片都是一个精灵对象
精灵组对象[添加精灵]->更新->渲染->将组中的所有精灵,全部渲染到窗口中!
pygame.sprite.Group
更新(update->调用所有精灵对象update)、渲染draw(screen)
所有的2D游戏开发:都是图片的转换!
图片对象[图片路径、位置、运动速度][ 更新位置 ]
游戏精灵对象——表示2D游戏中,任意的一个游戏元素
为了方便我们操作大量的游戏元素[游戏精灵]:精灵组对象
精灵组对象管理游戏中出现的所有精灵对象!
上代码
'''
version 3.0:精灵对象、精灵组对象
精灵~一个游戏元素
'''
import pygame
class GameSprite(pygame.sprite.Sprite):
'''游戏精灵对象'''
def __init__(self, image_path, speed=1):
# 调用父类初始化函数
super().__init__()
# 创建一个图片对象
self.image = pygame.image.load(image_path)
# 获取精灵位置对象
self.rect = self.image.get_rect()
# 速度
self.speed = speed
def update(self):
self.rect.y += self.speed
##########################################################
##########################################################
##########################################################
# 正常游戏开发
# 初始化所有模块
pygame.init()
screen = pygame.display.set_mode((512, 768), 0, 32)
# 游戏背景:精灵对象
background = GameSprite("./images/bg_img_1.jpg", speed=0)
# 英雄飞机
hero = GameSprite("./images/hero.png", speed=5)
# 添加精灵对象到精灵组中
resource = pygame.sprite.Group(background, hero)
# 游戏循环
while True:
# 精灵组 刷新渲染所有包含的精灵
resource.update()
resource.draw(screen)
# 当前屏幕刷新
pygame.display.update()