выдает ошибку в строке 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)) пропущена запятая. :)