Проблема с тем, что Sprite не отображается при использовании Pygame.Python

Программы на Python
Ответить
Anonymous
 Проблема с тем, что Sprite не отображается при использовании Pygame.

Сообщение Anonymous »

Я следую руководству для начинающих, чтобы начать использовать pygame, но у меня застряло отображение спрайтов. Я не могу сделать его видимым на экране. Ниже приведен код, относящийся к спрайту.
Я не могу найти, где я напутал, есть идеи? ?
Мой спрайт — «Снаряд» и определен в классе снарядов, он отправляется игроком, поэтому я добавил метод «launch_projectile», и в основном он должен отображать снаряды.
Класс снаряда
import pygame

# Définir la classe projectile
class Projectile(pygame.sprite.Sprite):

# Définir le constructeur de la classe
def __init__(self, player):
super().__init__()
self.velocity = 5
self.image = pygame.image.load('Assets\Blast.png')
#self.image = pygame.transform.scale(self.image, (50, 50))
self.rect = self.image.get_rect()
self.rect.x = player.rect.x + 100
self.rect.y = player.rect.y

Класс игрока
import pygame
from projectile import Projectile

class Player(pygame.sprite.Sprite):

def __init__(self):
super().__init__()
self.health = 100
self.max_health = 100
self.attack = 10
self.velocity = 1
self.all_projectiles = pygame.sprite.Group()
self.image = pygame.image.load('Assets\Flying_Raccoon.png')
self.image = pygame.transform.scale(self.image, (100, 100))
self.rect = self.image.get_rect()
self.rect.x = 0
self.rect.y = 0

# Créer un nouveau Projectile
def launch_projectile(self):
self.all_projectiles.add(Projectile(self))

### Méthodes de déplacement (X / Y) ###
def move_right(self):
self.rect.x += self.velocity

def move_left(self):
self.rect.x -= self.velocity

def move_up(self):
self.rect.y -= self.velocity

def move_down(self):
self.rect.y += self.velocity

Игра
import pygame
from player import Player

class Game:
def __init__(self):
#Générer le joueur à la création du jeu
self.player = Player()
self.pressed = {}

Основная
import pygame
from game import Game
pygame.init()

pygame.display.set_caption("Pilot Raccoon")
screen = pygame.display.set_mode((1080,720))

#Charger arrière plan
background = pygame.image.load('Assets\Bg.jpg')

#Charger le jeu
game = Game()

running = True

#Boucle du jeu
while running:

#Mettre à jour l'écran
pygame.display.flip()

# Afficher le background
screen.blit(background, (0, 0))
# Afficher le joueur
screen.blit(game.player.image, game.player.rect)
# Afficher les projectiles
game.player.all_projectiles.draw(screen)

# Déplacement du joueur
if game.pressed.get(pygame.K_RIGHT) and game.player.rect.x + game.player.rect.width < screen.get_width():
game.player.move_right()
elif game.pressed.get(pygame.K_LEFT) and game.player.rect.x > 0:
game.player.move_left()
elif game.pressed.get(pygame.K_UP) and game.player.rect.y > 0:
game.player.move_up()
elif game.pressed.get(pygame.K_DOWN) and game.player.rect.y + game.player.rect.height < screen.get_height():
game.player.move_down()

for event in pygame.event.get():

# Evenement de fermeture de la fenêtre
if event.type == pygame.QUIT:
running = False

# Détecter la touche enfoncée
elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True

# Détecter si la touche espace est enfoncée
if event.type == pygame.K_SPACE:
game.player.launch_projectile()

elif event.type == pygame.KEYUP:
game.pressed[event.key] = False


pygame.quit()
→ Отредактировано с полным кодом
EDIT 02 с ответом :
В главном меню для запуска снаряда при нажатии клавиши пробела код был:
...
# Détecter la touche enfoncée
elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True

# Détecter si la touche espace est enfoncée
if event.type == pygame.K_SPACE:
game.player.launch_projectile()

В приведенном выше условии «.type» следует заменить на «.key»:
...
# Détecter la touche enfoncée
elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True

# Détecter si la touche espace est enfoncée
if event.key == pygame.K_SPACE:
game.player.launch_projectile()


Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-pygame
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»