1 import pygame
2 from first_pygame.plane_spirit import * # 调用重载的精灵类
3
4 # 初始化
5 pygame.init() # 初始化所有所需游戏模块
6 screen = pygame.display.set_mode((700, 700)) # 设置游戏窗口大小
7 pygame.display.set_caption("打飞机") # 这是窗口名字
8 bg = pygame.image.load("./image/bg.jpg") # 加载背景图片
9 player = pygame.image.load("./image/player/player.png") # 加载英雄图片
10
11 screen.blit(bg, (0, 0)) # 设置背景图片,窗口对象调用blit方法 参数一:背景对象 参数二:图片的绘制位置
12 pygame.display.update() # 更新输出
13
14 player_rest = pygame.Rect(200, 500, 402, 257) # 记录英雄初始位置 和大小
15
16 clock = pygame.time.Clock() # 实例绘制时钟
17
18 # 精灵初始化敌机
19 diji_jinglin = Game_Jinglin("./image/computer/diji1.png") # 实例精灵
20 diji_jinglin1 = Game_Jinglin("./image/computer/diji1.png",speed=2)
21 jingling_group = pygame.sprite.Group(diji_jinglin,diji_jinglin1) # 加入精灵组
22
23 while True:
24 clock.tick(60) # 每秒绘制60次
25 player_rest.y -= 1 # 设置动画 每次向Y轴负方向运动-1
26 if player_rest.y <= -257:
27 player_rest.y = 900
28 screen.blit(bg, (0, 0)) # 背景覆盖
29 screen.blit(player, player_rest) # 英雄闪现
30
31 # 让精灵组调用两个方法
32 # update 更新所有精灵位置
33 jingling_group.update()
34 # 让精灵绘制到窗口
35 jingling_group.draw(screen)
36
37 pygame.display.update() # 更新显示
38
39 for event_list in pygame.event.get(): # 事件监听 pygame.event.get()返回事件列表
40 if event_list.type == pygame.QUIT:
41 print("游戏退出...")
42 pygame.quit()
43 exit() # 把当前程序退出
first_pygame/plane_spirit.py/Game_jinglin类
class Game_Jinglin(pygame.sprite.Sprite):
"""
精灵类
继承:pygame.sprite.Sprite
重载:update
"""
def __init__(self, image_name, speed=1):
super(Game_Jinglin, self).__init__()
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed
def update(self, *args):
self.rect.y += self.speed # 竖直方向自加
注:浅谈pygame sprite(精灵)
1 Sprite模块、sprite对象
2
3 在pygame.sprite模块里面包含了一个名为Sprite类,
4 他是pygame本身自带的一个精灵。但是这个类的功能比较少,
5 因此我们新建一个类对其继承,在sprite类的基础上丰富,以方便我们的使用。
6 rect (位置)
7 draw(绘制)
8 update(更新画面)
9 碰撞检测(groupcollide(组) spritecollide(对象))
10 精灵类参考:https://www.cnblogs.com/msxh/p/5013555.html