cs_Linkey
Messages postés1Date d'inscriptionjeudi 11 juin 2009StatutMembreDernière intervention15 avril 2010
-
15 avril 2010 à 20:11
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
1 mai 2010 à 23:38
Bonjour,
Je débute sous python.
J'essaie de créer un jeu Space Invader pour apprendre à utiliser Pygame.
J'utilise une main loop pour détecter toutes les touches tapées par l'utilisateur, mais je l'utilise aussi pour faire bouger les vaisseaux spatiaux ennemis.
Problème: à chaque fois que le joueur bouge, que les ennemis bougent ou que le tir d'un deux bouge, je doit rafraichir le fond d'écran et tous les vaisseaux. Forcément sa saccade, au bout de deux tirs les vaisseaux ennemis ne bougent plus.
D'où ma question:
Existe -t- il une possibilité de timer ou thread sous Python qui permettrait d'exécuter des taches en arrière plan (faire bouger les ennemis) sans ralentir mon jeux.
Ou bien, est ce que je n'optimise pas suffisamment mon programme ?
Merci.
Main loop:
while inGame:
count = count +1
#------ displaying player ship
move(clavier()) # détection des controles
#--------- end
#----- displaying computers ships
if(Computer.loose == False):
if (count%170)==0:
Computer.moveAll(width)
screen.blit(background,backgroundRect)
for x in Computer.ships:
screen.blit(x.image, x.rect )
screen.blit(Comica.image, Comica.rect)
count = 1
#-------- end
#---- shooting display
if shooted == 1:
for x2 in shoots:
screen.blit(x2.image,x2.rect)
if ((x2.test == True) & ((count%25)==0)):
screen.blit(background, backgroundRect )
for x in Computer.ships:
screen.blit(x.image, x.rect )
screen.blit(Comica.image, Comica.rect)
x2.Continue(Computer)
elif(x2.test == False):
shoots.remove(x2)
#----------end
else:
#---- lost...
inGame = False
screen.blit(Computer.image, Computer.rect )
pygame.display.update()
A voir également:
Python timer thread
Jeu de la vie corrigé python - Meilleures réponses
Plus généralement ce donne cela :
threading.Thread(group=None, target=None, name=None, args=(), kwargs={})
> group ?
> target le nom de ta fonction à exécuter dans un Thread
> name le nom de ton Thread
> args les arguments de ta fonction
> kwargs ?