微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python中的类继承与pygame

如何解决python中的类继承与pygame

所以我正在开发一个业余爱好游戏,我无法让一个类正确继承另一个类。文件结构如下图:

main.py
Enemy
    |walker.py
    |genericEnemy.py

main.py 调用 walker.py,其主类继承自 genericEnemy.py。两者的内容如下:

walker.py

import pygame
from .genericEnemy import generic

class walker(generic):
    pass    

genericEnemy.py

'''
    This class controls generic capabilities for all enemies.
    Specific abilities are in the enemy type's class in the superfolder
'''

import pygame

class generic:
    def __init__(self,speed,pos,size):
        '''
            speed - The entity speed,an int greater than 0
            pos - The (x,y) position of the entity,a list of length 2
            size - The entity hitBox,a list with length 2
        '''

        #Movement Variables
        self.speed = speed
        self.currDir = 1
        self.isMoving = True

        #Drawing Variables
        self.pos = pos
        self.size = size

        #Gravity Variables
        self.isJumping = False
        self.fallCounter = 0
        self.gravityTimer = 0

#==================================================

        def draw(self,surface):
            pygame.draw.rect(surface,(255,0),(self.pos[0],self.pos[1],self.size[0],self.size[1]))

#==================================================

        def updateGravity(self):
            self.fallCounter += 1
            
            if self.fallCounter == 8:
                self.fallCounter = 0
                self.gravityTimer += 1

#==================================================

        def walk(self):
            if self.isMoving:
                self.pos[0] += self.speed * self.currDir

我遇到的主要问题是:

SCREEN = pygame.display.set_mode((0,pygame.FULLSCREEN)
ENEMY = walker(6,[120,1000],[10,30])

然后在

ENEMY.draw(SCREEN)

我收到错误:AttributeError: 'walker' object has no attribute 'draw'

任何帮助将不胜感激,就像我说这是一个业余项目,所以我在 python/pygame 中相当缺乏经验

解决方法

用户 Barmar 是正确的。我,作为一个绝对的核桃,我的功能缩进了太多。

,

使用class generic(pygame.sprite.Sprite):

all_sprites = pygame.sprite.Group()
all_sprites.add(ENEMY)
all_sprites.draw(SCREEN)

pygame 精灵组有 draw function
也许它需要 sprite.image!
它可以是表面
self.image = pygame.Surface([self.size[0],self.size[1]])
self.image.fill((255,0))

或图片文件

self.image = pygame.transform.scale(pygame.image.load(imgname).convert_alpha(),(self.size[0],self.size[1]))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?