Caractéristiques d'un objet fixe: - sprite (dessin de l'objet) - Can_go_on (peut-on aller dessus) - Action_when_appear (lorsque dessiné, y a t'il quelque chose de spécial à faire?) - Action_when_go_on (lorsque l'on marche dessus, quelque chose à faire? (exemple: creer un ennemi si il s'agit de telle case, ..)) - Others (à l'usage de l'utilisateur) Caractéristiques d'un objet mouvant: (le programmeur s'occupe de sa gestion. Son affichage doit de faire avec draw_one_object (case_x, case_y, sprite) ) - donnees (données pouvant servir au programmeur pour gerer l'objet. Attention, ses données ne sont pas modifiées) - Gestion_fonction ( la fonction que l'on appelle pour gerer l'objet) Ses données sont contenues dans: Tab_objet_fixes : tableau dont la case numero i contient l'objet i (c'est à dire que Tab_objet_fixes[i].sprite donne le sprite de l'objet i) Tab_objet_mouvant : même chose avec les objets mouvant. Tab_objet_mouvant_cree : contient les objets mouvant actuellement 'en vie'. Si le tableau est vide, il n'y a aucun objet mouvant à l'écran. Si il y a n objets mouvants 'en vie', les n premières cases contiennent la structure suivante: - num_objet_mouvant - case_x (les coordonnées de l'objet sur la map) - case_y - donnees_modifiables (pour la gestion de l'objet par le programmeur) Le personnage principal a ses données suivantes accessibles: (le programmeur doit les initialiser) Perso_case_x Perso_case_y Perso_position (regarde vers la gauche,vers la droite,vers le haut,vers le bas, en mouvement vers la gauche,... ) Emergency_exit (false au départ. Si le programmeur l'initialise à true, la boucle principale quitte. (par exemple pour changer de map) ) Le programmeur doit fournir les données suivantes: bord_map( case_x, case_y) Il s'agit de la fonction que l'on appelle lorsque le personnage est au bord de la map. Si elle renvoi false, on ne fait rien, et le bord est considéré comme un mur. Si elle renvoi true, la boucle principale quitte (le programmeur peut alors changer de map,...) Lire_map (case_x, case_y) Fonction qui permet de lire la map en cours et renvoyant l'entier associé à la case de l'objet dans Tab_objet_fixes. tab_touches_fonctions Tableau de fonctions. si la touche i est pressée et que la case i du tableau est non vide, la fonction à cette case est appelée (par exemple aller au menu, quitter, ...) tailleX_objet (fourni la taille d'un objet sur l'axe de x et l'axe des y) tailleY_objet originex ( à partir d'où on commence le dessin (0 par défaut. Peut être négatif. Positif si vous vouler afficher une barre d'information à gauche)) originey Nb_case_x (combien de cases trace t'on à l'écran (on peut sortir de l'écran) ) Nb_case_y Xcase_perso_defaut (lorsque l'on est éloigné du bord, le personnage est à la Xe case affichée en partant de la gauche et la Ye case affichée en partant du haut) Ycase_perso_defaut rajout_tout_dessiner() Fonction appelée par tout_dessiner pour compléter le dessin de la map par des éventuelles informations sur l'écran( vie, ...) Mettre à nil pour ne pas afficher de données supplémentaires. rajout_mise_a_jour_ecran() Fonction appelée par mise_a_jour_ecran qui met à jour ce que rajout_tout_dessiner a fait. Mettre à nil pour ne pas afficher de données supplémentaires. Le programmeur a accès aux fonctions suivantes: draw_one_object (case_x, case_y, sprite) Pour afficher les objets mouvants. La librairie contient les fonctions suivantes: tout_dessiner (case_x, case_y) Dessine de zero la map en prenant le coin en haut à gauche aux coordonnées case_x case_y. mise_a_jour_ecran() Met à jour l'affichage: les fonctions associées aux objets mouvants sont appelées. Si le personnage est en mouvement, la map bouge si l'on est éloigné du bord de la map (le personnage restant à la position associée à Xcase_perso_defaut et Ycase_perso_defaut. Sinon, c'est le personnage qui bouge. Principal() Appelle les fonctions d'affichage requises, s'occupe de la gestion des touches et du mouvement du personnage. Quitte lorsque Emergency_exit est à true ou que bord_map( case_x, case_y) est à true.