首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您如何使用pygame.sprite.Sprite?

您如何使用pygame.sprite.Sprite?
EN

Stack Overflow用户
提问于 2016-01-03 19:44:42
回答 1查看 1.6K关注 0票数 1

我目前正在编写一个单独的文件下的小游戏,并与pygame.sprite.Sprite有一个问题。每次我去运行player类时,我都会得到这个错误AttrbuteError: "module" object has no attribute "sprite"。我在这个网站上做了很多搜索,也在游戏网站上寻找答案,但我只找到了其他的代码和答案,这并不能解决我当前的问题。如果有人能帮我解决我的问题那就太好了。这是我给玩家上的课:

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
复制
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名称的类-播放器,子弹-类似雪碧,直肠。见PEP8 (PEP 0008 -- Python代码样式指南)中的建议(PEP8- 类名)
  • classdef之前使用空行来提高代码的可读性(PEP8 - 空白行)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34580862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档