You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mastermind/Documentation/conception/diagramme_de_classes.md

1.7 KiB


@startuml

enum Couleur {
  ROUGE
  VERT
  BLEU
  JAUNE
  NOIR
  BLANC
}

enum Indicateur {
  BONNEPLACE
  BONNECOULEUR
}

class Jeton {
  +Jeton(couleur: Couleur)
}

Jeton *--> Couleur: +Couleur: Couleur

class Code {
  +Code(tailleCode: int)
  +Code(jetons: Jeton?[])
  +AjouterJeton(jeton: Jeton): void
  +SupprimerDernierJeton(): void
  +RecupererJeton(indice: int): void
  +Jetons(): Jeton?[]
  +EstComplet(): bool
  +TailleMaximale(): int
  +Comparer(autreCode: Code): Indicateur[]

  +NbJetons: int = 0
}

Code o--> Jeton: -lesJeton: Jeton?[]

class Plateau {
  -random: Random
  -tailleCode: int

  +Plateau(tailleCode: int, tailleGrille: int)
  +GenererCodeAleatoire(): void
  +EstComplet(): bool
  +AjouterCode(code: Code): void
  +EstBonCode(code: Code): bool
  +Grille(): Jeton?[][]
  +Indicateurs(): Indicateur[][]

  +Victoire: bool = false
  +Tour: int = 1
}

Plateau *--> Code: -codeSecret: Code
Plateau *--> Code: -grille: Code?[]
Plateau *--> Indicateur: -indicateurs: Indicateur[][]


class Joueur {
  +Joueur(nom: string, plateau: Plateau)

  +Nom: string
}

Joueur *--> Plateau: +Plateau: Plateau


interface IRegles {
  +AjouterJoueur(joueur: string): void
  +JoueurCourant(): Joueur
  +PasserLaMain(): void
  +GenererCode(): Code
  +CommencerLaPartie(): void
  +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()
  
  +Nom: string = "Règles classiques"
  +TourMaximum: int = 12
  +TailleCodeMaximum: int = 4
  +NbJoueurs: int
  +NbJoueursMaximum: int = 2
}

ReglesClassiques ..|> IRegles

@enduml