美文网首页
【python3小白上路系列】添加开炮功能~

【python3小白上路系列】添加开炮功能~

作者: Charles_DT | 来源:发表于2020-08-13 21:57 被阅读0次

1.5 射击

下面我们来添加射击功能,向我开炮!玩家按空格键时发射字典,子弹在屏幕中向上穿行,抵达屏幕边缘后消失。

1.5.1 添加子弹设置

首先来更新setting.py,存储Bullet所需的值:

class Settings():
    #存储游戏设置
    def __init__(self):
        #初始化游戏设置

        #屏幕设置
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (230,230,230)

        #飞船设置
        self.ship_speed_factor = 1.5

        #子弹设置
        self.bullet_speed_factor = 1
        self.bullet_width = 3
        self.bullet_height = 15
        self.bullet_color = 60,60,60  
1.5.2 创建Bullet类

设置好子弹的基本属性以后,我们要对子弹进行管理,创建文件bullet.py,同时创建Bullet类。

import pygame
from pygame.sprite import Sprite

class Bullet(Sprite):

    def __init__(self,ai_settings,screen,ship):
        # 在飞船所处位置创建一个子弹对象
        super(Bullet,self).__init__()
        self.screen = screen

        # 在(0,0)处创建一个表示子弹的矩形,再设置正确的位置
        self.rect = pygame.Rect(0,0,ai_settings.bullet_width,
            ai_settings.bullet_height)
        self.rect.centerx = ship.rect.centerx
        self.rect.top = ship.rect.top

        # 存储用小数表示的子弹位置
        self.y = float(self.rect.y)

        self.color = ai_settings.bullet_color
        self.speed_factor = ai_settings.bullet_speed_factor

Bullet类继承了我们从模块pygame.sprite中导入的Sprite类。通过使用精灵,可将游戏中相关的元素编组,进而同时操作编组中的所有元素。创建子弹实例时,需要向init()传递ai_settings,screen和ship实例,还调用了super()来继承Sprite。

先到这里吧,明天继续~

相关文章

网友评论

      本文标题:【python3小白上路系列】添加开炮功能~

      本文链接:https://www.haomeiwen.com/subject/bglvdktx.html