pygame 浅解

 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

 

 

 

posted @ 2019-07-01 21:48  jum_blog  阅读(339)  评论(0编辑  收藏  举报

载入天数...载入时分秒...