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[RW]

@couleurPont => La couleur que prendrait le pont s'il est modifié

couleurPontCourante[RW]

@couleurPontCourante => La couleur du pont

direction[R]

@direction => Direction du pont (NULLE, HORIZONTAL, VERTICAL)

directionSurbrillance[RW]

@directionSurbrillance => La direction dans laquelle le pont en surbrillance est dirigé

marque[RW]

@marque => Booléen pour l'affichage, si égal à true le pont sera affiché en surbrillance rouge

surbrillance[RW]

@surbrillance => Booléen pour l'affichage, si égal à true le pont sera affiché en surbrillance

valeur[R]

@valeur => Valeur du pont(nombre de trait)

Public Class Methods

construit(posX, posY, grille, direction, valeur) click to toggle source

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
creer(posX, posY, grille) click to toggle source

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

<=>(autre) click to toggle source

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
augmenteValeur(direction) click to toggle source

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
clickOn() click to toggle source

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

# File Core/Pont.rb, line 131
def clickOn()
  @grille.clickOnPont(self)
end
demarquer() click to toggle source

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
diminueValeur(direction) click to toggle source

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
estPont?() click to toggle source

Cette méthode retourne vrai

return
  • true

# File Core/Pont.rb, line 299
def estPont?()
  return true
end
marquer() click to toggle source

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
metSurbrillance(direction) click to toggle source

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
raz() click to toggle source

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
redoCouleurPont(couleurPont) click to toggle source

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
supprSurbrillance(direction) click to toggle source

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
to_s() click to toggle source

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
undoCouleurPont(couleurPont) click to toggle source

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