В платформерной игре объект 'str' не имеет атрибута 'get_image', ошибка спрайта, и я понятия не имею, почему - PullRequest
0 голосов
/ 10 мая 2018

Итак, я делаю что-то вроде игры звукового типа, и я хочу, чтобы он просто отображал там на поверхности своего рода плавание вокруг, пока у меня не возникнет идея, как заставить его совершать столкновения и бегать (затем после этого Это хорошая игра звукового типа с наградами за скорость, уровнями и т. д.), и я понятия не имею, что не так с моим кодом, я попытался изменить последовательность моего класса Player и класса sprite. Я играл с ним в течение 2 часов и хочу понять, почему его синтаксис.

Объект 'str' не имеет атрибута 'get_image'

Файл, строка 103, в основном, playerOne = Player (3, 20, 29, 39)

import pygame
import random
import sys

WINDOWWIDTH = 800
WINDOWHEIGHT = 600
WINDOWSIZE = [WINDOWWIDTH,WINDOWHEIGHT]

WHITE = (255,255,255)
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)

COLORS = [WHITE,RED,GREEN,BLUE]

FPS = 30

#Classes Go Here
class SpriteSheet(object):

   def __init__(self, file_name):

       self.sprite_sheet = pygame.image.load(file_name).convert()

   def get_image(self, x, y, width, height, colorkey):

       image = pygame.Surface([width, height]).convert()
       image.blit(self.sprite_sheet, (0,0), (x,y, width, height))
       image.set_colorkey(colorkey)
       return image

class Player(pygame.sprite.Sprite):

    def __init__(self, x, y, width, height):

        super().__init__()

        #Sprite
        self.color_key = (72, 98, 78)
        sprite_sheet = 'spritesheet.png'
        self.image = sprite_sheet.get_image(x, y, width, height, self.color_key)
        self.rect = self.image.get_rect()
        # Location
        self.rect.x = 10
        self.rect.y = 100
        # Velocity
        self.change_x = 0
        self.change_y = 0

    def update(self):
        self.rect.x += self.change_x
        self.rect.y += self.change_y

def main():
    global COLORS, WINDOWSIZE, DISPLAYSURF, FPSCLOCK
    pygame.init()
    DISPLAYSURF = pygame.display.set_mode(WINDOWSIZE)
    FPSCLOCK = pygame.time.Clock()
    #Initializations go here
    playerOne = Player(3, 20, 29, 39)
    active_sprite_list = pygame.sprite.Group()
    active_sprite_list.add(playerOne)
    while True:
        #Controls go here
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RIGHT:
                    playerOne.change_x += 50
                if event.key == pygame.K_LEFT:
                    playerOne.change_x -= 50
                if event.key == pygame.K_UP:
                    playerOne.change_y -= 50
                if event.key == pygame.K_DOWN:
                    playerOne.change_y += 50
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_RIGHT:
                    playerOne.change_x = 0
                if event.key == pygame.K_LEFT:
                    playerOne.change_x = 0
                if event.key == pygame.K_UP:
                    playerOne.change_y = 0
                if event.key == pygame.K_DOWN:
                    playerOne.change_y = 0
            if event.type == pygame.QUIT:
                quit()



        DISPLAYSURF.fill(BLACK)

        #Game Logic goes here
        #Drawing new objects go here
        active_sprite_list.draw(DISPLAYSURF)
        FPSCLOCK.tick(FPS)
        pygame.display.flip()


#Additional Modules go here

def quit():
    pygame.quit()
    sys.exit()

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 10 мая 2018

Более подробные сведения см. В моем комментарии.

Изменение:

class Player(pygame.sprite.Sprite):

    def __init__(self, x, y, width, height):

        super().__init__()

        #Sprite
        self.color_key = (72, 98, 78)
        sprite_sheet = 'spritesheet.png'
        self.image = sprite_sheet.get_image(x, y, width, height, self.color_key)

Кому:

class Player(pygame.sprite.Sprite):

    def __init__(self, x, y, width, height):

        super().__init__()

        #Sprite
        self.color_key = (72, 98, 78)
        sprite_sheet = SpriteSheet('spritesheet.png') # instantiate the class!
        self.image = sprite_sheet.get_image(x, y, width, height, self.color_key)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...