ça n'a pas marché, le laser n'apparait même pas.
Par la suite, je vais devoir faire comment pour que le vaisseau tir en continu, à une certaine cadence de tir et, surtout, gerer les colisions avec le sol et le drone ?
ça n'a pas marché, le laser n'apparait même pas.
Par la suite, je vais devoir faire comment pour que le vaisseau tir en continu, à une certaine cadence de tir et, surtout, gerer les colisions avec le sol et le drone ?
bizarre,peut être parce que je suis avec python 2
sinon,j'ai reussi a detecter si le laser touche le drone avec une collision circulaire:
chez moi,ça marche très bien
Code complet : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 import pygame ##import winsound from pygame.locals import * import random from math import * continuer=1 pygame.init() class laser(): def __init__(self,pos): self.pos=pos self.imglaser=pygame.image.load("laser.jpg").convert() self.position_laser=self.imglaser.get_rect() self.position_laser=self.position_laser.move(pos,0) self.hauteur=0 def update_laser(self): self.hauteur+=0.5 self.position_laser[1]=self.hauteur fenetre.blit(self.imglaser,self.position_laser) def touche_drone(self,position_drone): return hypot(self.position_laser[0]-(position_drone[0]+50),self.position_laser[1]-(position_drone[1]+25))<50 fenetre=pygame.display.set_mode((650,800)) pygame.display.set_caption("Protegez la Ville : Utilisez les fleches pour diriger le drone.") ville=pygame.image.load("ville.jpg").convert() drone=pygame.image.load("drone.jpg").convert() position_drone=drone.get_rect() position_drone=position_drone.move(275,450) fenetre.blit(ville,(0,0)) las=laser(random.randint(0,650)) pygame.display.flip() while continuer: key=pygame.key.get_pressed() if key[K_RIGHT]: if position_drone[0]<550:position_drone=position_drone.move(3,0) if key[K_LEFT]: if position_drone[0]>0:position_drone= position_drone.move(-3,0) if las.touche_drone(position_drone): continuer=0 fenetre.blit(ville,(0,0)) fenetre.blit(drone,position_drone) for event in pygame.event.get(): if event.type==QUIT: continuer=0 las.update_laser() pygame.display.update() pygame.quit()
Tout roule, en effet, mais c'est normal que le jeu se ferme au moment de l'interception ?
Pour ce qui est de la colision avec la ville, j'vois comment faire.
Ensuite, il ne restera plus qu'a faire en sorte que le vaisseau tire plusieurs fois et en continu.
c'est normal,t'a juste a mettre ce que tu veux a la place de continuer=0(c'était pour qu'on voit) pour compter le nombre de lasers arretés
du coup,j'ai stocké une liste de laser(l'interêt des classes),ensuite une boléen(True ou False)masque qui permet de ne plus afficher le laser et de ne plus gerer la collision pour faire comme s'il n'existait pas(si je l'avait supprimé,ça aurait changé la taille de la liste et fait des bugs) et puis quand les laser arrivent en bas,ça en recréé un en haut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 import pygame ##import winsound from pygame.locals import * import random from math import * continuer=1 pygame.init() class laser(): def __init__(self,pos,posy): self.pos=pos self.imglaser=pygame.image.load("laser.jpg").convert() self.position_laser=self.imglaser.get_rect() self.position_laser=self.position_laser.move(pos,posy) self.hauteur=posy self.masque=False def update_laser(self): self.hauteur+=0.5 self.position_laser[1]=self.hauteur if not(self.masque):fenetre.blit(self.imglaser,self.position_laser) def touche_drone(self,position_drone): if not(self.masque): return hypot(self.position_laser[0]-(position_drone[0]+50),self.position_laser[1]-(position_drone[1]+25))<50 return False fenetre=pygame.display.set_mode((650,800)) freq=100 pygame.display.set_caption("Protegez la Ville : Utilisez les fleches pour diriger le drone.") score=0 ville=pygame.image.load("ville.jpg").convert() drone=pygame.image.load("drone.jpg").convert() position_drone=drone.get_rect() position_drone=position_drone.move(275,450) fenetre.blit(ville,(0,0)) pygame.display.flip() liste=[] for i in range(0,600,freq): liste.append(laser(random.randint(0,650),i)) while continuer: key=pygame.key.get_pressed() if key[K_RIGHT]: if position_drone[0]<550:position_drone=position_drone.move(3,0) if key[K_LEFT]: if position_drone[0]>0:position_drone= position_drone.move(-3,0) fenetre.blit(ville,(0,0)) fenetre.blit(drone,position_drone) for event in pygame.event.get(): if event.type==QUIT: continuer=0 if liste[0].hauteur>freq: liste.insert(0,laser(random.randint(0,650),0)) liste.pop(-1) for las in liste: if las.touche_drone(position_drone): las.masque=True score+=1 las.update_laser() pygame.display.update() print "score:",score pygame.quit()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager