我正在按照初学者教程开始使用pygame,但我被精灵显示卡住了。我无法在屏幕上显示它,请在下面找到与精灵相关的代码。
我找不到我搞砸的地方,你知道吗?
我的Sprite是“Projectile”,在Projectile类中定义,它是由玩家发送的,所以我添加了一个“launch_Projectile”方法,它主要应该显示投射物
弹丸类
import pygame
class Projectile(pygame.sprite.Sprite):
def __init__(self, player):
super().__init__()
self.velocity = 5
self.image = pygame.image.load('Assets\Blast.png')
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
def launch_projectile(self):
self.all_projectiles.add(Projectile(self))
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):
self.player = Player()
self.pressed = {}
Main
import pygame
from game import Game
pygame.init()
pygame.display.set_caption("Pilot Raccoon")
screen = pygame.display.set_mode((1080,720))
background = pygame.image.load('Assets\Bg.jpg')
game = Game()
running = True
while running:
pygame.display.flip()
screen.blit(background, (0, 0))
screen.blit(game.player.image, game.player.rect)
game.player.all_projectiles.draw(screen)
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():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True
if event.type == pygame.K_SPACE:
game.player.launch_projectile()
elif event.type == pygame.KEYUP:
game.pressed[event.key] = False
pygame.quit()
用完整代码编辑
用答案编辑02:
在Main中,如果按空格键发射弹丸,代码为:
...
# 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()