飞机的基类不应该去设置我方飞机的初始位置

飞机的基类不应该去设置我方飞机的初始位置

class Plane(pygame.sprite.Sprite):
    """
    飞机的基类
    """
    #飞机的图片
    plane_images = []
    #飞机爆炸图片
    destroy_images = []
    #坠毁的音乐地址
    down_sound_src = None
    #飞机的状态:True:活的 False:死的
    active = True
    #该飞机发射的子弹精灵组
    bullets = pygame.sprite.Group()
    def __init__(self,screen,speed=None):
        super().__init__()
        self.screen = screen
        # 加载静态资源
        self.img_list = []
        self._destroy_img_list = []
        self.down_sound = None
        self.load_src()
        # 飞行的速度
        self.speed = speed or 10
        # 获取飞机的位置
        self.rect = self.img_list[0].get_rect()
        #屏幕的宽度和高度
        self.width,self.height = self.screen.get_size()
        #飞机的宽度和高度
        self.plane_width,self.plane_height = self.img_list[0].get_size()
        # 改变飞机的初始化位置
        self.rect.bottom = self.height
        self.rect.left = (self.width - self.plane_width) / 2

老师将改变飞机的初始化位置写在了飞机的基类中,我感觉有点不合适,因为我方飞机和地方飞机的位置不一样,敌方飞机继承这个位置时就不对。

我觉得可以把设置我方飞机的初始位置写在our_plane的构造方法中:

class OurPlane(Plane):
    """ 我方的飞机 """
    #飞机的图片
    plane_images = constants.OUR_PLANE_IMG_LIST
    #飞机爆炸图片
    destroy_images = constants.OUR_DESTROY_IMG_LIST
    #坠毁的音乐地址
    down_sound_src = None
    def __init__(self,screen):
        super().__init__(screen)
        # 改变飞机的初始化位置
        self.rect.bottom = self.height
        self.rect.left = (self.width - self.plane_width) / 2


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕美 2019-05-30 18:36:44

同学,你好,获取到的不止是我方飞机的位置,还会有敌方飞机的位置,它会根据img_list里元素的不同获取不同的位置。img_list是通过plane_images列表中的元素添加的,我方飞机类和敌方飞机类单独设置的值。同学在我方飞机和敌方飞机类中单独设置获取位置的代码也是可以的。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师