如何解决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 举报,一经查实,本站将立刻删除。