|
|
|
@ -6,11 +6,11 @@ SCREEN_WIDTH = 128
|
|
|
|
|
SCREEN_HEIGHT = 128 |
|
|
|
|
BIRD_SIZE = 8 |
|
|
|
|
PIPE_WIDTH = 16 |
|
|
|
|
PIPE_GAP = 50 # Modifié de 30 à 50 |
|
|
|
|
BIRD_GRAVITY = 0.4 # Modifié de 0.5 à 0.4 |
|
|
|
|
BIRD_LIFT = -4 # Modifié de -6 à -4 |
|
|
|
|
PIPE_SPEED = 1 |
|
|
|
|
PIPE_FREQ = 60 |
|
|
|
|
PIPE_GAP = 50 # Valeur par défaut (sera modifiée selon la difficulté) |
|
|
|
|
|
|
|
|
|
class FlappyBirdGame: |
|
|
|
|
def __init__(self): |
|
|
|
@ -25,10 +25,12 @@ class FlappyBirdGame:
|
|
|
|
|
self.game_over = False |
|
|
|
|
self.game_started = False # Ajout de l'état de début du jeu |
|
|
|
|
self.passed_pipes = [] # Suivi des tuyaux déjà passés |
|
|
|
|
self.difficulty_selected = False # Indicateur si la difficulté a été choisie |
|
|
|
|
self.difficulty = "easy" # Valeur par défaut |
|
|
|
|
pyxel.run(self.update, self.draw) |
|
|
|
|
|
|
|
|
|
def update(self): |
|
|
|
|
if self.game_over: |
|
|
|
|
if self.game_over or not self.difficulty_selected: |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
self.frame += 1 |
|
|
|
@ -85,6 +87,14 @@ class FlappyBirdGame:
|
|
|
|
|
def draw(self): |
|
|
|
|
pyxel.cls(0) # Effacer l'écran |
|
|
|
|
|
|
|
|
|
# Si le menu de sélection de difficulté est actif |
|
|
|
|
if not self.difficulty_selected: |
|
|
|
|
self.draw_menu() |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
# Dessiner le fond |
|
|
|
|
pyxel.blt(0, 0, 0, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0) # Dessiner l'arrière-plan complet (ciel, nuages, sol) |
|
|
|
|
|
|
|
|
|
# Dessiner l'oiseau en utilisant l'image du sprite dans le fichier .pyxres |
|
|
|
|
pyxel.blt(self.bird_x, self.bird_y, 0, 0, 0, 8, 8, 0) # Le 0,0 ici représente la position du sprite dans le fichier pyxres |
|
|
|
|
|
|
|
|
@ -105,5 +115,33 @@ class FlappyBirdGame:
|
|
|
|
|
if not self.game_started: |
|
|
|
|
pyxel.text(SCREEN_WIDTH // 2 - 50, SCREEN_HEIGHT // 2, "Press SPACE to Start", 8) # Afficher le texte sans centrage automatique |
|
|
|
|
|
|
|
|
|
def draw_menu(self): |
|
|
|
|
# Affichage du menu de sélection de la difficulté |
|
|
|
|
pyxel.text(SCREEN_WIDTH // 2 - 50, SCREEN_HEIGHT // 3, "Select Difficulty", 7) |
|
|
|
|
pyxel.text(SCREEN_WIDTH // 2 - 50, SCREEN_HEIGHT // 2, "1. Easy", 7) |
|
|
|
|
pyxel.text(SCREEN_WIDTH // 2 - 50, SCREEN_HEIGHT // 2 + 10, "2. Medium", 7) |
|
|
|
|
pyxel.text(SCREEN_WIDTH // 2 - 50, SCREEN_HEIGHT // 2 + 20, "3. Hard", 7) |
|
|
|
|
|
|
|
|
|
# Attente d'une entrée de l'utilisateur pour choisir la difficulté |
|
|
|
|
if pyxel.btnp(pyxel.KEY_1): |
|
|
|
|
self.difficulty = "easy" |
|
|
|
|
self.set_difficulty("easy") |
|
|
|
|
elif pyxel.btnp(pyxel.KEY_2): |
|
|
|
|
self.difficulty = "medium" |
|
|
|
|
self.set_difficulty("medium") |
|
|
|
|
elif pyxel.btnp(pyxel.KEY_3): |
|
|
|
|
self.difficulty = "hard" |
|
|
|
|
self.set_difficulty("hard") |
|
|
|
|
|
|
|
|
|
def set_difficulty(self, difficulty): |
|
|
|
|
global PIPE_GAP |
|
|
|
|
if difficulty == "easy": |
|
|
|
|
PIPE_GAP = 70 |
|
|
|
|
elif difficulty == "medium": |
|
|
|
|
PIPE_GAP = 50 |
|
|
|
|
elif difficulty == "hard": |
|
|
|
|
PIPE_GAP = 30 |
|
|
|
|
self.difficulty_selected = True # La difficulté a été choisie, commencer le jeu |
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
FlappyBirdGame() |
|
|
|
|