Python 精灵小组将不会闪电

Python 精灵小组将不会闪电,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,我又一次在学校做一个项目,我觉得有些事情应该很简单,但我很难做到 我有代码工作;它不是崩溃,但也不是闪电。我创建了一个第一人称射击游戏,使用精灵作为“僵尸目标”。我在僵尸类中有更新来移动图像,但我知道我有多个问题。 和往常一样,我只是在问一些方向 非常感谢 导入pygame,随机,全局 pygame.init() screen=pygame.display.set_模式((640480)) 类圆(pygame.sprite.sprite): 定义初始化(自): pygame.sprite.spr

我又一次在学校做一个项目,我觉得有些事情应该很简单,但我很难做到

我有代码工作;它不是崩溃,但也不是闪电。我创建了一个第一人称射击游戏,使用精灵作为“僵尸目标”。我在僵尸类中有更新来移动图像,但我知道我有多个问题。
和往常一样,我只是在问一些方向

非常感谢

导入pygame,随机,全局
pygame.init()
screen=pygame.display.set_模式((640480))
类圆(pygame.sprite.sprite):
定义初始化(自):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.image=pygame.Surface((50,50))
self.image.fill((255,255,255))
self.image.set\u颜色键(255)
pygame.draw.circle(self.image,(255,0,0),(25,25),25,1)
self.image.set_alpha(75)
pygame.draw.circle(self.image,(255,0,0),(25,25),3,0)
self.rect=self.image.get_rect()
def更新(自我):
self.rect.center=pygame.mouse.get_pos()
类僵尸(pygame.sprite.sprite):
定义初始化(自):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.image=pygame.Surface((50,50))
self.image.fill((255255))
self.rect=self.image.get_rect()
pos=pygame.mouse.get_pos()
self.x=random.randrange(0,screen.get_width())
self.y=random.randrange(0,screen.get_height())
self.ani\u speed\u init=8
self.ani\u speed=self.ani\u speed\u init
self.ani=glob.glob(“僵尸”\u walk\u r*.png)
self.ani.sort()
self.ani_pos=0
self.ani_max=len(self.ani)-1
self.img=pygame.image.load(self.ani[1])
def更新(自我,pos):
屏幕blit(self.img,(self.x,self.y))
def喷射(killShotSpot):
killshotbill=pygame.mixer.Sound(“bullet.wav”)
杀手锏
打印“记录点”+str(killShotSpot)
def main():
pygame.display.set_标题(“僵尸消失了”)
background=pygame.Surface(screen.get_size())
背景填充((255,255,255))
屏幕光点(背景,(0,0))
圆圈=圆圈()
僵尸=僵尸()
allSprites=pygame.sprite.Group(圆圈,僵尸)
#隐藏鼠标
pygame.mouse.set_可见(False)
clock=pygame.time.clock()
继续=正确
继续进行时:
时钟滴答(30)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
继续=错误
如果event.type==pygame.MOUSEBUTTONDOWN:
killShotSpot=pygame.mouse.get_pos()
射击(射击点)
pygame.draw.circle(背景,(255,0,0),killShotSpot,3,0)
所有精灵。清除(屏幕、背景)
allSprites.update()
所有精灵。绘制(屏幕)
pygame.display.flip()
pygame.display.flip()
#返回鼠标
pygame.mouse.set_可见(True)
如果名称=“\uuuuu main\uuuuuuuu”:
main()
请参见:

将包含的精灵绘制到曲面参数。这将使用源曲面的
Sprite.image
属性和位置的
Sprite.rect

类中根本不需要属性
self.x
self.y
slef.img
。将位置存储在
.rect
属性中,将图像存储在
.image
属性中:

类僵尸(pygame.sprite.sprite):
定义初始化(自):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.ani\u speed\u init=8
self.ani\u speed=self.ani\u speed\u init
self.ani=glob.glob(“僵尸”\u walk\u r*.png)
self.ani.sort()
self.ani_pos=0
self.ani_max=len(self.ani)-1
self.image=pygame.image.load(self.ani[1])
x=random.randrange(0,screen.get_width())
y=random.randrange(0,screen.get_height())
self.rect=self.image.get_rect(中心=(x,y))
def更新(自我,pos):
通过
此外,这是一个问题。您需要在应用程序循环中绘制场景并更新显示,而不是在应用程序循环后更新显示:

def main():
# [...]
继续进行时:
时钟滴答(30)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
继续=错误
如果event.type==pygame.MOUSEBUTTONDOWN:
killShotSpot=pygame.mouse.get_pos()
射击(射击点)
pygame.draw.circle(背景,(255,0,0),killShotSpot,3,0)
#-->|压痕
所有精灵。清除(屏幕、背景)
allSprites.update()
所有精灵。绘制(屏幕)
pygame.display.flip()

您是否忘记在问题代码中缩进执行循环?它看起来应该是
main()
函数的一部分。另外,我会移除巨大的空白块。。。它们似乎没有添加任何内容,需要更多的滚动。我正在等待有人对此发表意见。在我的原始程序中,缩进很好。当我试图把它发布在这里进行评论时,论坛并没有把所有的代码都放在滚动框中。我手动缩进这些行,让滚动框接受它们。如果我错了,请纠正我,但从僵尸更新方法中我可以看到,你只是在闪动背景。难道你不想画它的真实图像吗?你知道你的权利!self.img是我需要的。好的,我重新输入了代码。。工作正常,但现在我需要了解在与rect成功碰撞并单击鼠标得分“命中”后重画的更新