|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
```plantuml
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@startuml
|
|
|
|
|
|
|
|
|
|
enum Couleur {
|
|
|
|
@ -16,24 +17,27 @@ enum Indicateur {
|
|
|
|
|
BONNECOULEUR
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class Jeton {
|
|
|
|
|
struct Jeton {
|
|
|
|
|
---
|
|
|
|
|
---
|
|
|
|
|
+Jeton(couleur: Couleur)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Jeton *--> Couleur: +Couleur: Couleur
|
|
|
|
|
|
|
|
|
|
class Code {
|
|
|
|
|
---
|
|
|
|
|
+NbJetons: int = 0
|
|
|
|
|
---
|
|
|
|
|
+Code(tailleCode: int)
|
|
|
|
|
+Code(jetons: Jeton?[])
|
|
|
|
|
+Code(jetons: Jeton[])
|
|
|
|
|
+AjouterJeton(jeton: Jeton): void
|
|
|
|
|
+SupprimerDernierJeton(): void
|
|
|
|
|
+RecupererJeton(indice: int): void
|
|
|
|
|
+RecupererJeton(indice: int): Jeton
|
|
|
|
|
+Jetons(): Jeton?[]
|
|
|
|
|
+EstComplet(): bool
|
|
|
|
|
+TailleMaximale(): int
|
|
|
|
|
+Comparer(autreCode: Code): Indicateur[]
|
|
|
|
|
|
|
|
|
|
+NbJetons: int = 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Code o--> Jeton: -lesJeton: Jeton?[]
|
|
|
|
@ -41,7 +45,10 @@ Code o--> Jeton: -lesJeton: Jeton?[]
|
|
|
|
|
class Plateau {
|
|
|
|
|
-random: Random
|
|
|
|
|
-tailleCode: int
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
+Victoire: bool = false
|
|
|
|
|
+Tour: int = 1
|
|
|
|
|
---
|
|
|
|
|
+Plateau(tailleCode: int, tailleGrille: int)
|
|
|
|
|
+GenererCodeAleatoire(): void
|
|
|
|
|
+EstComplet(): bool
|
|
|
|
@ -49,9 +56,6 @@ class Plateau {
|
|
|
|
|
+EstBonCode(code: Code): bool
|
|
|
|
|
+Grille(): Jeton?[][]
|
|
|
|
|
+Indicateurs(): Indicateur[][]
|
|
|
|
|
|
|
|
|
|
+Victoire: bool = false
|
|
|
|
|
+Tour: int = 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Plateau *--> Code: -codeSecret: Code
|
|
|
|
@ -60,16 +64,24 @@ Plateau *--> Indicateur: -indicateurs: Indicateur[][]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Joueur {
|
|
|
|
|
+Joueur(nom: string, plateau: Plateau)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
+Nom: string
|
|
|
|
|
---
|
|
|
|
|
+Joueur(nom: string, plateau: Plateau)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Joueur *--> Plateau: +Plateau: Plateau
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface IRegles {
|
|
|
|
|
+AjouterJoueur(joueur: string): void
|
|
|
|
|
---
|
|
|
|
|
+Nom: string
|
|
|
|
|
+TourMaximum: int
|
|
|
|
|
+TailleCodeMaximum: int
|
|
|
|
|
+NbJoueurs: int
|
|
|
|
|
+NbJoueursMaximum: int
|
|
|
|
|
---
|
|
|
|
|
+AjouterJoueur(joueur: string): Joueur
|
|
|
|
|
+JoueurCourant(): Joueur
|
|
|
|
|
+PasserLaMain(): void
|
|
|
|
|
+GenererCode(): Code
|
|
|
|
@ -77,30 +89,60 @@ interface IRegles {
|
|
|
|
|
+EstTerminee(): bool
|
|
|
|
|
+Gagnants(): Joueur[]
|
|
|
|
|
+Perdants(): Joueur[]
|
|
|
|
|
|
|
|
|
|
+Nom: string
|
|
|
|
|
+TourMaximum: int
|
|
|
|
|
+TailleCodeMaximum: int
|
|
|
|
|
+NbJoueurs: int
|
|
|
|
|
+NbJoueursMaximum: int
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ReglesClassiques {
|
|
|
|
|
+nbJoueurs: int = 0
|
|
|
|
|
+joueurCourant: int?
|
|
|
|
|
+joueurs: Joueur[]
|
|
|
|
|
|
|
|
|
|
+ReglesClassiques()
|
|
|
|
|
|
|
|
|
|
-nbJoueurs: int = 0
|
|
|
|
|
-joueurCourant: int?
|
|
|
|
|
---
|
|
|
|
|
+Nom: string = "Règles classiques"
|
|
|
|
|
+TourMaximum: int = 12
|
|
|
|
|
+TailleCodeMaximum: int = 4
|
|
|
|
|
+NbJoueurs: int
|
|
|
|
|
+NbJoueursMaximum: int = 2
|
|
|
|
|
---
|
|
|
|
|
+ReglesClassiques()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IRegles <|.. ReglesClassiques
|
|
|
|
|
|
|
|
|
|
ReglesClassiques *--> Joueur: -joueurs: Joueur[]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Partie {
|
|
|
|
|
---
|
|
|
|
|
+StringEventHandler<TEventArgs>(sender: Object?, e: TEventArgs): string?
|
|
|
|
|
+JetonEventHandler<TEventArgs>(sender: Object?, e: TEventArgs): Jeton
|
|
|
|
|
---
|
|
|
|
|
+DemanderJoueur: StringEventHandler<DemanderJoueurEventArgs>?
|
|
|
|
|
+DemanderJeton: JetonEventHandler<DemanderJetonEventArgs>?
|
|
|
|
|
+AjouterJoueur: EventHandler<AjouterJoueursEventArgs>?
|
|
|
|
|
+DebutPartie: EventHandler<AjouterJoueursEventArgs>?
|
|
|
|
|
+NouveauTour: EventHandler<AjouterJoueursEventArgs>?
|
|
|
|
|
+NouveauJeton: EventHandler<AjouterJoueursEventArgs>?
|
|
|
|
|
+NouveauCode: EventHandler<AjouterJoueursEventArgs>?
|
|
|
|
|
+PasserMain: EventHandler<AjouterJoueursEventArgs>?
|
|
|
|
|
+PartieTerminee: EventHandler<AjouterJoueursEventArgs>?
|
|
|
|
|
---
|
|
|
|
|
-QuandDemanderJoueur(int numero): string?
|
|
|
|
|
-QuandDemanderJeton(): Jeton?
|
|
|
|
|
-QuandAjouterJoueur(Joueur joueur): void
|
|
|
|
|
-QuandDebutPartie(): void
|
|
|
|
|
-QuandNouveauTour(Joueur joueur, int tour, Jeton?[][] grille, Indicateur[][] indicateurs): void
|
|
|
|
|
-QuandNouveauJeton(Jeton jeton): void
|
|
|
|
|
-QuandNouveauCode(Code: code): void
|
|
|
|
|
-QuandPasserMain(): void
|
|
|
|
|
-QuandPartieTerminee(Joueur[] gagnants, Joueur[] perdants): void
|
|
|
|
|
+Partie(IRegles regles)
|
|
|
|
|
+Jouer(): void
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ReglesClassiques ..|> IRegles
|
|
|
|
|
|
|
|
|
|
Partie *--> IRegles: -regles: IRegles
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@enduml
|
|
|
|
|
|
|
|
|
|