Outils pour utilisateurs

Outils du site


nsi:tds:pygame:plateforme:main

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:tds:pygame:plateforme:main [2023/03/18 17:09] goupillwikinsi:tds:pygame:plateforme:main [2023/03/19 11:29] (Version actuelle) goupillwiki
Ligne 2: Ligne 2:
  
 Reprend le principe général de ce que vous pouvez trouver dans [[nsi:tds:pygame:zombies|l'attaque des morts-vivants]]. Reprend le principe général de ce que vous pouvez trouver dans [[nsi:tds:pygame:zombies|l'attaque des morts-vivants]].
- 
-===== Problème de touches ===== 
- 
-Nous allons toutefois apporter une modification : Nous voulons pouvoir appuyer simultanément sur plusieurs touches. Par exemple, si je maintiens ''KEY_RIGHT'' et que j'appuie sur ''KEY_UP'', je veux que le sprite saute sans cesser d'aller vers la droite. 
- 
-Quelques précisions sont utiles : 
-  * Pygame détecte les événements ''KEYUP'' et ''KEYDOWN'', c'est à dire le moment précis où on enfonce une touche ou le moment où on la relâche. Pygame ne détecte pas qu'une touche est en train d'être appuyée. 
-  * Nous avons utilisé pour les zombies la commande ''pygame.key.set_repeat(...)''. Cette commande permet de faire comme si on pianotait sur une touche alors qu'en vérité on la maintient appuyée.\\ Cette commande ne convient pas puisqu'elle ne tient compte que de la dernière touche appuyée. 
- 
-À la place, nous allons utiliser ''%%pygame.keys.get_pressed()%%'' qui tient la liste de l'état de toutes les touches. 
  
 <code python> <code python>
-keys = pygame.keys.get_pressed() +# fichier main.py
-if keys[KEY_UP]: +
-    # le test vérifie si la touche flèche haut est appuyée +
-</code>+
  
-Ainsi, rien ne nous empêchera d'avoir simultanément ''%%keys[KEY_LEFT]%%'' et ''%%keys[KEY_UP]%%''appuyés simultanément.+import pygame 
 +from player import Player 
 +from rectangle import Rectangle 
 +from coin import Coin
  
-===== Problème d'ordre ===== 
- 
-Le module ''coin.py'' charge tout de suite (dès l'import) l'image ''%%"dollar.png"%%''. Il faut absolument avoir lancé la commande ''%%pygame.display.set_mode((LARGEUR, HAUTEUR))%%'' avant tout chargement d'image. 
- 
-C'est pour cette raison que, contrairement à l'habitude consistant à placer les imports en premier, on déplace l'import des modules un peu plus bas. 
- 
-===== Script complet ===== 
- 
-<code python> 
-# fichier main.py 
-import pygame 
 pygame.init() pygame.init()
 pygame.display.set_caption("Le rectangle qui saute") pygame.display.set_caption("Le rectangle qui saute")
Ligne 37: Ligne 16:
 HAUTEUR = 600 HAUTEUR = 600
 screen = pygame.display.set_mode((LARGEUR, HAUTEUR)) screen = pygame.display.set_mode((LARGEUR, HAUTEUR))
- 
-from player import Player 
-from rectangle import Rectangle 
-from coin import Coin 
  
 clock = pygame.time.Clock() # gestion du temps clock = pygame.time.Clock() # gestion du temps
 all_sprites = pygame.sprite.Group() all_sprites = pygame.sprite.Group()
  
-platesformes_sprites = Rectangle.make_plates_formes([+platesformes = Rectangle.make_plates_formes([
     (0, HAUTEUR-10, LARGEUR, 50), # base     (0, HAUTEUR-10, LARGEUR, 50), # base
     (100, HAUTEUR-60, 200, 10),     (100, HAUTEUR-60, 200, 10),
Ligne 51: Ligne 26:
     (440, HAUTEUR-160, 200, 10)     (440, HAUTEUR-160, 200, 10)
 ], (255,0,0)) ], (255,0,0))
-coins_sprites = Coin.make_coins([+ 
 +coins = Coin.make_coins([
     (300, HAUTEUR-20, "dollar"),     (300, HAUTEUR-20, "dollar"),
     (150, HAUTEUR-70, "dollar")     (150, HAUTEUR-70, "dollar")
 ]) ])
 player = Player(50, HAUTEUR - 100, 0, LARGEUR) player = Player(50, HAUTEUR - 100, 0, LARGEUR)
-all_sprites.add(platesformes_spritescoins_sprites, player)+all_sprites.add(platesformescoins, player)
 # ordre important pour que player soit devant les récompenses ! # ordre important pour que player soit devant les récompenses !
  
-left_pressed = False 
-right_pressed = False 
-up_pressed = False 
 running = True running = True
 while running: while running:
Ligne 67: Ligne 40:
     screen.fill((0,0,0))     screen.fill((0,0,0))
  
-    player.update_position(platesformes_sprites)+    player.update_position(platesformes)
     all_sprites.draw(screen)     all_sprites.draw(screen)
  
Ligne 82: Ligne 55:
         player.jump()         player.jump()
  
-    hitten_coins = pygame.sprite.spritecollide(player, coins_sprites, True)+    hitten_coins = pygame.sprite.spritecollide(player, coins, True)
  
     pygame.display.flip()     pygame.display.flip()
nsi/tds/pygame/plateforme/main.1679155762.txt.gz · Dernière modification : de goupillwiki