Задать вопрос
@ere123

Не получается создать персонажа с помощью класса?

from pygame import *
window = display.set_mode((600, 600))
display.set_caption("Шлёпа")
class Flopa(sprite.Sprite):
    def __init__(self, image, x, y,):
        sprite.Sprite.__init__(self)
        self.image = transform.scale(image.load("flopa.png"), (50, 50))
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
    def update(self):
        keys = key.get_pressed()
        if keys[K_LEFT]:
            self.rect.x -= 5
        if keys[K_RIGHT]:
            self.rect.x += 5
run = True
while run:
    for e in event.get():
        if e.type == KEYDOWN:
            if e.key == K_ESCAPE: 
                run = False 
    flopa = Flopa(("flopa.png"), 100, 100)
    flopa.update()
    window.fill((250,250,250))
    time.delay(20)
    display.update()

self.image = transform(image.load("flopa.png"), (50, 50))
AttributeError: 'str' object has no attribute 'load'
  • Вопрос задан
  • 56 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@YariKartoshe4ka
Из стандарта PEP8:

Wildcard imports ( from module import * ) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools

У вас происходит "конфликт имён" и pygame.image заменяется аргументом с таким же именем image в конструкторе:

def __init__(self, image, x, y,): # Redefinition of pygame.image
Ответ написан
Комментировать
TalismanChet
@TalismanChet
Лицо зла
Вы используете image как аргумент для Flopa.__init__,
просто поменяйте
def __init__(self, image, x, y,):
на
def __init__(self, _image, x, y,):
и вместо
self.image = transform.scale(image.load("flopa.png"), (50, 50))

используйте
self.image = transform.scale(image.load(_image), (50, 50))

Tакже, у вас имеется излишняя запятая здесь:
def __init__(self, image, x, y>>,<<)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы