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