#!/usr/bin/env python3 # Concept : # - Donjon : action par tour, manipule des salles # - Salles : passages vers des directions cardinales, contiennent des dragons # - Dragons : plusieurs niveaux, tous différents # # - Aventurier : déplacement tour par tour de salle en salle vers l'intention # - Intention : cible le dragon le plus fort accessible (orgueil) # # Doc FLTK : https://antoinemeyer.frama.io/fltk/ import random, time, fltk, os import maps import game ## VARIABLES DE CONFIGURATION TAILLE_DONJON = 6 LARGEUR_FENETRE = 800 HAUTEUR_FENETRE = 400 ## Variables globales donjon = [] # liste de salles (N,E,S,O) dragons = [] # liste de dragons N = 0 E = 1 S = 2 O = 3 aventurier = { 'position' : (0,0), 'niveau' : 1, 'vivant': True } ## Fonctions def selection_menu(): """ Home selection menu @params void @return path, chemin d'accès à un fichier de map """ list_maps = os.listdir("maps") fltk.cree_fenetre(LARGEUR_FENETRE, HAUTEUR_FENETRE) fltk.texte(LARGEUR_FENETRE/2, HAUTEUR_FENETRE/8, "Bienvenue dans Wall is You !", couleur="black", taille=40, ancrage='center') fltk.texte(LARGEUR_FENETRE/2, HAUTEUR_FENETRE/4, "Vous allez pouvoir sélectionner un donjon auquel jouer" " dans la liste ci-dessous." " Cliquez sur le donjon de votre choix pour y jouer.", couleur="black", taille=10, ancrage='center') fltk.texte(LARGEUR_FENETRE/2, HAUTEUR_FENETRE/3, "Tapez Echap pour quitter le jeu", couleur="green", taille=10, ancrage='center') if len(list_maps) == 0: fltk.texte(LARGEUR_FENETRE/2, HAUTEUR_FENETRE/2, "Aucun donjon jouable installé.", couleur="red", taille=30, ancrage='center') else: x1 = LARGEUR_FENETRE/40 x2 = HAUTEUR_FENETRE/2.22 y1 = HAUTEUR_FENETRE/2.22 y2 = LARGEUR_FENETRE/3 for i in range(len(list_maps)): fltk.rectangle(x1, y1, x2, y2, remplissage="white") fltk.texte(x1+(x2-x1)/2, y1+(y2-y1)/2, list_maps[i].replace(".txt", ""), couleur="blue", taille=20, ancrage='center') x1 += LARGEUR_FENETRE/4 x2 += LARGEUR_FENETRE/4 if max(x1, x2) > LARGEUR_FENETRE: x1 = LARGEUR_FENETRE/40 x2 = HAUTEUR_FENETRE/2.22 y1 += HAUTEUR_FENETRE/3.5 y2 += HAUTEUR_FENETRE/3.5 while True: event = fltk.attend_ev() if "Quitte" in fltk.type_ev(event): fltk.ferme_fenetre() return None if "Touche" in fltk.type_ev(event) and "Escape" in fltk.touche(event): fltk.ferme_fenetre() return None if "ClicGauche" in fltk.type_ev(event): # XXX à améliorer x = fltk.abscisse(event) y = fltk.ordonnee(event) x_i = LARGEUR_FENETRE/40 y_i = HAUTEUR_FENETRE/2.22 x_n = int((x - x_i) / (LARGEUR_FENETRE/4)) y_n = int((y - y_i) / (HAUTEUR_FENETRE/3.5)) if x_n+y_n*4 < 0 or x_n+y_n*4 >= len(list_maps): continue fltk.ferme_fenetre() return "./maps/" + list_maps[x_n+y_n*4] fltk.ferme_fenetre() return "./maps/map1.txt" def run_game(): """ Running game @params void @return void """ pass def main(): while True: map_choice = selection_menu() if not map_choice: break else: print("chargement de {}".format(map_choice)) if maps.charger(map_choice, donjon, dragons, aventurier): run_game() else: return 1 return 0 main()