Kaynağa Gözat

déplacements en haut et en bas

Hvrnbi 3 hafta önce
ebeveyn
işleme
87b91116bf
2 değiştirilmiş dosya ile 27 ekleme ve 10 silme
  1. 15 8
      main.py
  2. 12 2
      player.py

+ 15 - 8
main.py

@@ -13,7 +13,6 @@ def main():
     pygame.init()   # La fonction secrète, on sait pas ce qu'elle fait mais elle doit être là
 
     display = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) # Taille de la fenêtre
-    display.fill(BACKGROUND_COLOR)
 
     pygame.display.set_caption("VISI301")   # Nom de la fenêtre, à changer à la fin TODO
 
@@ -23,27 +22,35 @@ def main():
     # Création du monde
     world = World(display, NB_COL, NB_ROW, GAP)
 
-    player = Player(0, 0, world, display)
+    player = Player(world.pos_list[1]["x"], world.pos_list[1]["y"], world, display) # On initialise le joueur sur la première tuile en dessous du nid
 
     nest = Nest(0, display)
 
     ### Boucle principale ###
     while True:
-        
-        # À chaque tick on fait ce qu'il y a là
-        world.draw()
-        player.draw(world.pos_list[1])  # On commence sur la tuile en dessous du nid
-        nest.draw(world.pos_list[0], 0)
 
+        # On gère les évènements
         for event in pygame.event.get():
 
-            # On fait des trucs
+            # On gère les touches
+            if event.type == pygame.KEYDOWN:
+                if event.key == pygame.K_z:
+                    player.move("up")
+
+                elif event.key == pygame.K_s:
+                    player.move("down")
             
             # Fermeture du jeu
             if event.type == QUIT:
                 pygame.quit()
                 sys.exit()
 
+        # À chaque tick on fait ce qu'il y a là
+        display.fill(BACKGROUND_COLOR)
+        world.draw()
+        player.draw()
+        nest.draw(world.pos_list[0], 0)
+
         pygame.display.update()
         clock.tick(FPS)
 

+ 12 - 2
player.py

@@ -13,9 +13,19 @@ class Player:
         self.picture: str = "player"
         self.world: World = world
 
-    def draw(self, tile: dict):
+    def draw(self):
         """Affiche le joueur"""
         image = pygame.transform.scale(PLAYER, (self.world.tile_width, self.world.tile_height))
-        self.display.blit(image, (tile['x'] - self.world.tile_width // 2, tile['y'] - self.world.tile_height // 2))  #la valeur ici est arbitraire mais marche. elle est la pour centrer l'affichage du joueur sur une tuile, a changer dans le futur
+        self.display.blit(image, (self.x - self.world.tile_width // 2, self.y - self.world.tile_height // 2))  #la valeur ici est arbitraire mais marche. elle est la pour centrer l'affichage du joueur sur une tuile, a changer dans le futur
     
+    
+    def move(self, direction: str):
+        """Modifie les coordonnées x et y du joueur en fonction de la direction donnée"""
+        if direction == "up":
+            if self.y - self.world.gap - self.world.tile_height >= self.world.top_border:   # Il faut que ça soit supérieur parce que les coos descendent 
+                self.y -= self.world.gap + self.world.tile_height
+        elif direction == "down":
+            if self.y + self.world.gap + self.world.tile_height <= self.world.bottom_border:    # Inversement ici
+                self.y += self.world.gap + self.world.tile_height
+