我目前正在编写一个单独的文件下的小游戏,并与pygame.sprite.Sprite有一个问题。每次我去运行player类时,我都会得到这个错误AttrbuteError: "module" object has no attribute "sprite"。我在这个网站上做了很多搜索,也在游戏网站上寻找答案,但我只找到了其他的代码和答案,这并不能解决我当前的问题。如果有人能帮我解决我的问题那就太好了。这是我给玩家上的课:
import pygame
import pygame.sprite as Sprite
class player(Sprite.sprite):
def _init_(self,plyrmovement,plyrhealth,plyrdirection):
Sprite.Sprite._init_(self)
def plyrmovement(left,right):
position=[100,100]
direct_left = 'player left'
direct_right = 'player right'
def right():
if event.key == ord('d'):
position[0] += 5
plyrdirection = direct_right
sprite.sprite='playerleft'
def left():
if event.key == ord('a'):
position[0] -= 5
plyrdirection = direct_left
sprite.sprite = 'playerright'
def shoot(self,bullet):
if event.key == K_SPACE:
bullet.bulletmove
def plyrhealth(self):
self.health = 100
class bullet(pygame.Sprite.Sprite):
def _init_(self,bulletmove,bulletdamage):
pygame.image.load('bullet sprite.png')发布于 2016-01-03 20:48:35
全名是pygame.sprite.Sprite。
如果您使用import pygame.sprite as Sprite,那么正确的名称是player(Sprite.Sprite)而不是player(Sprite.sprite) --请参阅两个Sprite中的高级S。
就我而言,最好使用class player(pygame.sprite.Sprite)和bullet(pygame.sprite.Sprite) --在第一sprite中使用较低的s,在第二Sprite中使用高级S --而不使用import pygame.sprite as Sprite。
import pygame
class Player(pygame.sprite.Sprite):
def __init__(self,plyrmovement, plyrhealth, plyrdirection):
pygame.sprite.Sprite.__init__(self)
# ...rest...
class Bullet(pygame.sprite.Sprite):
def __init__(self, bulletmove, bulletdamage):
pygame.sprite.Sprite.__init__(self)
# ...rest...顺便说一下:
init前后的两次。class和def之前使用空行来提高代码的可读性(PEP8 - 空白行)。https://stackoverflow.com/questions/34580862
复制相似问题