你如何使用 pygame.sprite.Sprite?
how do you use pygame.sprite.Sprite?
我目前正在单独的文件下编写一个小游戏,但遇到 pygame.sprite.Sprite
的问题。每次我去 运行 播放器 class 我都会得到这个错误 AttrbuteError: "module" object has no attribute "sprite"
。我在这个网站上做了很多搜索,也在 pygame 网站上寻找答案,但我只找到了其他代码和答案,不能解决我当前的问题。如果有人可以帮助我解决我的问题,那就太好了。
这是我给玩家的class:
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')
全名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
和第二个 [=16] 的上部 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
前后必须是两个_
- 您可以使用 CamelCase 命名 类 - Player、Bullet - 类似于 Sprite、Rect。请参阅 PEP8 中的建议 (PEP 0008 -- Style Guide for Python Code)(PEP8 - Class Names)
- 在
class
和 def
之前使用空行以使代码更具可读性 (PEP8 - Blank Lines)。
我目前正在单独的文件下编写一个小游戏,但遇到 pygame.sprite.Sprite
的问题。每次我去 运行 播放器 class 我都会得到这个错误 AttrbuteError: "module" object has no attribute "sprite"
。我在这个网站上做了很多搜索,也在 pygame 网站上寻找答案,但我只找到了其他代码和答案,不能解决我当前的问题。如果有人可以帮助我解决我的问题,那就太好了。
这是我给玩家的class:
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')
全名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
和第二个 [=16] 的上部 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
前后必须是两个_
- 您可以使用 CamelCase 命名 类 - Player、Bullet - 类似于 Sprite、Rect。请参阅 PEP8 中的建议 (PEP 0008 -- Style Guide for Python Code)(PEP8 - Class Names)
- 在
class
和def
之前使用空行以使代码更具可读性 (PEP8 - Blank Lines)。