Class: Pont

Inherits:
Case show all
Includes:
Comparable
Defined in:
lib/Hashiparmentier/Core/Pont.rb

Overview

Auteur

Brabant Mano

Version

0.1

Date

09/04/2020

Cette classe représente les ponts du Hashi

Hérite de Case

Constant Summary collapse

NULLE =

Cette constante représente l’une des directions que peut prendre un pont(Seulement quand valeur du pont = 0)

0
HORIZONTAL =

Cette constante représente l’une des directions que peut prendre un pont(Pont horizontal)

1
VERTICAL =

Cette constante représente l’une des directions que peut prendre un pont(Pont vertical)

2
MAX_LIGNE =

Cette constante représente le nombre maximum de ligne pour un pont

2

Instance Attribute Summary collapse

Attributes inherited from Case

#grille, #posX, #posY

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Case

#estIle?

Constructor Details

#initialize(posX, posY, grille, direction, valeur) ⇒ Pont

:nodoc:



93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/Hashiparmentier/Core/Pont.rb', line 93

def initialize(posX, posY, grille, direction, valeur)

  super(posX, posY, grille)
  @valeur = valeur
  @direction = direction
  @surbrillance = false
  @marque = false
  @directionSurbrillance = NULLE
  @couleurPont = Couleur::JAUNE
  @couleurPontCourante = Couleur::JAUNE

end

Instance Attribute Details

#couleurPontObject (readonly)

Returns the value of attribute couleurPont.



48
49
50
# File 'lib/Hashiparmentier/Core/Pont.rb', line 48

def couleurPont
  @couleurPont
end

#couleurPontCouranteObject (readonly)

Returns the value of attribute couleurPontCourante.



51
52
53
# File 'lib/Hashiparmentier/Core/Pont.rb', line 51

def couleurPontCourante
  @couleurPontCourante
end

#directionObject (readonly)

Returns the value of attribute direction.



36
37
38
# File 'lib/Hashiparmentier/Core/Pont.rb', line 36

def direction
  @direction
end

#directionSurbrillanceObject

Returns the value of attribute directionSurbrillance.



42
43
44
# File 'lib/Hashiparmentier/Core/Pont.rb', line 42

def directionSurbrillance
  @directionSurbrillance
end

#marqueObject

Returns the value of attribute marque.



45
46
47
# File 'lib/Hashiparmentier/Core/Pont.rb', line 45

def marque
  @marque
end

#surbrillanceObject

Returns the value of attribute surbrillance.



39
40
41
# File 'lib/Hashiparmentier/Core/Pont.rb', line 39

def surbrillance
  @surbrillance
end

#valeurObject (readonly)

Returns the value of attribute valeur.



33
34
35
# File 'lib/Hashiparmentier/Core/Pont.rb', line 33

def valeur
  @valeur
end

Class Method Details

.construit(posX, posY, grille, direction, valeur) ⇒ Object

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



81
82
83
84
85
86
87
88
89
# File 'lib/Hashiparmentier/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

.creer(posX, posY, grille) ⇒ Object

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



69
70
71
# File 'lib/Hashiparmentier/Core/Pont.rb', line 69

def Pont.creer(posX, posY, grille)
    Pont.construit(posX, posY, grille, NULLE, 0)
end

.verifieDirection(direction) ⇒ Object

:nodoc:



54
55
56
57
# File 'lib/Hashiparmentier/Core/Pont.rb', line 54

def Pont.verifieDirection(direction) #privée
  return true if([NULLE, HORIZONTAL, VERTICAL].include?(direction))
  return false
end

Instance Method Details

#<=>(autre) ⇒ Object

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



155
156
157
158
159
160
161
162
# File 'lib/Hashiparmentier/Core/Pont.rb', line 155

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

#augmenteValeur(direction) ⇒ Object

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



242
243
244
# File 'lib/Hashiparmentier/Core/Pont.rb', line 242

def augmenteValeur(direction)
    return modifValeur(direction, 1)
end

#clickOnObject

Cette méthode permet de simuler un “clic” sur le pont



131
132
133
# File 'lib/Hashiparmentier/Core/Pont.rb', line 131

def clickOn()
  @grille.clickOnPont(self)
end

#demarquerObject

Cette méthode permet de modifier le marquage du pont quand il est valide



288
289
290
# File 'lib/Hashiparmentier/Core/Pont.rb', line 288

def demarquer()
  @marque = false
end

#diminueValeur(direction) ⇒ Object

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



254
255
256
# File 'lib/Hashiparmentier/Core/Pont.rb', line 254

def diminueValeur(direction)
    return modifValeur(direction, MAX_LIGNE)
end

#estPont?Boolean

Cette méthode retourne vrai

return
  • true

Returns:

  • (Boolean)


296
297
298
# File 'lib/Hashiparmentier/Core/Pont.rb', line 296

def estPont?()
  return true
end

#marquerObject

Cette méthode permet de modifier le marquage du pont quand il est faux



282
283
284
# File 'lib/Hashiparmentier/Core/Pont.rb', line 282

def marquer()
  @marque = true
end

#metSurbrillance(direction) ⇒ Object

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



265
266
267
# File 'lib/Hashiparmentier/Core/Pont.rb', line 265

def metSurbrillance(direction)
    return modifSurbrillance(direction, true)
end

#razObject

Cette méthode permet de remettre à zéro le pont



137
138
139
140
141
142
143
144
145
# File 'lib/Hashiparmentier/Core/Pont.rb', line 137

def raz()

  @valeur = 0
  @direction = NULLE
  @surbrillance = false
  @marque = false
  @directionSurbrillance = NULLE

end

#redoCouleurPont(couleurPont) ⇒ Object

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



114
115
116
117
118
119
# File 'lib/Hashiparmentier/Core/Pont.rb', line 114

def redoCouleurPont(couleurPont)
  if(@couleurPont == @couleurPontCourante)
    @couleurPontCourante = couleurPont
  end
  @couleurPont = couleurPont
end

#supprSurbrillance(direction) ⇒ Object

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



276
277
278
# File 'lib/Hashiparmentier/Core/Pont.rb', line 276

def supprSurbrillance(direction)
    return modifSurbrillance(direction, false)
end

#to_sObject

Cette méthode permet d’afficher le pont dans un terminal



166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/Hashiparmentier/Core/Pont.rb', line 166

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

#undoCouleurPont(couleurPont) ⇒ Object

Cette méthode permet de modifer la couleur la couleur que devrais prendre le pont s’il est modifié

param
  • couleurPont La nouvelle couleur



125
126
127
# File 'lib/Hashiparmentier/Core/Pont.rb', line 125

def undoCouleurPont(couleurPont)
  @couleurPont = couleurPont
end