python写外星人大战,创造一个外星人的时候代码是对的,就是创造一排外星人时出错了

  1. import pygame
    from setting import Setting
    from fc import Ship
    import gf
    from pygame.sprite import Group
    
    
    def rg():
        pygame.init()
        aiis=Setting()
        s=pygame.display.set_mode((aiis.sw,aiis.sh))
        pygame.display.set_caption('王琦大战丁浩')
        fc=Ship(aiis,s)
        bs=Group()
        ws=Group()  #???
        gf.wxrq(aiis, s, ws) #???
    
        while True:
            gf.ce(aiis,s,fc,bs)
            fc.ud()
            gf.shangchuzidan(bs)
            gf.us(s, aiis, fc, bs,ws)  #???
    rg()
  2. import pygame
    import sys
    from bt import Bt
    from wxr import Wxr
    
    def cde(e,aiis,s,fc,bs):
        if e.key == pygame.K_RIGHT:
            fc.mr = True
        elif e.key == pygame.K_LEFT:
            fc.ml = True
        elif e.key == pygame.K_UP:
            fc.mu = True
        elif e.key == pygame.K_DOWN:
            fc.md = True
    
        elif e.key == pygame.K_SPACE:
            zidan(aiis, s, fc, bs)
    
        elif e.key == pygame.K_q:
            sys.exit()
    
    def zidan(aiis,s,fc,bs):
        if len(bs) < aiis.zidanshu:
            nb = Bt(aiis, s, fc)
            bs.add(nb)
    
    def cue(e,fc):
        if e.key == pygame.K_RIGHT:
            fc.mr = False
        elif e.key == pygame.K_LEFT:
            fc.ml = False
        elif e.key == pygame.K_UP:
            fc.mu = False
        elif e.key == pygame.K_DOWN:
            fc.md = False
    
    def ce(aiis,s,fc,bs):
        for e in pygame.event.get():
            if e.type==pygame.QUIT:
                sys.exit()
    
            elif e.type==pygame.KEYDOWN:
                cde(e,aiis,s,fc,bs)
    
            elif e.type==pygame.KEYUP:
                cue(e,fc)
    
    def us(s,aiis,fc,bs,ws):
        s.fill(aiis.sc)
        for bt in bs.sprites():
            bt.huajuxing()
        fc.hz()
        ws.draw(s) #???
        pygame.display.flip()
    
    def shangchuzidan(bs):
        bs.update()
        for bt in bs.copy():
            if bt.r.bottom <= 0:
                bs.remove(bt)
    
    def wxrq(aiis,s,ws):  #???  这整个函数都是新建的
        wxr=Wxr(aiis,s)
        ww=wxr.zpr.width
        wsx=aiis.sw-2*ww
        nax=int(wsx/(2*ww))
    
        for na in range(nax):
            wxr = Wxr(aiis,s)
            wxr.zpx=ww+2*ww*na
            wxr.zpr.x=wxr.zpx
            ws.add(wxr)

我把改过的都用???标出来,就改了两个文件,都是根据书上弄的,为什么运行的时候就显示AttributeError: 'Dinghao' object has no attribute 'image'

这个错误呢!这个'Dinghao'是我的那个外星人的类,我把名字改了一下

你先按书上的代码跑一遍,看程序有没有问题,没有问题你再自己修改一下。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632