Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
7a5644d
Add files via upload
Ikenaa Mar 10, 2021
0679b3c
Merge pull request #1 from Nowyyy/La-branche-de-Rayyan
Ikenaa Mar 10, 2021
e433a2e
Delete Menu.zip
Nowyyy Mar 10, 2021
fc6b730
Add files via upload
Nowyyy Mar 22, 2021
014c76c
Ecran Victoire
Nowyyy Mar 25, 2021
c5d782b
Add files via upload
Nowyyy Mar 25, 2021
810caae
Delete ListeNiveau directory
Nowyyy Apr 16, 2021
aa8fccd
Delete Ressources directory
Nowyyy Apr 16, 2021
8ae22d5
Delete APropos.rb
Nowyyy Apr 16, 2021
492c8f4
Delete BoutonChoix.rb
Nowyyy Apr 16, 2021
bc4ac64
Delete Classement.rb
Nowyyy Apr 16, 2021
ab77de1
Delete ClassementFacile.rb
Nowyyy Apr 16, 2021
c4feb4c
Delete ClassementNiveau.rb
Nowyyy Apr 16, 2021
97e1cda
Delete Client.rb
Nowyyy Apr 16, 2021
6c6b478
Delete Hashi.rb
Nowyyy Apr 16, 2021
b5a3e18
Delete Tuto.rb
Nowyyy Apr 16, 2021
681f919
Delete HashiGame.rb
Nowyyy Apr 16, 2021
1b35330
Delete HashiGrid.rb
Nowyyy Apr 16, 2021
3e761b4
Delete Hypothese.rb
Nowyyy Apr 16, 2021
ac15b8d
Delete Ile.rb
Nowyyy Apr 16, 2021
ce41425
Delete MainMenu.rb
Nowyyy Apr 16, 2021
b882ea2
Delete MenuSelection.rb
Nowyyy Apr 16, 2021
9d67417
Delete Pause.rb
Nowyyy Apr 16, 2021
c8ee5d4
Delete Plateau.rb
Nowyyy Apr 16, 2021
352ec43
Delete Pont.rb
Nowyyy Apr 16, 2021
ee065b9
Delete Sauvegarde.rb
Nowyyy Apr 16, 2021
ad3a85b
Update nouvelle version V0.1 - Documentation 85.31%
ydnic-wolver Apr 16, 2021
0a583dd
Update nouvelle version V.2
ydnic-wolver Apr 16, 2021
11f0133
Update nouvelle V.3
ydnic-wolver Apr 16, 2021
e0f3e9b
Update version V.3
ydnic-wolver Apr 16, 2021
8f8f733
Merge branch 'main' of https://github.com/Nowyyy/Hashi-TP4
ydnic-wolver Apr 16, 2021
2af9d66
Update Version 4
ydnic-wolver Apr 16, 2021
5de05d7
Update Version 5
ydnic-wolver Apr 16, 2021
715863c
Version 5.1
Nowyyy Apr 16, 2021
a11750e
Update menu_pause.glade
ydnic-wolver Apr 16, 2021
64a1cf2
Update menu_win.glade
ydnic-wolver Apr 16, 2021
efeceae
Delete Classement directory
Nowyyy Apr 19, 2021
40ec899
Delete ListeNiveau directory
Nowyyy Apr 19, 2021
bbe9d44
Delete Ressources directory
Nowyyy Apr 19, 2021
9b14ea3
Delete Sauvegarde directory
Nowyyy Apr 19, 2021
4b31fe4
Delete css directory
Nowyyy Apr 19, 2021
a295d2d
Delete doc directory
Nowyyy Apr 19, 2021
401dded
Delete UndoRedo.rb
Nowyyy Apr 19, 2021
d053fb4
Delete Tuto.rb
Nowyyy Apr 19, 2021
f4d624e
Delete Sauvegarde.rb
Nowyyy Apr 19, 2021
251a480
Delete Pont.rb
Nowyyy Apr 19, 2021
7bd0e69
Delete APropos.rb
Nowyyy Apr 19, 2021
4f96347
Delete Aide.rb
Nowyyy Apr 19, 2021
e9c1993
Delete AideTexte.txt
Nowyyy Apr 19, 2021
da7e800
Delete BoutonChoix.rb
Nowyyy Apr 19, 2021
f877f7d
Delete Classement.rb
Nowyyy Apr 19, 2021
5ea6de3
Delete ClassementNiveau.rb
Nowyyy Apr 19, 2021
59e823d
Delete Client.rb
Nowyyy Apr 19, 2021
8cbff59
Delete HashiGrid.rb
Nowyyy Apr 19, 2021
99c6f4d
Delete Hypothese.rb
Nowyyy Apr 19, 2021
d39a4c3
Delete Ile.rb
Nowyyy Apr 19, 2021
6ffe39f
Delete MainMenu.rb
Nowyyy Apr 19, 2021
ce39aad
Delete MenuLayout.rb
Nowyyy Apr 19, 2021
8b1205b
Delete MenuSelection.rb
Nowyyy Apr 19, 2021
3a429e8
Delete Pause.rb
Nowyyy Apr 19, 2021
b90e957
Delete Plateau.rb
Nowyyy Apr 19, 2021
345d6f0
Version 1.0
Nowyyy Apr 19, 2021
01a11f2
Version 1.0
Nowyyy Apr 19, 2021
846c14d
Version 1.0
Nowyyy Apr 19, 2021
c3a45dc
Génération Documents
ydnic-wolver Apr 19, 2021
74c3360
Fix Save Hypothèse
ydnic-wolver Apr 19, 2021
662a4cc
Fix sauvegarde Hypothèse - Test fullscreen
ydnic-wolver Apr 19, 2021
aae68c5
Ajout set_sensitivi A propos
ydnic-wolver Apr 19, 2021
2241268
Add files via upload
Nowyyy Apr 19, 2021
e6a63a9
Update README.md
Nowyyy Apr 19, 2021
535ac6d
Update README.md
Nowyyy Apr 19, 2021
e899879
Update README.md
Nowyyy Apr 19, 2021
55fbf97
Update README.md
Nowyyy Apr 19, 2021
5778960
Update README.md
Nowyyy Apr 19, 2021
e35f4bc
Update README.md
Nowyyy Apr 19, 2021
757d8ae
Add files via upload
Nowyyy Apr 19, 2021
2d7c0fb
Delete Cahier des charges.pdf
Nowyyy Apr 19, 2021
a589b7c
Delete Cahier_2_Conception.pdf
Nowyyy Apr 19, 2021
f12107c
Delete Manuel_Utilisateur.pdf
Nowyyy Apr 19, 2021
204c130
Add files via upload
Nowyyy Apr 19, 2021
9aca0a5
Add files via upload
Nowyyy Apr 19, 2021
8c89363
Delete Manuel Utilisateur .pdf
Nowyyy Apr 19, 2021
8b34553
Add files via upload
Nowyyy Apr 19, 2021
36ba5ce
Delete Sauvegarde/Hard directory
Nowyyy Apr 20, 2021
7921587
Delete save12x12_1.txt
Nowyyy Apr 20, 2021
71e3217
Delete save7x7_1.txt
Nowyyy Apr 20, 2021
63766cc
Add files via upload
Nowyyy Apr 20, 2021
9c487db
Delete 7x7_1.txt
Nowyyy Apr 20, 2021
c0617c2
Delete 7x7_2.txt
Nowyyy Apr 20, 2021
32ffd4c
Add files via upload
Nowyyy Apr 20, 2021
aa4a03c
Update README.md
Nowyyy Apr 20, 2021
7989bd9
Update Plateau.rb
Nowyyy Apr 20, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions APropos.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
require 'gtk3'

