Je suis de retour ... Après avoir passé beaucoup de temps à travailler sur mon jeu, j'ai rencontré 2 questions. Les deux concernant l'affichage des sprites et du texte. Le premier est, texte clignotant. Je parie que c'est arrivé à beaucoup d'entre vous, mais en googlant, je n'ai pas trouvé de réponse directe à ce qui le cause. Si quelqu'un pouvait m'expliquer pourquoi mon texte clignote quand je le blitte à l'écran, je l'apprécierais énormément.Texte clignotant et Sprites en pygame
Ma prochaine question est presque la même que ma première, sauf qu'il s'agit d'un sprite. J'ai ajouté du code au jeu qui dit à Python de tirer une balle de mon sprite lorsque la barre d'espace est enfoncée. Quand je l'exécute, je ne reçois aucune erreur et ma balle est affichée sur mon écran puis disparaît immédiatement. Je devine que ces deux bogues sont directement liés l'un à l'autre mais je ne suis pas certain de ce qui le cause. Tout le monde qui en sait plus sur pygame que moi, pourriez-vous s'il vous plaît m'expliquer ce qui cause cela afin que je puisse trouver un moyen de résoudre le problème.
Voici mon bunker (le joueur) et la classe de balle:
class Bunker(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
bunker = pygame.image.load(bunk).convert_alpha()
self.image = bunker
self.rect = self.image.get_rect()
bunker_x = 160
bunker_y = 0
self.firecountdown = 0
def update(self, milli):
self.pos = self.rect
if (self.firecountdown > 0):
self.firecountdown -= milli
def collide(self, EnemyTank):
return pygame.sprite.collide_rect(self.rect, EnemyTank.rect)
def fire(self, bullet):
if (self.firecountdown <=0):
bullet.x = 165
bullet.y = 0
bullet.fired = True
bullet.speed = 100
self.firecountdown = 500
class Bullet(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
bullet = pygame.image.load(bull).convert_alpha()
self.image = bullet
self.rect = self.image.get_rect()
self.x = 0
self.y = 0
self.speed = 0
self.forwardx = 1
self.forwardy = 0
self.fired = False
def update(self):
self.pos = self.rect
self.x += self.forwardx * self.speed
self.y += self.forwardy * self.speed
if self.x > 640:
self.fired = False
et une partie de ma boucle principale:
font = pygame.font.SysFont('Courier', 76)
text = font.render('Game Over', True, (0,0,0))
if e_tank_x>640:
screen.blit(text, (100,100))
if bullet.fired == True:
screen.blit(bullet.image, (bullet.x, bullet.y))
Je pense que votre balle ne disparaît pas tellement que de quitter l'écran très rapidement. Essayez de ralentir un peu. – Xymostech
Comment ajoutez-vous la balle? –