2013_2014:s2:td:etudedecas:etape2
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
2013_2014:s2:td:etudedecas:etape2 [2014/05/01 19:34] – [Intégration : Lancement d'une compétition] blay | 2013_2014:s2:td:etudedecas:etape2 [2014/05/21 16:59] (current) – [Des codes fonctionnels] blay | ||
---|---|---|---|
Line 16: | Line 16: | ||
Voici le modèle qui décrit les classes '' | Voici le modèle qui décrit les classes '' | ||
{{ : | {{ : | ||
- | |||
- | Voici le {{: | ||
Voici les javadoc (tronqués pour cause de problèmes de chargement de fichier html dans cet environnement). | Voici les javadoc (tronqués pour cause de problèmes de chargement de fichier html dans cet environnement). | ||
Line 23: | Line 21: | ||
* {{: | * {{: | ||
- | {{: | ||
+ | <box round rgb(185, | ||
+ | * Comprenez brièvement ces modèles et les interfaces | ||
+ | * Pour exécuter les codes : | ||
+ | * Soit sous JCreator en récupérant {{: | ||
+ | * Soit "à la main" | ||
+ | - Sauvegarder le {{: | ||
+ | - Sauvegarder le {{: | ||
+ | - De-ziper le fichier d' | ||
+ | - Compilation de l' | ||
+ | * '' | ||
+ | | ||
+ | * '' | ||
+ | | ||
+ | * '' | ||
+ | * Chaque interface représente une machine. Dès qu'il y a une différence de 5 points entre 2 joueurs dans les 3 minutes, le joueur qui a le plus marqué a gagné. Puis pendant 2mn c'est le premier qui touche qui gagne. Enfin s'il y a toujours égalité, au validate, on tire au sort. ... Pour modifier le nombre de points, comme nous n' | ||
+ | * Quand l' | ||
+ | * Quand le round est terminé, par //next//, l' | ||
+ | * Quand il n'y a plus de matchs, la " | ||
+ | * puis passez aux exercices suivants. | ||
+ | </ | ||
- | Voici un exemple très basique d' | + | {{: |
- | {{: | + | {{: |
- | {{: | + | |
- | <box round rgb(185, | ||
- | Comprenez brièvement ces codes puis passez aux exercices suivants. | ||
- | </ | ||
==== Retour sur l' | ==== Retour sur l' | ||
Line 75: | Line 88: | ||
</ | </ | ||
- | Votre code ne correspond probablement pas exactement à l' | + | |
+ | |||
+ | Votre code ne correspond probablement pas exactement à l' | ||
Vous devez donc adapter** VOTRE CODE** (et pas l' | Vous devez donc adapter** VOTRE CODE** (et pas l' | ||
Line 83: | Line 98: | ||
public class Match implements MatchInterface { | public class Match implements MatchInterface { | ||
</ | </ | ||
+ | //Rappel : une classe qui implémente une interface doit implémenter toutes les méthodes définies par l' | ||
<box round rgb(185, | <box round rgb(185, | ||
Line 88: | Line 104: | ||
* Tester là. | * Tester là. | ||
</ | </ | ||
+ | |||
+ | |||
==== Approche incrémentale ==== | ==== Approche incrémentale ==== | ||
Line 93: | Line 111: | ||
<box round rgb(185, | <box round rgb(185, | ||
- | - Commencez par créer une piste et tester | + | - Commencez par créer une piste et tester |
- | - Par exemple, vous pouvez reprendre les codes fournis | + | - Par exemple, vous pouvez reprendre les codes de tests fournis |
</ | </ | ||
- | <code java> | ||
- | FencingPiste pist1 = new FencingPiste(1); | ||
- | FencingPiste pist2 = new FencingPiste(2); | ||
- | Match m1 = new Match();// | ||
- | Match m2 = new Match(); | ||
- | Match m3 = new Match(); | ||
- | |||
- | pist1.addMatch(m1); | ||
- | pist1.addMatch(m2); | ||
- | pist2.addMatch(m3); | ||
- | |||
- | pist1.start(); | ||
- | pist2.start(); | ||
- | |||
- | while (!(pist1.isOver() && pist2.isOver()) | ||
- | Thread.sleep(6000); | ||
- | System.out.println(" | ||
- | } | ||
- | |||
- | System.out.println(" | ||
- | System.out.println(" | ||
- | System.out.println(" | ||
- | |||
- | /* | ||
- | * Quand tous les matchs ont eu lieu sur toutes les pistes on re-initialise les match | ||
- | * puis on ré-affecte les pistes. | ||
- | * On ferme les pistes inutiles | ||
- | */ | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | // On ferme l' | ||
- | | ||
- | </ | ||
==== Intégration : Lancement d'une compétition ==== | ==== Intégration : Lancement d'une compétition ==== | ||
Line 144: | Line 127: | ||
</ | </ | ||
- | ===== Principes des codes donnés ===== | ||
- | |||
- | Diagramme de composants | ||
- | |||
- | Mettre en avant | ||
- | 1) diagramme de classes | ||
- | |||
- | 2) | ||
- | |||
- | 3) Diagramme de séquence qui dit ce que vous devez faire | ||
- | |||
- | |||
- | ==== Questions ==== | ||
- | |||
- | |||
- | - où se trouve les codes qui valide une fin de match ((MachineControler)) ? | ||
- | |||
- | - Quel code devez vous modifier pour implémenter la validation conformément aux règles ci-après ? | ||
- | |||
- | - De quelles informations disposez-vous pour faire ces calculs? | ||
- | |||
- | |||
- | |||
- | |||
- | ===== A vous de modifier les codes ===== | ||
- | |||
- | Règles de validation | ||
- | |||
- | - Implémenter les rgles ci-après | ||
- | |||
- | - Vérifier que les jeux de données correspondent bien | ||
- | |||
- | Faire un tableau | ||
- | |||
- | Joueur1 Joueur2 ScoreJoueur1 ScoreJoueur2 Temps Résultat | ||
- | |||
- | |||
- | Voici un jeu de tests | ||
- | |||
- | <code java> | ||
- | public class MachineControllerTest { | ||
- | public static final int THREE_MINUTES = 1000 * 60 * 3; | ||
- | public static final int TWO_MINUTES = 1000 * 60 * 2; | ||
- | public static final int ONE_MINUTE = 1000 * 60 ; | ||
- | Score sleft = new Score(PlayerType.left); | ||
- | Score sright = new Score(PlayerType.right); | ||
- | MachineController mc = new MachineController(); | ||
- | StateMachine stateMachineOnChrono = new StateMachine(sleft, | ||
- | StateMachine stateMachineOnPoints= new StateMachine(sleft, | ||
- | |||
- | /* Des que un des joueurs a fait 5 touches et s'il y a une différence de au moins 1 touches entre les deux joueurs | ||
- | alors il est déclaré gagnant | ||
- | Par exemple un score de 5 pour l'un et de 3 pour l' | ||
- | mais aussi 7 et 5 | ||
- | par contre 5 et 4 ne suffisent pas. | ||
- | */ | ||
- | @Test | ||
- | public void testValidateOnScoreForLeft() { | ||
- | sleft.setScore(5); | ||
- | sright.setScore(3); | ||
- | assertEquals(PlayerType.left, | ||
- | } | ||
- | @Test | ||
- | public void testValidateOnScoreForRight() { | ||
- | sright.setScore(5); | ||
- | sleft.setScore(3); | ||
- | assertEquals(PlayerType.right, | ||
- | } | ||
- | |||
- | @Test | ||
- | public void testValidateFailOnScoreGap() { | ||
- | sleft.setScore(5); | ||
- | sright.setScore(4); | ||
- | assertEquals(PlayerType.fail, | ||
- | } | ||
- | |||
- | @Test | ||
- | public void testValidateFailOnScoreLevel() { | ||
- | sleft.setScore(4); | ||
- | sright.setScore(2); | ||
- | assertEquals(PlayerType.fail, | ||
- | } | ||
- | |||
- | |||
- | |||
- | // VERSION SIMPLIFIEE | ||
- | // Si aucun des joueurs n'a marqué 5 touches mais que les 3 minutes sont écoulées alors celui qui a fait le plus de touches est déclaré gagnant du round. | ||
- | // Si les deux ont le même score, le jeux doit se prolonger 2minutes. | ||
- | // Des que l'un des joueurs touche, il gagne. | ||
- | // AU bout de 5minute, le gagnant est tiré au sort. | ||
- | |||
- | @Test | ||
- | public void testValidateOnChronoLeft() { | ||
- | sleft.setScore(4); | ||
- | sright.setScore(2); | ||
- | assertEquals(PlayerType.left, | ||
- | } | ||
- | |||
- | @Test | ||
- | public void testValidateOnChronoRight() { | ||
- | sleft.setScore(1); | ||
- | sright.setScore(2); | ||
- | stateMachineOnChrono.setClockTime(THREE_MINUTES ); | ||
- | assertEquals(PlayerType.right, | ||
- | } | ||
- | |||
- | @Test | ||
- | public void testValidateFailOnChrono() { | ||
- | sleft.setScore(2); | ||
- | sright.setScore(2); | ||
- | stateMachineOnChrono.setClockTime(THREE_MINUTES + ONE_MINUTE); | ||
- | assertEquals(PlayerType.fail, | ||
- | } | ||
- | |||
- | @Test | ||
- | public void testValidateRandomOnChrono() { | ||
- | sleft.setScore(2); | ||
- | sright.setScore(2); | ||
- | stateMachineOnChrono.setClockTime(THREE_MINUTES + TWO_MINUTES); | ||
- | assertFalse(PlayerType.fail.equals( mc.validate(stateMachineOnChrono))); | ||
- | } | ||
- | |||
- | |||
- | </ | ||
- | ===== Amorçons la suite ===== | ||
- | |||
- | Cette fois-ci vous allez devoir utiliser vos propres capacités à modéliser. | ||
- | |||
- | Notre premier objectif est d' | ||
- | |||
- | IL s'agit de : | ||
- | - gérer une liste de rounds | ||
- | - prendre le prochain round affecté à cette table | ||
- | EXtension : a chaque round, les joueurs changent de côté. |
2013_2014/s2/td/etudedecas/etape2.1398972875.txt.gz · Last modified: 2014/05/01 19:34 by blay