gpt4 book ai didi

python - 为什么我的队伍没有 Sprite 属性?

转载 作者:行者123 更新时间:2023-12-01 00:34:25 24 4
gpt4 key购买 nike

我正在尝试循环遍历我的组中的 Sprite ,以便我可以绘制它们。但是,我收到一条消息,表明该组没有 Sprite 属性。

我尝试在功能模块(我收到错误的地方)而不是主模块中声明组和 Sprite 。那是行不通的。我尝试在没有 Sprite 属性的情况下做到这一点。那是行不通的。

   #Assign bullets sprite a value
bullet = Bullet(screen, ship)
#assign a group for bullets
pewpew = Group()

这是项目符号类:

  import pygame
from pygame.sprite import Sprite

class Bullet():

def __init__(self, screen, ship):
"""initiate the bullet sprite"""
super(Bullet, self).__init__()
self.screen = screen

#Places everyone, places
self.rect = pygame.Rect(0, 0, 3, 15)
self.rect.centery = ship.rect.centery
self.rect.top = ship.rect.top

#Decimal and delightful colors!
self.x = float(self.rect.x)
self.color = 60, 60, 60

def update(self):
#almost faster than superman
self.x =+ 5
self.rect.x = self.x

def draw_bullet(self):
"""Animate"""
pygame.draw.rect(self.screen, self.color, self.rect)

这里是错误发生的地方:

   def screenupdate(screen, rct, ship, bullet, pewpew):
"""Update screen images and flip to a new screen"""
#Redraw screen for everytime the function loops
screen.fill((230, 230, 230))
#Redraw the bullets
for bullet in pewpew.sprite():
bullet.draw_bullet()
ship.blitme()
#rectangle.draw(screen)

#Make the screen visible
pygame.display.flip()

我收到的消息不是循环,而是:“对于 pewpew.sprite() 中的子弹:属性错误:“组”对象没有属性“ Sprite ””

最佳答案

这不是 Sprite 和组应该如何工作的。如果您只想循环遍历集合并自己完成所有绘图(没有 Group 提供的任何功能),请使用简单列表 ( [] )。

如果您想实际使用 Group 类,请确保 Bullet实际上是一个Sprite :

class Bullet(pygame.sprite.Sprite):

def __init__(self, ship, *grps):
super().__init__(*grps)
self.image = pygame.Surface((3, 15))
self.image.fill((60, 60, 60))
self.rect = self.image.get_rect()
self.rect.centery = ship.rect.centery
self.rect.top = ship.rect.top

def update(self):
self.rect.move_ip((5, 0))

然后创建组/项目符号:

pewpew = Group()     # create the Group
Bullet(ship, pewpew) # create the Bullet

在你的主循环中,只需调用 updatedraw在组实例上:

def screenupdate(screen, rct, ship, bullet, pewpew):
"""Update screen images and flip to a new screen"""
#Redraw screen for everytime the function loops
screen.fill((230, 230, 230))

pewpew.update()
pewpew.draw(screen)

ship.blitme()

pygame.display.flip()

现在确保ship也是Sprite并将其添加到 pewpew分组,这样您就可以摆脱 ship.blitme() - 功能也是如此。

关于python - 为什么我的队伍没有 Sprite 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57915048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com