Python开发飞机大战(1)

最近在学习python语言,发现Python中的Pygame模块,可以用来编写一些小游戏,所有就开发一个飞机大战游戏练练手。

这里顺便有我用的开发飞机大战用的素材素材。

开发环境:Linux

Python解释器版本:python3.4

Python的IDE:Pycharm


打开pycharm,新建一个plane_sprites.py的Python文件

1.导入模块

#导入pygame模块
import pygame
使用from ... import *  方式导入模块的方法,可直接使用模块中的名字,前缀不用加模块名。使用pygame开发游戏,需要导入pygame模块。

2.定义常量

# pygame的矩形Rect类创建一个矩形对象
SCREEN_RECR = pygame.Rect(0, 0, 480, 700)
FRAME_PRE_SEC = 60
python中没有真正的常量,只是通过全部大写字母来标示为常量。
屏幕矩形对象: SCREEN_RECT通过pygame的Rect类创建一个矩形对象,
FRAME_PRE_SEC: 刷新频率 60HZ

3.定义游戏精灵类

Pygame中所有移动对象都可看做是一个精灵(sprite),精灵之间能够进行相互的交互通信,例如碰撞检测等等,对于pygame模块中精灵的介绍网上有很多资源,例如《Pygame之精灵》在这里我方飞机就是一个精灵对象,因此其类GameSprite的 定义 继承自pygame的sprite模块的Sprite类。
class GameSprite(pygame.sprite.Sprite):

    def __init__(self, image_name, speed=5):
        super().__init__()
        self.image = pygame.image.load(image_name)
        self.rect = self.image.get_rect()
        self.speed = speed
    
    def update(self):
        self.rect.y += self.speed
游戏精灵初始化:
①因为是继承自父类,所以初始化开始先通过super()方法创建对象调用父类的__init__方法 
②通过调用pygame的image模块的load方法加载图片,创建精灵类的image属性
③通过调用image属性的get_rect()方法,创建rect属性
④创建speed属性

游戏精灵类的update方法,修改更新游戏精灵的rect属性,实现精灵的移动

4.定义游戏背景类

游戏背景也可以看做一个精灵,所以创建游戏背景类BackGround,继承自GameSprite类
class BackGround(GameSprite):
    def __init__(self, is_alt = False):
        super().__init__("./image/background.png")
        if is_alt:
            self.rect.y = -self.rect.height

    def update(self):
        super().update()
        if self.rect.y >= SCREEN_RECR.height:
            self.rect.y = -self.rect.height
①重写__init__方法,通过super()创建对象调用父类__init__方法,同时进行扩展,根据is_alt的逻辑对rect属性进行初始化
②重写update方法, 通过super()创建对象调用父类 update方法,同时进行扩展,根据rect.y进行判断,背景是否已出屏幕,从而实现两个背景循环移动到屏幕的顶端


以上就完成了plane_sprites模块的建立,主要完成游戏精灵类和背景类的封装。







你可能感兴趣的:(Python)