pygame 飞机大战子弹的编写(一)绘制子弹

先从子弹开始写。子弹是敌机、BOSS机和英雄机都要用到的,涉及到各种花样玩法

定义子弹类。

先简单的定义,建个bullet.py文件,建立Bullet类,从pygame.sprite.Sprite继承。

必须初始化函数里用父类的初始化函数,不然出错。

self.image 和 self.rect这两个必须设置,不然无法完成初始化。

import pygame

class Bullet(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load('images/bullet1.png')
        self.rect = self.image.get_rect()
        

   

建个main.py文件,套用游戏框架,类MainScene来实现游戏的总体控制。代码如下:

import pygame
from bullet import *
from sys import exit



class MainScene(object):
    def __init__(self):
        self.size = (480,852)
        self.scene = pygame.display.set_mode(self.size)
        pygame.display.set_caption("自学飞机大战--V0.98")
        self.image = pygame.image.load('images/bg.png')
        #把子弹加入精灵组
        self.bullet_sprite = pygame.sprite.Group()
        bullet = Bullet()
        self.bullet_sprite.add(bullet)

    def drawElements(self):
        self.scene.blit(self.image,(0,0)) #背景
        
    

    def handleEvent(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
           
    def runScene(self):
        while True:
           
            self.drawElements()
            self.handleEvent()
            
            #bullet里都写的,也能用,因为父类里有了。
            
            self.bullet_sprite.update()
            self.bullet_sprite.draw(self.scene)
            pygame.display.update()



if __name__ == '__main__':
    mainScene = MainScene()
    mainScene.runScene()

sprite.update()用来更新数据,不加子弹不运动,目前bullet函数里没写代码,默认不动。 spitre.draw()用来显示,不加子弹不显示。

猜你喜欢

转载自blog.csdn.net/hailler1119/article/details/88585681