##
# Cette classe représente le menu A Propos
class APropos < Gtk::Window

# Constructeur du menu A propos
def initialize(menu)
super()

set_title "A Propos"
set_resizable(true)
signal_connect "destroy" do
menu.set_sensitive(true)
self.destroy

end

set_default_size 500, 400

set_window_position Gtk::WindowPosition::CENTER

title = "<span font_desc = \"Toledo 30\">A Propos</span>\n"
texte = "<span font_desc = \"Toledo 15\">Créé par le groupe 4\n\n Aaron Amani \n Axel Jourry \n Clement Janvier \n Cindy Calvados \n Collins Soares \n Florian Dreux \n Rayyan Lajnef \n Thomas Malabry \n Willhem Liban </span>\n"

boxMenu = Gtk::Box.new(:vertical, 6)

textTitle = Gtk::Label.new("A Propos")
textTitle.set_markup(title)
textTitle.set_justify(Gtk::Justification::CENTER)

textepro = Gtk::Label.new()
textepro.set_markup(texte)
textepro.set_justify(Gtk::Justification::CENTER)

# Creation d'un nouveau fichier permettant de gérer le CSS
css_file = Gtk::CssProvider.new
css_file.load(data: <<-CSS)
.about {
background-color: #F8DDD7;
}
CSS

# Ajout de la classe CSS a la box
boxMenu.style_context.add_class('about')
# Lien entre la box et le fichier css afin que le css puisse être appliqué
boxMenu.style_context.add_provider(css_file, Gtk::StyleProvider::PRIORITY_USER)

boxMenu.add(textTitle)
boxMenu.add(textepro)

add(boxMenu)

show_all
end
end
287 changes: 287 additions & 0 deletions Aide.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,287 @@
require 'gtk3'

load 'HashiGrid.rb'
load "Ile.rb"
load "Pont.rb"

##
# Cette classe correspond à l'aide du jeu
class Aide

# @id -> Id de l'aide
# @grille -> Grille dans laquelle l'aide est utile
# @nb_voisins -> Nombre de voisins de chaque sommet de la grille
# @position -> Case concernée par l'aide


# Identifiant correspondant a l'état dans laquelle se trouve le plateau
attr_reader :id

# Constructeur du menu Aide
# * +grille+ grille dans laquelle l'aide doit opérer
def initialize(grille)
@grille = grille
@nb_voisins = Array.new(@grille.sommets.size)
@id = 0
end

# Méthode permettant de definir un cas en fonction de l'etat du tableau
def lireId
@id = definirCas()
return self
end

# Méthode permettant d'obtenir le message d'aide correspondant un id
def getMessageAide
self.lireId()
file = File.readlines("AideTexte.txt")
file.each do |line|
temp = line.split(':')
if( temp[0] == @id.to_s )
return temp[1]
end
end
end


# Méthode responsable de l'analyse de la grille ainsi que de ses sommets
# afin de déduire le cas dans lequel on se trouve.
def definirCas()
@grille.sommets.each_with_index do |x, i|
@nb_voisins[i] = x.compterVoisins()
end
if estCas1?()
return 1
elsif estCas2?()
return 2
elsif estCas3?()
return 3
elsif estCas4?()
return 4
elsif estCas5?()
return 5
elsif estCas6?()
return 6
elsif estCas7?()
return 7
elsif estCas8?()
return 8
elsif estCas9?()
return 9
elsif estCas10?()
return 10
elsif estCas11?()
return 11
elsif estCas12?()
return 12
elsif estCas13?()
return 13
elsif estCas14?()
return 14
else
return 0
end
end

# VALIDE
def estCas1?()
@grille.sommets.each_with_index do |x, i|
if @nb_voisins[i] == 1 && x.pontRestants() != x.degreeMax
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end


# Cas 2 : île avec une seule île voisine restante dans la grille
def estCas2?()
@grille.sommets.each_with_index do |x, i|

if x.compterVoisinsNonComplets() == 1 && x.pontRestants() != x.degreeMax
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end

# Cas 3 : île à 8 restante dans la grille
def estCas3?()
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 8 && x.pontRestants() != x.degreeMax
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end

# Cas 4 : île à 6 avec 3 îles voisines restante dans la grille
def estCas4?()
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 6 && @nb_voisins[i] == 3 && x.pontRestants() != x.degreeMax
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end

