Код может показаться немного длинным, но все хорошо прокомментировано.

Во-первых, ошибка, которую я получаю:

  File "C:/Users/nellissery/Desktop/david/spaceinvader/main.py", line 56, in <module>
player()
File "C:/Users/nellissery/Desktop/david/spaceinvader/main.py", line 28, in player
screen.blit(plr, plr_x, plr_y)
TypeError: invalid destination position for blit

Это ошибка. остальная часть кода:

   # screen and icon
scr_height = 600
scr_width = 800
icon_sprite = 'spaceship.png'
# title:
pygame.display.set_caption('Space Invaders')

# icon:
icon = pygame.image.load(icon_sprite)
pygame.display.set_icon(icon)

# player
plr_sprite = 'player-ship.png'
plr_x = 200
plr_y = 200
plr = pygame.image.load(plr_sprite)

def player():
    # blit means to draw
    screen.blit(plr, plr_x, plr_y)

# in pygame, x-y axis has origin at top, left corner

#  to create a screen
screen = pygame.display.set_mode((scr_width, scr_height))

run = True
# the game loop:
while run:

    # background colour
    screen.fill((240,248,255))
    # to go through the events
    for event in pygame.event.get():
        # to check if the exit button is pressed
        if event.type == pygame.QUIT:
            run = False
    # to make sure that the changes to display are visible, we need to update display:
    # to put the player on screen:
    player()
    pygame.display.update()

Некоторая помощь будет оценена, так как я просматривал код несколько раз и не знаю, где я ошибаюсь. Изображение 64*64. Перестает работать функция плеера. Я правильно сохранил актив, и, вероятно, он хорошо загружается. я не понимаю, почему я получаю сообщение об ошибке

1
David Jijo 19 Апр 2020 в 07:50

1 ответ

Второй аргумент pygame.Surface.blit имеет быть кортежем с 2 компонентами. Этот кортеж указывает двумерную координату, которая определяет левый верхний угол исходной поверхности на месте назначения. В качестве альтернативы второй аргумент также может быть Rect.

screen.blit(plr, plr_x, plr_y)

screen.blit(plr, (plr_x, plr_y))
0
Rabbid76 19 Апр 2020 в 09:33
Ах да, это имеет смысл.
 – 
David Jijo
19 Апр 2020 в 10:13