| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import pygame
- from tiles import *
- from variables import *
- from world import World
- class Player:
- def __init__(self, x: int, y: int, world: World, display: pygame.display):
- """Un joueur, avec ses coordonnées (x, y)"""
- self.display = display
- self.x: int = x
- self.y: int = y
- self.picture = PLAYER_RU
- self.world: World = world
- self.next_move = "up"
- def draw(self):
- """Affiche le joueur"""
- image = pygame.transform.scale(self.picture, (self.world.tile_width, self.world.tile_height))
- 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
- self.next_move = "up"
- if self.picture == PLAYER_LD:
- self.picture = PLAYER_LU
- elif self.picture == PLAYER_RD:
- self.picture = PLAYER_RU
- 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
- self.next_move = "down"
- if self.picture == PLAYER_LU:
- self.picture = PLAYER_LD
- elif self.picture == PLAYER_RU:
- self.picture = PLAYER_RD
- elif direction == "left":
- if self.x - self.world.gap - 3 * self.world.tile_width // 4 >= self.world.left_border:
- if self.next_move == "up":
- if self.y - self.world.gap // 2 - self.world.tile_height // 2 >= self.world.top_border:
- self.x -= self.world.gap + 3 * self.world.tile_width // 4
- self.y -= self.world.gap // 2 + self.world.tile_height // 2
- self.next_move = "down"
- self.picture = PLAYER_LD
- else:
- self.next_move = "down"
- self.move("left")
- elif self.next_move == "down":
- if self.y + self.world.gap // 2 + self.world.tile_height // 2 <= self.world.bottom_border:
- self.x -= self.world.gap + 3 * self.world.tile_width // 4
- self.y += self.world.gap // 2 + self.world.tile_height // 2
- self.next_move = "up"
- self.picture = PLAYER_LU
- else:
- self.next_move = "up"
- self.move("left")
- elif direction == "right":
- if self.x + self.world.gap + 3 * self.world.tile_width // 4 <= self.world.right_border:
- if self.next_move == "up":
- if self.y - self.world.gap // 2 - self.world.tile_height // 2 >= self.world.top_border:
- self.x += self.world.gap + 3 * self.world.tile_width // 4
- self.y -= self.world.gap // 2 + self.world.tile_height // 2
- self.next_move = "down"
- self.picture = PLAYER_RD
- else:
- self.next_move = "down"
- self.move("right")
- elif self.next_move == "down":
- if self.y + self.world.gap // 2 + self.world.tile_height // 2 <= self.world.bottom_border:
- self.x += self.world.gap + 3 * self.world.tile_width // 4
- self.y += self.world.gap // 2 + self.world.tile_height // 2
- self.next_move = "up"
- self.picture = PLAYER_RU
- else:
- self.next_move = "up"
- self.move("right")
|