先从子弹开始写。子弹是敌机、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()用来显示,不加子弹不显示。