# Cas 5 : île à 4 avec 2 îles voisines restante dans la grille
def estCas5?()
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 4 && @nb_voisins[i] == 2 && x.pontRestants() != x.degreeMax
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end

# Cas 6 : île à 4 avec deux des îles voisines à 1
def estCas6?()
compteur = 0
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 4 && @nb_voisins[i] == 3 && x.pontRestants() != x.degreeMax
x.getVoisins().each do |v|
compteur = 0
if v.degreeMax == 1
compteur += 1
end
end
if compteur == 2
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
end
return false
end

# Cas 7 : île à 5 avec trois îles voisines restante dans la grille
def estCas7?()
compteur = 0
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 5 && @nb_voisins[i] == 3 && !x.pontAvecVoisins()
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end


# Cas 8 : île à 3 avec deux îles voisines dont une à 1 restante dans la grille
def estCas8?()
compteur = 0
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 3 && @nb_voisins[i] == 2 && x.pontRestants() != x.degreeMax
x.getVoisins().each do |v|
if v.degreeMax == 1 && v.connexionRestantes() != 0
compteur += 1
end
end
if compteur == 1
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
end
return false
end


# Cas 9 : île à 7 restante dans la grille
def estCas9?()
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 7 && !x.pontAvecVoisins()
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end

# Cas 10 : île à 5 avec trois îles voisines restante dans la grille
def estCas10?()
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 5 && @nb_voisins[i] == 3 && !x.pontAvecVoisins()
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end


# Cas 11 : île à 3 avec deux îles voisines restante dans la grille
def estCas11?()
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 3 && @nb_voisins[i] == 2 && !x.pontAvecVoisins()
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
return false
end

# Cas 12 : île à 6 avec deux des îles voisines à 1
def estCas12?()
compteur = 0
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 6 && x.pontRestants() != x.degreeMax
x.getVoisins().each do |v|
compteur = 0
if v.degreeMax == 1
compteur += 1
end
end
if compteur == 2
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
end
return false
end


# Cas 13 : île à 4 avec deux des îles voisines à 1
def estCas13?()
compteur = 0
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 4 && @nb_voisins[i] == 3 && x.pontRestants() != x.degreeMax
x.getVoisins().each do |v|
compteur = 0
if v.degreeMax == 1
compteur += 1
end
end
if compteur == 2
@position = @grille.get_child_at(x.column, x.row)
return true
end
end
end
return false
end

# Cas 14 : île à 2 avec deux îles voisines dont une île à 2 restante
def estCas14?()
voisinDeux = false
@grille.sommets.each_with_index do |x, i|
if x.degreeMax == 2 && @nb_voisins[i] == 2 && x.pontRestants() == 0
x.getVoisins().each do |v|
if v.degreeMax == 2
@position = @grille.get_child_at(x.column, x.row)
voisinDeux = true
end
end
end
end
return voisinDeux
end

end
15 changes: 15 additions & 0 deletions AideTexte.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
0:Une ile ne doit pas depasser son degre
1:Ile avec une seule ile voisine restante dans la grille
2:Ile avec une seule possibilite de connexion restante dans la grille
3:Ile a 8 restante dans la grille
4:Ile a 6 avec 3 iles voisines restante dans la grille
5:Ile a 4 avec 2 iles voisines restante dans la grille
6:Ile a 4 avec une ile voisine a 1 restante dans la grille
7:Ile a 5 avec trois iles voisines dont une a 1 restante dans la grille
8:Ile a 3 avec deux iles voisines dont une a 1 restante dans la grille
9:Ile a 7 restante dans la grille
10:Ile a 5 avec trois iles voisines restante dans la grille
11:Ile a 3 avec deux iles voisines restante dans la grille
12:Ile a 6 avec deux des iles voisines a 1 restante dans la grille
13:Ile a 4 avec deux des iles voisines a 1 restante dans la grille
14:Ile a 2 avec deux iles voisines dont une ile a 2 restante dans la grille
Loading