Bonjour tout le monde,

Est-il possible de temporiser les tirs de mon avion via un delay ou autre sans bloquer le programme ? J'ai passé 3h à checher sur le forum et le net, j'ai vu des class et des defs mais je ne comprends pas comment implémenter ça dans mon programme.
Je voudrais gérer les tirs de mon missile (via la touche espace, voir dans mon code) sans que cela interfère sur l'avion ou le fond qui défile, et mettre un intervalle de 3s entre deux tirs pour éviter ça : Nom : bug.JPG
Affichages : 953
Taille : 35,7 Ko
import pygame
from pygame.locals import *
import time

VERSION = "0.7"

try:
pygame.init()
pygame.font.init()
pygame.display.init()
horloge = pygame.time.Clock()
pygame.display.set_caption('Top Gun 2D')
ecran = pygame.display.set_mode((1280, 720), pygame.FULLSCREEN) #Crée la fenêtre de tracé
pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible.
pygame.key.set_repeat(50, 30) #Au bout de 50ms d'appui sur la touche, python ré-envoie une instruction d'appui sur celle ci, puis toutes les 30ms
#variations de coordonées de 30ms choix excellent qui permet d'éviter de faire ramer le pc et n'est pas trop rapide pour l'oeil, qui voie les bords de l'avion en double sinon.
continuer = 1 #Initialisation des variables
fullscreen = 1
abscisse = 720
ordonnee = 480
tir = 10
tir = pygame.image.load("missile.png")
son_tir = pygame.mixer.Sound("son_tir.ogg")
list_missile=[] # tableau des missiles
fond1 = pygame.image.load('fond.jpg')
fond2 = pygame.image.load('fond.jpg') #charge deux fonds différents : ce procédé est expliqué sur le site de Dorian.
ordonnee_fond1 = 0
ordonnee_fond2 = fond1.get_height() #Permet de déifinir l'ordonnée du fond n°2 en fonction de la hauteur du premier : cela permet de changer l'image de fond sans redéfinir la hauteur du blit dans le script!
chasseur_f14=pygame.image.load("f14.png")
pos_f14 = pygame.Rect(abscisse,ordonnee,100,100)
ecran.blit(chasseur_f14,pos_f14)

while continuer:

pygame.display.flip()
ecran.blit(fond1, (0,ordonnee_fond1))
ecran.blit(fond2, (0,ordonnee_fond2))
ordonnee_fond1 -= 1
ordonnee_fond2 -= 1

if ordonnee_fond1 == -1 * fond1.get_height():
ordonnee_fond1 = ordonnee_fond2 + fond2.get_height()
if fond2 == -1 * fond2.get_height():
ordonnee_fond2 = ordonnee_fond1 + fond1.get_height()

ecran.blit(chasseur_f14,pos_f14)
pygame.display.flip()

# Fait apparaitre les missiles
for missile in list_missile:
missile[2]=missile[2]-5
ecran.blit(missile[0],(missile[1],missile[2]))
# Fait apparaitre les missiles(image)

for event in pygame.event.get():
clav=pygame.key.get_pressed()

if clav[K_ESCAPE] : #Permet de quitter en appuyant sur la croix
continuer = 0
pygame.display.flip()

if clav[K_F10]: #Permet de bassculer l'affichage en fullscreen ou en une fenêtre que l'on peut redimensionner!
if fullscreen == 1:
ecran=pygame.display.set_mode([1280,720],pygame.RESIZABLE)
fullscreen = 0
else :
ecran = pygame.display.set_mode((1280, 720), pygame.FULLSCREEN)
fullscreen = 1

if clav[K_UP] :
ordonnee-=7

if clav[K_DOWN]:
ordonnee+=7
else :
chasseur_f14=pygame.image.load("f14.png")

if clav[K_LEFT]:
abscisse-=7
chasseur_f14=pygame.image.load("f14l.png")

if clav[K_RIGHT]:
abscisse+=7
chasseur_f14=pygame.image.load("f14r.png")

pos_f14 = pygame.Rect(abscisse,ordonnee,40,40)
ecran.blit(chasseur_f14,pos_f14)
pygame.display.flip()

horloge.tick(30) #30 frames par seconde : cela influe sur la vitesse de défilement du fond

if clav [K_SPACE] :
missile=[tir,abscisse,ordonnee] #initialisation du missile
pos_tir = pygame.Rect(abscisse,ordonnee,5,10)
list_missile.append(missile)
pos_tir= Rect.move(pos_tir, 0,0)
ecran.blit(tir,pos_tir)
son_tir.play()
pygame.time.delay(100)

finally:

pygame.quit()
Merci de me lire !