Я следую руководству для начинающих, чтобы начать использовать 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
Проблема с тем, что Sprite не отображается при использовании Pygame. ⇐ Python
Программы на Python
1735387722
Anonymous
Я следую руководству для начинающих, чтобы начать использовать pygame, но у меня застряло отображение спрайтов. Я не могу сделать его видимым на экране. Ниже приведен код, относящийся к спрайту.
Я не могу найти, где я напутал, есть идеи? ?
Мой спрайт — «Снаряд» и определен в классе снарядов, он отправляется игроком, поэтому я добавил метод «launch_projectile», и в основном он должен отображать снаряды.
[b]Класс снаряда[/b]
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
[b]Класс игрока[/b]
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
[b]Игра[/b]
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 = {}
[b]Основная[/b]
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()
→ Отредактировано с полным кодом
[b]EDIT 02 с ответом :[/b]
В главном меню для запуска снаряда при нажатии клавиши пробела код был:
...
# 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()
Подробнее здесь: [url]https://stackoverflow.com/questions/79313617/issue-with-sprite-not-showing-up-using-pygame[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия