Projet de développement 2014-2015

De $1

Version de 03:49, 22 Déc 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Licence 3 Informatique parcours MIAGE, semestre 6.

Responsable : Philippe Collet

Intervenants : Philippe Collet, Pierre Crescenzo, Simon Urli.

Volume : 12h de cours (4 x 3h), 14h de TD (7 x 2h d'encadrement + 1h en autonomie à chaque séance).

Objectif

Réalisation, en équipe d'un développement OO de taille conséquente à partir d'un cahier des charges et d'une architecture préétablis en Java

Evaluation

  • Code livré : architecture, qualité et tests : 40 %
  • Gestion de projet (ticket, git, organisation) : 25 %
  • Soutenance : 20 %
  • Avancement en TD : 15 %

Plate-forme de gestion de projet (Atlassian JIRA)

La plate-forme de gestion de projet est disponible à l'adresse https://atlas.i3s.unice.fr 

  1. connexion sur http://atlas.i3s.unice.fr/crowd en suivant le guide : ATLAS-USR-Changersonmotdepasse.pdf  (votre login est : l3ig-LOGINUNIV, votre mot de passe doit être réinitialisé).
  2. lire la documentation ATLAS - ETUDIANT - Gérer son projet.pdf

En cas de problème de certificat avec votre client git (message d'erreur de type _error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none_), il vous faut désactiver le support SSL lors de vos connexions git (c'est hélàs un bug des clients git lorsqu'ils sont utilisés sur des systèmes Linux/Ubuntu ou Windows). Vous pouvez soit désactiver le support globalement :

  $ git config --global http.sslVerify false
  $ git clone ...


ou le faire à chaque commande :

  $ env GIT_SSL_NO_VERIFY=true git clone ...

Création d'un fichier .gitignore à la racine du projet : créer ce fichier avec au moins le pattern "*.class" sur une ligne, afin que git ignore les fichiers class compilées par Java lors des commits.

Calendrier

  • Mardi 20 janvier : cours 1
  • Mardi 27 janvier : cours 2
  • Mardi 10 février : cours 3, publication du sujet, date limite de retour par mail des formations des équipes (4 étudiants max par équipe, équipes de 3 tolérées)
  • Mardi 17 février : cours 4
  • Mardi 3 mars : TD 1, premier TD de suivi
  • Mardi 10 mars : TD 2
  • Mardi 17 mars : TD 3
  • Mardi 24 mars : TD 4
  • Mardi 31 mars : TD 5
  • Mardi 7 avril : TD 6
  • Mardi 14 avril : TD 7, dernier TD de suivi
  • Lundi 20 avril, 14h : arrêt du développement (site de gestion du projet et des sources)
  • Mardi 21 avril : soutenance

Livraison finale

La livraison finale doit contenir :

  • code, tests et README disponibles sur le repository git
  • le dernier commit de référence doit être taggé FINAL (voir ci-dessous)
  • un fichier README.pdf doit expliqué brièvement l'état de votre projet, et surtout vos choix de conception (stratégies des robots, etc.)
  • le fichier pom.xml qui permet de compiler, tester et d'exécuter(voir ci-dessous)

Gestion des tags en git

Pour tagger la tête de votre repository local avec un tag (nommé ESSAI ici) :

$ git tag ESSAI

$ git push origin ESSAI

Vous pouvez aussi exécuter "git push origin --tags" pour pusher tous les tags existants à la fois.

Si vous souhaitez déplacer le tag FINAL, vous pouvez d'abord l'effacer :

$ git tag -d ESSAI

$ git push origin :refs/tags/ESSAI

Puis retagger comme vu précédemment.

Pour information, je clonerai votre projet par une commande "git clone" classique, puis je récupérerai votre code par :

$ git checkout FINAL

Si vous n'êtes pas capable d'exécuter la dernière commande sur un autre clone de votre git, c'est que le tag est mal fait, ou pas pushé...

Exécution du projet avec maven

Résultat attendu pour l'exécution :

  • aucune interaction sur la ligne de commande (nous ne devons rien avoir à saisir)
  • affichage sur la sortie standard de l'exécution de :
    • 1000 parties de votre meilleur bot contre le second
    • 1000 parties de votre meilleur bot contre lui-même
  • L'affichage doit comprendre le nombre et pourcentage de parties gagnées/perdues/nulles, et le score moyen de chaque bot (pas tout le log des 1000 parties !)

Pour l'exécution, ajouter le xml suivant dans votre pom.xml (à l'intérieur des balises ), et :

  • modifier la mainClass avec le nom complet de votre classe (attention au nom de package, par exemple : fr.unice.MaClassePrincipale)
  • décommenter éventuellement les parties "arguments" (pour passer des arguments comme sur la ligne de commande) ou "properties" (pour des propriétés système sous la forme clé/valeur).
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.3.2</version>
        <executions>
          <execution>
            <goals>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <mainClass>ChangeCaParLeNomCompletDeLaClassePrincipale</mainClass>
<!--          <arguments>
            <argument>argument1</argument>
          </arguments>
          <systemProperties>
            <systemProperty>
              <key>myproperty</key>
              <value>myvalue</value>
            </systemProperty>
          </systemProperties>
-->
        </configuration>
      </plugin>   

Pour information, après avoir récupéré la bonne version du projet grâce au tag FINAL, j'exécuterai :

  • mvn clean package (attention, tous les tests doivent passés, si certains sont défectueux, ajoutez leur un @Ignore)
  • mvn exec:java (les paramètres devront être gérés dans le pom.xml, comme indiqué ci-dessus)

Sujet

Il s'agit de réaliser une version électronique du jeu "Keltis" dans sa version cartes à jouer.
Une présentation et les régles du jeu sont disponibles ici :
http://www.happymeeple.com/fr/jeux/keltis-card-keltis-cartes/regles/
La possibilité de jouer en ligne contre d'autres joueurs ou des robots sont disponibles ici (choisissez bien Keltis Card) : http://www.happymeeple.com/fr/
Attention, c'est l'équivalent de la version en ligne (et non le jeu de plateau) qu'il faut implémenter. Ce sont les règles de la version en ligne qui servent donc de référence.

Il faut pour cela réaliser les fonctionnalités suivantes :

  • représentation de jeu (représentation des cartes, comptage des points, validité des coups)
  • moteur de jeu (mélange des cartes, gestion de la pioche, des pierres et des zones du plateau, gestion des mains des 2 joueurs)
  • robots de jeu, en partant d'une version très simple à des stratégies de jeu plus sophistiqués
  • simulation de parties entre robots, comptage des points, des victoires et classement entre vos robots.
  • visualisation de l'état du jeu (tout au long de la partie). Cette visualisation doit être au minimum textuelle. Une version graphique N'EST PAS une priorité.

Attention, il ne s'agit pas de réaliser une version interactive de ce jeu (1 ou 2 joueurs humains). Un bonus sera appliquée au projet couvrant toutes les fonctionnalités précédentes et permettant à 1 joueur humain de jouer contre un robot au choix.

Equipes

  • LTMPDVQUA : clemence chauvet, Julian Bellaiche, Romain delas, Anne-Sophie Martyr (4)
  • LTMPDVQUB : Alexis REGNAUD, Andy RABADAN, Donia BEN BOUBAKER, Mehmet AYDOGAN (4)
  • LTMPDVQUC : David BOCCARA, David MICALEFF, Luc ELSAESSER, Léo-Paul MARTIN (4)
  • LTMPDVQUD : Benoit SILVESTRO, Martin CARRIER, Nicolas NAGY, Alexandre BERNARD (4)
  • LTMPDVQUE : AGLIF Fatima Zahra, BENHAMOU Thomas, MANAI Oualid, NICOLAI Pierre (4)
  • LTMPDVQUF : Inès HOUARA, Hamza HBYEL, Samuel WAKNINE, Sebastien LANTIER (4)
  • LTMPDVQUG : Pinet Jérémy, Barbe Brenda, Spugna Lorris, Guery Steven (4)
  • LTMPDVQUH : Jason MAURISSET, Konan N'GUESSAN, Christian PAGH-BIRK, Isaline DESCHANELS (4)
  • LTMPDVQUI : Yannis CONSTANTIN, Brahim BEN ALLEL, LAMRANI Rime (3)
  • LTMPDVQUJ : MIMOUNA amira, DECHAMPS Aurore, Aimé NITEKA, Sallah Eddine HATTA (4)