Bonjour



Je suis en train de développer une version de Color Switch sur pc grace à pygame, et je sis confronté à un problème depuis un moment et je ne trouve aucun solution



Alors, j'ai dessiné un triangle composé de trois segments de couleurs différentes comme ceci :

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
   zz=-100*(math.sqrt(3)-4)
Coor1=(200,400)
Coor2=(400,400)
Coor3=(300,zz)
r=336
a=300
b=400 - 100*math.sqrt(3)
tour=1
#on créé des variables pour les couleurs
 
red=(255,0,0)
jaune=(255, 228, 54)
bleu=(43, 250, 250)
violet=(121, 28, 248)
 
#On créé une liste où on ajoutera les couleurs
seq=[]
seq.append(red)
seq.append(jaune)
seq.append(red)
seq.append(bleu)
Couleur1=0
#On assigne au hasard une couleur au projectile
couleurProjectile = random.choice(seq)
couleurProjecilte = Couleur1
t=math.pi/40000
def triangle():
    global fenetre, projectile,red,bleu,jaune,violet,couleurProjectile,Coor1,Coor2,Coor3,r,a,b,t
    for a in range(0,100):
         pygame.draw.line(fenetre,red,Coor1,Coor2,5)
         pygame.draw.line(fenetre,jaune,Coor1,Coor3,5)
         pygame.draw.line(fenetre,bleu,Coor3,Coor2,5)
         Coor3 = [a + r*(math.cos(t)),b + r*(math.sin(t))]
         Coor2 = [a + r*(math.cos(2*math.pi/3 + t )),b + r*(math.sin(2*math.pi/3 + t))]
         Coor1 = [a + r*(math.cos(-2*math.pi/3 + t)),b + r*(math.sin(-2*math.pi/3 + t))]
         t = t - math.pi/40000000
# Fonction en charge de dessiner tous les éléments sur notre fenêtre graphique.
# Cette fonction sera appelée depuis notre boucle infinie
def dessiner():
    global fenetre, projectile, angle0, angle, angle1, angle2,angle3,angle4,angle5,red,bleu,jaune,violet,couleurProjectile,arc1,arc2,arc3,arc4,rect,couleurProjectile,Couleur1,rect,Coor1,Coor2,Coor3,r,a,b,tour
    # On remplit complètement notre fenêtre avec la couleur noire: (0,0,0)
    # Ceci permet de 'nettoyer' notre fenêtre avant de la dessiner
    fenetre.fill( (0,0,0) )
    if projectile != (-1, -1):
        pygame.draw.circle(fenetre, couleurProjectile , projectile, 5) # On dessine le projectile (un simple petit cercle)
       #On créé le 1er obstacle : Le cercle, pour cela on doit créé un rectangle
    rect=pygame.Rect(150,50,300,300)
    #Ensuite, on dessine les triangles à une certaines couleur, et on fait évoluer les angles dans la boucle
    triangle()
    pygame.display.flip() # Rafraichissement complet de la fenêtre avec les dernières opérations de dessin
Le triangle est équilatérale, mais la boucle que j'ai fais ne me permet de faire tourner sur lui même le triangle



Avez-vous une idée pour me débloquer ?



Cordialement

PS : Voici le code en entier si vous en avez besoin
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# -*- coding: utf-8 -*-
 
import pygame, math, random
 
pygame.init() # initialisation du module "pygame"
 
fenetre = pygame.display.set_mode( (600,600) ) # Création d'une fenêtre graphique de taille 600x600 pixels
pygame.display.set_caption("Color Switch") # Définit le titre de la fenêtre
 
 
# On définit les variables qui contiendront les positions des différents éléments (vaisseau, alien, projectile)
# Chaque position est un couple de valeur '(x,y)'
positionDepart = (300,525)
projectile = (300,400)
CoordonneArc=(300,350)
vitesse=1
 
 
 
#On va créé les coordonné pour le triangle
zz=-100*(math.sqrt(3)-4)
Coor1=(200,400)
Coor2=(400,400)
Coor3=(300,zz)
r=336
a=300
b=400 - 100*math.sqrt(3)
tour=1
 
#on créé des variables pour les couleurs
 
red=(255,0,0)
jaune=(255, 228, 54)
bleu=(43, 250, 250)
violet=(121, 28, 248)
 
