class Pont
Auteur:: Brabant Mano Version:: 0.1 Date:: 09/04/2020
Cette classe représente les ponts du Hashi
Hérite de Case
Constants
- HORIZONTAL
Cette constante représente l'une des directions que peut prendre un pont(Pont horizontal)
- MAX_LIGNE
Cette constante représente le nombre maximum de ligne pour un pont
- NULLE
Cette constante représente l'une des directions que peut prendre un pont(Seulement quand valeur du pont = 0)
- VERTICAL
Cette constante représente l'une des directions que peut prendre un pont(Pont vertical)
Attributes
@couleurPont => La couleur que prendrait le pont s'il est modifié
@couleurPontCourante => La couleur du pont
@direction => Direction du pont (NULLE, HORIZONTAL
, VERTICAL
)
@directionSurbrillance => La direction dans laquelle le pont en surbrillance est dirigé
@marque => Booléen pour l'affichage, si égal à true le pont sera affiché en surbrillance rouge
@surbrillance => Booléen pour l'affichage, si égal à true le pont sera affiché en surbrillance
@valeur => Valeur du pont(nombre de trait)
Public Class Methods
Ce constructeur permet de créer un nouveau pont avec des valeurs
- param
-
posX La position sur l'axe des abscisse
-
posY La position sur l'axe des ordonnées
-
grille La grille sur laquelle se trouve le pont
-
direction La direction du pont
-
valeur La taille du pont
-
# File Core/Pont.rb, line 81 def Pont.construit(posX, posY, grille, direction, valeur) if(Pont.verifieDirection(direction)) new(posX, posY, grille, direction, valeur) else new(posX, posY, grille, NULLE, 0) end end
Ce constructeur permet de créer un nouveau pont
- param
-
posX La position sur l'axe des abscisse
-
posY La position sur l'axe des ordonnées
-
grille La grille sur laquelle se trouve le pont
-
# File Core/Pont.rb, line 69 def Pont.creer(posX, posY, grille) Pont.construit(posX, posY, grille, NULLE, 0) end
Public Instance Methods
Cette méthode permet de comparer des ponts entre-eux
- param
-
autre L'autre pont à comparer
-
- return
-
0 si les ponts sont égaux
-
un nombre négatif si le premier pont est inférieur au deuxième
-
un nombre positif si le premier pont est supérieur au deuxième
-
# File Core/Pont.rb, line 156 def <=>(autre) return 1 if(!autre.estPont?()) return @direction <=> autre.direction if(@direction != autre.direction) return @valeur <=> autre.valeur if(@valeur != autre.valeur) return 0 end
Cette méthode permet d'augmenter la valeur du pont
- param
-
direction La direction dans laquelle on veut augmenter le pont
-
Si le pont que l'on augmente avait 2 trait alors le pont disparait
- return
-
true Si la valeur à été modifié
-
false Sinon
-
# File Core/Pont.rb, line 241 def augmenteValeur(direction) return modifValeur(direction, 1) end
Cette méthode permet de simuler un “clic” sur le pont
# File Core/Pont.rb, line 131 def clickOn() @grille.clickOnPont(self) end
Cette méthode permet de modifier le marquage du pont quand il est valide
# File Core/Pont.rb, line 290 def demarquer() @marque = false end
Cette méthode permet de diminuer la valeur du pont
- param
-
direction La direction dans laquelle on veut diminuer le pont
-
Si le pont que l'on diminue n'avait pas de trait alors un pont à deux trait apparait
- return
-
true Si la valeur à été modifié
-
false Sinon
-
# File Core/Pont.rb, line 253 def diminueValeur(direction) return modifValeur(direction, MAX_LIGNE) end
Cette méthode retourne vrai
- return
-
true
-
# File Core/Pont.rb, line 299 def estPont?() return true end
Cette méthode permet de modifier le marquage du pont quand il est faux
# File Core/Pont.rb, line 282 def marquer() @marque = true end
Cette méthode permet de mettre en surbrillance le pont
- param
-
direction La direction dans laquelle on veut mettre en surbrillance le pont
-
- return
-
true Si le pont a été mis en surbrillance
-
false Sinon
-
# File Core/Pont.rb, line 265 def metSurbrillance(direction) return modifSurbrillance(direction, true) end
Cette méthode permet de remettre à zéro le pont
# File Core/Pont.rb, line 138 def raz() @valeur = 0 @direction = NULLE @surbrillance = false @marque = false @directionSurbrillance = NULLE end
Cette méthode permet de modifier la couleur que devrais prendre le pont s'il est modifié ainsi que sa couleur courante si elle était la même que la couleur après modification
Utilisé par les hypothèses
- param
-
couleurPont La nouvelle couleur
-
# File Core/Pont.rb, line 114 def redoCouleurPont(couleurPont) if(@couleurPont == @couleurPontCourante) @couleurPontCourante = couleurPont end @couleurPont = couleurPont end
Cette méthode permet de diminuer la valeur du pont
- param
-
direction La direction dans laquelle on veut enlever la surbrillance
-
- return
-
true Si la valeur n'est plus en surbrillance
-
false Sinon
-
# File Core/Pont.rb, line 276 def supprSurbrillance(direction) return modifSurbrillance(direction, false) end
Cette méthode permet d'afficher le pont dans un terminal
# File Core/Pont.rb, line 167 def to_s() ret = " " if(@surbrillance) ret = "P" end if(@direction == HORIZONTAL) if(@valeur == 1) ret = "-" elsif(@valeur == 2) ret = "=" end elsif(@direction == VERTICAL) if(@valeur == 1) ret = "|" elsif(@valeur == 2) ret = "\"" end end if(@marque) ret = "R" end return ret end
Cette méthode permet de modifer la couleur la couleur que devrais prendre le pont s'il est modifié
- param
-
couleurPont La nouvelle couleur
-
# File Core/Pont.rb, line 125 def undoCouleurPont(couleurPont) @couleurPont = couleurPont end