Bonjour a toutes et a tous,
J’ai du mal a comprendre quelque chose dans ce code que j’ai récupéré: qu’est ce qui fait que les animations du jeux sont «gelées» lorsque Je clique le bouton Pause .
J’ai éssayé de simplifier ce code , pas sur que ce soit claire .
J’ai dabord dans mon fichier main.py:
Ensuite dans mon fichier gamerun.py:
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 def start(): pygame.init() game = True menu = True run = False while game: while menu: number = men.menu(win) if number == 0: menu = False game = False elif number == 1: run = True menu = False while run: num = gamerun.run(win, org_win) if num == 0: run = False game = False if num == 1: run = False menu = True if __name__ == '__main__': start()
La fonction redrawGameWindow() affiche tout ce qu’il y a a l’ecran .
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 battleship = Spaceship('spaceship1_', 250, 120) # instance héro aliens = [] aliens2 = [] alien3 = [] stars = [] enemyspaceships = [] def run(win): redrawGameWindow(win) if battleship.health <= 0: if not ru: #initialisé a True en début de fichier go = gameover(win) if go == 0 or go == 1: ru = True return go ru = False if len(aliens) == 0 and len(enemyspaceships) == 0 and len(aliens2) == 0 and len(alien3) == 0: generateLevel(win) #fonction qui permet lavancement dans les différents niveau redrawGameWindow(win) #affiche tous les éléments graphiques keys = pygame.key.get_pressed() if pausebutton or keys[pygame.K_ESCAPE]: pausebutton = False pau = True while pau: g = pause(win) if g == 1: pau = False elif g == 0: pau = False return 1 pygame.display.update()
La fonction gameover() dans l’intégralité :
Et la fonction pause() dans l’intégralité:
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 def gameover(win): global alienkills global spaceshipkills global totaltestseconds global level global levelcounter global aliens global alien3 global aliens2 global lasers global enemyspaceships global enemylasers global timee pygame.mixer.music.stop() helplevel = level ptime = calculateTime() if int(ptime[1]) < 10: timee = ptime[0] + ':0' + ptime[1] else: timee = ptime[0] + ':' + ptime[1] if helplevel > s.readlevel(): s.save(helplevel, alienkills, spaceshipkills, timee, totaltestseconds) highscoreloop = True hslo = 0 ybutton = 370 elif helplevel == s.readlevel() and totaltestseconds > s.readseconds(): s.save(helplevel, alienkills, spaceshipkills, timee, totaltestseconds) highscoreloop = True hslo = 0 ybutton = 370 else: highscoreloop = False ybutton = 350 f = True g = True h = True i = True j = True k = True l = True m = True n = True while f: try: aliens.pop() except: f = False while i: try: aliens2.pop() except: i = False while j: try: alien3.pop() except: j = False while k: try: enemyspaceships.pop() except: k = False while g: try: lasers.pop() except: g = False while h: try: enemylasers.pop() except: h = False while l: try: aliens2_lasers.pop() except: l = False while m: try: aliens2_lasers2.pop() except: m = False while n: try: alien3_lasers.pop() except: n = False gaov = True while gaov: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: ptime = calculateTime() if int(ptime[1]) < 10: timee = ptime[0] + ':0' + ptime[1] else: timee = ptime[0] + ':' + ptime[1] return 0 pygame.draw.rect(win, yellow, (50, 75, 600, 400)) # cadre resultat final pygame.draw.rect(win, black, (60, 85, 580, 380)) gameoverfont = pygame.font.Font(set.font, 50) text = gameoverfont.render('Game Over!', 1, yellow) win.blit(text, (350 - round(text.get_width() / 2), 80)) statfont = pygame.font.Font(set.font, 30) text = statfont.render('Level: ' + str(helplevel), 1, white) win.blit(text, (350 - round(text.get_width() / 2), 160)) text = statfont.render('Aliens killed: ' + str(alienkills), 1, white) win.blit(text, (350 - round(text.get_width() / 2), 190)) text = statfont.render('Enemy spaceships destroyed: ' + str(spaceshipkills), 1, white) win.blit(text, (350 - round(text.get_width() / 2), 220)) if highscoreloop: # si True : nouveau score hslo += 1 # la boucle hslo va permettre l'affichage par intermitence de # 'New Highscore!' if hslo < 15: highfont = pygame.font.Font(set.font, 40) text = highfont.render('New Highscore!', 1, yellow) win.blit(text, (350 - round(text.get_width() / 2), 290)) elif hslo == 30: hslo = 0 text = statfont.render('Survived time: ' + timee, 1, white) win.blit(text, (350 - round(text.get_width() / 2), 250)) exbutton = t.button(win, 'Main Menu', 250, ybutton, 200, 50, yellow, black, yellow) if exbutton: reset() return 1 pygame.display.update()
En espérant que vous puissiez m’aider , je vous remercie de votre aide .
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 def pause(win): global timee for event in pygame.event.get(): if event.type == pygame.QUIT: ptime = calculateTime() if int(ptime[1]) < 10: timee = ptime[0] + ':0' + ptime[1] else: timee = ptime[0] + ':' + ptime[1] return 0 pygame.draw.rect(win, green, (150, 115, 600, 380)) pygame.draw.rect(win, black, (160, 125, 580, 360)) paufont = pygame.font.Font(set.font, 50) text = paufont.render('Pause', 1, green) win.blit(text, (350 - round(text.get_width() / 2), 150)) notefont = pygame.font.Font(set.font, 30) text = notefont.render('NOTE: if you quit, you can go back to the current', 1, green) win.blit(text, (180, 340)) text = notefont.render('save by just starting the game via the main menu.', 1, green) win.blit(text, (180, 360)) text = notefont.render('If you close the whole game with an unfinished save,', 1, green) win.blit(text, (180, 380)) text = notefont.render('it will be saved regularly but you wont be able to', 1, green) win.blit(text, (180, 400)) text = notefont.render('finish it.', 1, green) win.blit(text, (180, 420)) resumebutton = t.button(win, 'Reprise', 250, 200, 200, 50, green, black, green) if resumebutton: # si clique sur resumebutton return 1 quitbutton = t.button(win, 'Quit', 250, 260, 200, 50, green, black, green) if quitbutton: # si clique sur quitbutton ptime = calculateTime() if int(ptime[1]) < 10: timee = ptime[0] + ':0' + ptime[1] else: timee = ptime[0] + ':' + ptime[1] return 0 pygame.display.update()
Partager