#On créé une liste où on ajoutera les couleurs
seq=[]
seq.append(red)
seq.append(jaune)
seq.append(red)
seq.append(bleu)
 
#On créé deux rectangle qui vont nous servir à détecter si les obstacles sont passés ou pas
rectObstacle=pygame.Rect(300,350,5,2)
rectObstacle2=pygame.Rect(300,50,5,5)
Couleur1=0
#On assigne au hasard une couleur au projectile
couleurProjectile = random.choice(seq)
couleurProjecilte = Couleur1
t=math.pi/40000
def triangle():
    global fenetre, projectile,red,bleu,jaune,violet,couleurProjectile,Coor1,Coor2,Coor3,r,a,b,t
    for a in range(0,100):
         pygame.draw.line(fenetre,red,Coor1,Coor2,5)
         pygame.draw.line(fenetre,jaune,Coor1,Coor3,5)
         pygame.draw.line(fenetre,bleu,Coor3,Coor2,5)
         Coor3 = [a + r*(math.cos(t)),b + r*(math.sin(t))]
         Coor2 = [a + r*(math.cos(2*math.pi/3 + t )),b + r*(math.sin(2*math.pi/3 + t))]
         Coor1 = [a + r*(math.cos(-2*math.pi/3 + t)),b + r*(math.sin(-2*math.pi/3 + t))]
         t = t - math.pi/40000000
# Fonction en charge de dessiner tous les éléments sur notre fenêtre graphique.
# Cette fonction sera appelée depuis notre boucle infinie
def dessiner():
    global fenetre, projectile, angle0, angle, angle1, angle2,angle3,angle4,angle5,red,bleu,jaune,violet,couleurProjectile,arc1,arc2,arc3,arc4,rect,couleurProjectile,Couleur1,rect,Coor1,Coor2,Coor3,r,a,b,tour
    # On remplit complètement notre fenêtre avec la couleur noire: (0,0,0)
    # Ceci permet de 'nettoyer' notre fenêtre avant de la dessiner
    fenetre.fill( (0,0,0) )
    if projectile != (-1, -1):
        pygame.draw.circle(fenetre, couleurProjectile , projectile, 5) # On dessine le projectile (un simple petit cercle)
       #On créé le 1er obstacle : Le cercle, pour cela on doit créé un rectangle
    rect=pygame.Rect(150,50,300,300)
    #Ensuite, on dessine les cercles à une certaines couleur, et on fait évoluer les angles dans la boucle
    triangle()
    pygame.display.flip() # Rafraichissement complet de la fenêtre avec les dernières opérations de dessin
 
 
 
# Fonction en charge de gérer les évènements clavier (ou souris)
# Cette fonction sera appelée depuis notre boucle infinie
def gererClavierEtSouris():
    global continuer, positionDepart, projectile, vitesse,rect
    for event in pygame.event.get():
        if event.type == pygame.QUIT: # Permet de gérer un clic sur le bouton de fermeture de la fenêtre
            continuer = 0
    # Gestion du clavier ainsi que du déplacement du projectile
    touchesPressees = pygame.key.get_pressed()
    if touchesPressees[pygame.K_SPACE] == True:
        projectile = (projectile[0], projectile[1] - 4)
        vitesse = 1
    else :
        projectile = (projectile[0], projectile[1] + vitesse)
        vitesse = vitesse  + int(0.9999999)
 
# On crée une nouvelle horloge qui nous permettra de fixer la vitesse de rafraichissement de notre fenêtre
clock = pygame.time.Clock()
 
# La boucle infinie de pygame:
# On va continuellement dessiner sur l a fenêtre, gérer les évènements et calculer certains déplacements
continuer = 1
while continuer==1:
    # pygame permet de fixer la vitesse de notre:
    # ici on déclare 50 tours par secondes soit une animation à 50 images par secondes
    clock.tick(30)
    dessiner()
    gererClavierEtSouris()
 
 
   # On gère la fin de la partie, la détection du passage de l'obstacle et le changement de couleur
    if projectile[1] > 600:
        continuer=0
 
 
 
# A la fin, lorsque l'on sortira de la boucle, on demandera à Pygame de quitter proprement
pygame.quit()