class GrilleUI

Auteur:: Brabant Mano
Version:: 0.1
Date:: 09/04/2020

Cette classe permet d'afficher une grille de hashi

Attributes

grille[R]

@grille => La grile avec laquelle on joue

Public Class Methods

new(grille, taille = 40) click to toggle source

Ce constructeur permet de créer un nouveau afficheur de grille

param
  • grille La grille que l'on veut afficher

  • taille La taille des cases de la grille (40 par default)

Calls superclass method
# File lib/Hashiparmentier/UI/GrilleUI.rb, line 26
def initialize(grille, taille = 40)

  super()

  @grille = grille
  @taille = taille

  init()

  signal_connect "draw" do
    on_draw()
  end

end

Public Instance Methods

getCase(i, j) click to toggle source

Cette méthode permet de retourner une case à une position donnée

param
  • i La position en abscisse

  • j La position en ordonnée

return
  • La case à la position (i, j)

# File lib/Hashiparmentier/UI/GrilleUI.rb, line 82
def getCase(i, j)
  return @mat[i][j]
end
grille=(grille) click to toggle source

Cette méthode permet de modifier la grille que l'on affiche Méthode utilisé par la suppression d'hypothèses

param
  • grille La nouvelle grille à afficher

# File lib/Hashiparmentier/UI/GrilleUI.rb, line 68
def grille=(grille)

  @grille = grille
  init()

end
on_draw() click to toggle source

Cette méthode permet de dessiner la grille Appelé automatique en la connectant au signal “draw”

# File lib/Hashiparmentier/UI/GrilleUI.rb, line 101
def on_draw()

  draw(self.window)

  @mat.each do |l|
    l.each do |c|
      c.draw(self.window)
    end
  end

  self.queue_draw()

end
recommencer() click to toggle source

Cette méthode permet de réinitialiser le grille que l'on affiche

# File lib/Hashiparmentier/UI/GrilleUI.rb, line 136
def recommencer()
  @grille.recommencer()
end
sauvegarder(compte) click to toggle source

Cette méthode permet de sauvegarder la grille que l'on est en train d'afficher

param
  • compte Le compte auquel associer la sauvegarde

# File lib/Hashiparmentier/UI/GrilleUI.rb, line 130
def sauvegarder(compte)
  @grille.sauvegarder(compte)
end
sortLimite?(i, j) click to toggle source

Cette méthode permet de savoir si une position donnée est dans les limites de la grille

param
  • i La position en abscisse

  • j La position en ordonnée

return
  • true si les coordonnées sont en dehors de la grille, false sinon

# File lib/Hashiparmentier/UI/GrilleUI.rb, line 93
def sortLimite?(i, j)
  return @grille.sortLimite?(i, j)
end

Private Instance Methods

draw(window) click to toggle source
# File lib/Hashiparmentier/UI/GrilleUI.rb, line 116
        def draw(window)

  cr = window.create_cairo_context

  cr.set_source_rgb(239/255.0, 227/255.0, 192/255.0)
  cr.rectangle(0, 0, @taille * @grille.tailleY(), @taille * @grille.tailleX())
  cr.fill()

end
init() click to toggle source
# File lib/Hashiparmentier/UI/GrilleUI.rb, line 41
        def init()

  @mat = Array.new(@grille.tailleX()) { Array.new(@grille.tailleY()) }

  self.set_size_request(@grille.tailleY() * @taille, @grille.tailleX() * @taille)

  for i in 0..(@grille.tailleX()-1)
    for j in 0..(@grille.tailleY()-1)
      c = @grille.getCase(i, j)
      if(c.estIle?())
        @mat[i][j] = IleUI.creer(c, @taille)
      elsif(c.estPont?())
        @mat[i][j] = PontUI.creer(c, @taille)
      else
        @mat[i][j] = CaseUI.creer(c, @taille)
      end

    end
  end

end