Projet PCII 2014-2015
Transcription
Projet PCII 2014-2015
Licence Informatique. Info 340 (Prog. Concurrentielle des Interfaces Interactives) Fred. Vernier, Oleksandr Zinenko & Arnaud Prouzeau Projet PCII 2014-2015 1. Rappel des objectifs Pour rappel voila les informations officiels de cette unité d’enseignement. Projet Programmation concurrentielle et interfaces interactives (5 crédits) Volume Horaire : Cours : 5h , TD : 10h , TP : 25h , Travail personnel : 25h Compétences : Donner les outils conceptuels et techniques pour (i) concevoir et développer des programmes concurrents, et (ii) concevoir et réaliser l'interface graphique d'applications interactives. [email protected] Description : Le cours présente une introduction aux concepts fondamentaux de la Programmation Concurrentielle et l'Interaction Homme-Machine (IHM). Les travaux dirigés permettent de mettre en œuvre, et les travaux pratiques à combiner les concepts présentés dans le cours dans un projet. Le cours est divisé en 2 parties. La première partie introduit le concept de Programmation Concurrentiel et la notion des “Threads”. La deuxième partie du cours introduit quelques concepts fondamentaux de l'Interaction Homme-Machine (IHM), puis des d'outils de conception et de développement d'interfaces graphiques. Les travaux pratiques combinent les notions introduits dans ce module et les modules de Systèmes d'exploitation et programmation concurrente(Info32B) programmation orientée objet (Info211A) et Génie Logiciel (info317N), Informatique graphique (Info 216 et Info 112) dans un projet de programmation. Partie I: Rappel Entrées/Sorties et Notions de Programmation Concurrentiel Notion des Threads et de la classe Runnable du langage Java Synchronisation, code critique et accès concurrent Producteur/Consommateur et Interbloquage Partie II: Interaction graphique et interfaces à manipulation directe Modélisation conceptuelle et guides de conception Outils de construction d'interface et boite à outils Swing Critères ergonomiques Modalités de contrôle : 40 % Contrôle Continu (Rendu et soutenance de projet) et 60 % Epreuve sur Table (Examen). 2. Sujet du TP noté Dans ce mini-projet d’entrainement il vous est demandé de créer un petit jeu très simple pendant une séance. Un anneau rouge au centre de l'écran rebondit quand l’utilisateur appuie sur une touche. Sans appuyer sur une touche le cercle tombe en accélérant (comme sous l’effet de la gravité). En appuyant à répétition, le cercle monte très vite par a-coup. Le jeu consiste à garder l’anneau enfilé dans une ligne brisée qui avance sans fin. La figure de droite montre un exemple ou l’utilisateur a trop appuyé sur la touche, le cercle a finit par monté trop haut et il a touche par le bas la courbe noire. Un score s’affiche en fonction de la longueur parcourue et un message s’affiche entre 2 parties. 3. Sujet du projet Dans ce projet, il vous est demandé de créer un jeu de Pac-Man en langage Java. Le jeu de PacMan consiste à faire bouger avec les flèches du clavier un personnage rond dans un labyrinthe rempli de petites billes à manger. Le pacman doit consommer toutes les billes sans se faire manger par des fantômes qui se déplacent de manière autonome dans le labyrinthe. Le pacman et les fantômes avancent en ligne droite à un rythme constant tant que quelque chose ne modifie pas leur trajectoire (appuie sur une flèche du clavier pour pacman, rencontre avec un mur ou un autre fantôme pour un fantôme) 4 billes magiques réparties dans la labyrinthe permettent d’inverser les rôles pendant un court moment (c’est le pacman qui peut manger les fantômes). Les fantômes mangés disparaissent pendant un certain temps puis reviennent à leur position d’origine. Le jeu utilise un système de chronomètre comme score et permet de mettre le jeu sur PAUSE en appuyant sur ESPACE. Le jeu enchaine les niveaux de plus en plus durs (vitesse des fantômes, nombre de fantôme, présence de cul-de-sac dans le labyrinthe). Vous devrez en outre créer un éditeur de niveau par drag&drop qui permet la création/sauvegarde de labyrinthes dans un fichier. 4. Format de fichier Le ficher devra être au format ASCII. Le caractère dièse(#) représente un mur, le point(.) une bille à manger, le o une bille magique, les chiffres 0-9 des fantômes et la lettre C la position initiale de pacman. Le ficher ASCII d’un niveau de PacMan se nommera Niveau12.txt si il s’agit du 12ième niveau et commencera par une ligne d’en-tête telle que : 12, 8, 100, 5000, 8000, 3 • 12 est le nombre de colonnes de la grille décrivant le labyrinthe • 8 le nombre de lignes de la grille décrivant le labyrinthe • 100 est le nombre de millisecondes entre 2 affichage (vitesse de jeu) • 5000 nombres de millisecondes avant qu’un fantôme mangé ne revienne • 8000 le nombres de millisecondes pendant lesquelles PacMan peut manger les fantômes • 3 est le nombre de fantômes 5. Organisation du projet Vous devrez réaliser deux applications (le jeu et l'éditeur) qui partageront une partie du code (des classes). Le code devra être découpé en classes de façon efficace et logique. Les fonctions devront être commentées (description des paramètres, du travail réalisé par la fonction, etc. ). Le pacman DEVRA être dessiné avec les primitives de dessin de la classe Graphics2D et sera animé (bouche qui s’ouvre et se ferme). Les fantômes pourront être représentés par des fichiers images (sprites) à condition d'être animées et de changer lors de l’inversion de rôle (donc au moins 4 images par fantôme x 10 fantômes possibles !). Afin de travailler la programmation concurrente un certain nombre de points devront être respectés : -1- L’affichage se fera dans un Thread que vous créerez et qui contiendra plusieurs boucles imbriquées (partie /msg /partie/msg ET affichage du/mouvement/affichage/mouvement) -2- Lorsque le jeu est bloqué sur un message (commencement, GameOver, Pause) le Thread devra être suspendu ! -3- Le temps pendant lequel PacMan devient mangeur et le temps pendant lequel le fantôme disparait seront contrôlés par des Timers -4- Le chargement des niveaux se fera en ouvrant un fichier texte décrivant chaque case du labyrinthe et vous devrez ralentir artificiellement la lecture de chaque case de 10ms afin et mettre en place l’affichage dune barre de progression telle que ci-contre. 6. Grille de notation Déplacement du pacman à l’ecran (1 pts) Affichage d’un labyrinthe (1 pts) Chargement d’un labyrinthe (1 pts) Affichage / mouvement des fantomes (2 pts) Clignotement/Animation des personnages (2 pts) Inversion des roles / super bille (2 pts) Score et changement de niveau (3 pts) Editeur par drag&drop (4 pts) POUR LES FORTS : Vitesses de fantômes changeante (selon les niveaux) (2 pts) POUR LES TRES FORTS : animation de cercles concentriques quand pacman mange la bille magique (2 pts) 7. Photos d'écran