выдает ошибку в строке screen.blit(bg(0,0))

код:

import pygame
import random

from pygame import mixer

mixer.init()
mixer.music.load("space.ogg")
mixer.music.play()

WIDTH = 480
HEIGHT = 600
FPS = 60

# Задаем цвета


bg = pygame.image.load('galaxy.jpg')

black = (0, 0, 0)

# Создаем игру и окно
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Шутер")
clock = pygame.time.Clock()

class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load('rocket.png')
        self.rect = self.image.get_rect()
        self.rect.centerx = WIDTH / 2
        self.rect.bottom = HEIGHT - 10
        self.x = 0

    def update(self):
        self.speedx = 0
        ks = pygame.key.get_pressed()
        if ks[pygame.K_LEFT]:
            self.x = -8
        if ks[pygame.K_RIGHT]:
            self.x = 8
            self.rect.x += self.x
        if self.rect.right > WIDTH:
            self.rect.right = WIDTH
        if self.rect.left < 0:
            self.rect.left = 0

all_sprites = pygame.sprite.Group()
player = Player()

all_sprites.add(player)


running = True

while running:
    clock.tick(FPS)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    all_sprites.update()
    
    screen.blit(bg(0,0))

    all_sprites.draw(screen)
    bg.draw(screen)

    pygame.display.flip()

pygame.quit() 

Ответы (2 шт):

Автор решения: Aleksandr Fetisov

Ошибка возникает из-за того, что пытаетесь вызвать функцию bg как функцию, но на самом деле bg является загруженным изображением. Решить можно заменив строку screen.blit(bg(0,0)) на screen.blit(bg, (0,0)), чтобы нарисовать загруженное изображение на экране

import random
import pygame
from pygame import mixer

mixer.init()
mixer.music.load("space.ogg")
mixer.music.play()

WIDTH = 480
HEIGHT = 600
FPS = 60

# Задаем цвета
bg = pygame.image.load('galaxy.jpg')
black = (0, 0, 0)

# Создаем игру и окно
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Шутер")
clock = pygame.time.Clock()

class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load('rocket.png')
        self.rect = self.image.get_rect()
        self.rect.centerx = WIDTH / 2
        self.rect.bottom = HEIGHT - 10
        self.x = 0

    def update(self):
        self.speedx = 0
        ks = pygame.key.get_pressed()
        if ks[pygame.K_LEFT]:
            self.x = -8
        if ks[pygame.K_RIGHT]:
            self.x = 8
            self.rect.x += self.x
        if self.rect.right > WIDTH:
            self.rect.right = WIDTH
        if self.rect.left < 0:
            self.rect.left = 0

all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)

running = True

while running:
    clock.tick(FPS)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    all_sprites.update()
    
    screen.blit(bg, (0,0))

    all_sprites.draw(screen)
    pygame.display.flip()

pygame.quit() 
→ Ссылка
Автор решения: shiyacode

При передаче аргументов в функцию screen.blit(bg(0,0)) пропущена запятая. :)

→ Ссылка