1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
| class Jeu
#Déclaration des accesseurs (pas besoin de get et de set)
@@score = 0
attr_accessor :score, :defaite, :lignes, :colonnes, :mines, :x, :y
#Initialisation de la classe
def initialize(score=0,defaite=0,lignes=0,colonnes=0,mines=0,x=0,y=0)
@score
@defaite
@lignes
@colonnes
@mines
@x
@y
puts "DEMINEUR"
end
#Fonction demandant à l'utilisateur le nombre de lignes de la grille
def entrerlignes
begin
puts "Entrez le nombre de lignes (min. 5)"
lignes = gets.chomp.to_i
if (lignes < 5)
raise "Il faut au moins 5 lignes !"
end
rescue
puts "Erreur : #{$!}\n\n"
retry
end
lignes += 1
@lignes = lignes
end
#Fonction demandant à l'utilisateur le nombre de colonnes de la grille
def entrercolonnes
begin
puts "Entrez le nombre de colonnes (min. 5)"
colonnes = gets.chomp.to_i
if (colonnes < 5)
raise "Il faut au moins 5 colonnes !"
end
rescue
puts "Erreur : #{$!}\n\n"
retry
end
colonnes += 1
@colonnes = colonnes
end
#Fonction demandant à l'utilisateur le nombre de mines sur la grille (avec un maximum pour ne pas
#surcharger la grille de mines)
def entrermines
begin
puts "Entrez le nombre de mines à découvrir (maximum : " + ((@lignes-3)*(@colonnes-3)).to_s + ")"
mines = gets.chomp.to_i
if (mines < 1 || mines > ((@lignes-3)*(@colonnes-3)))
raise "Mauvais nombre de mines !"
end
rescue
puts "Erreur : #{$!}\n\n"
retry
end
@mines = mines
end
#Fonction demandant à l'utilisateur l'abscisse de la case à dévoiler
def entrerx
begin
puts "Ligne de la case à dévoiler :"
x = gets.chomp.to_i
if (x < 1 || x > @lignes)
raise "Coordonnée mauvaise !"
end
rescue
puts "Erreur : #{$!}\n\n"
retry
end
@x = x
end
#Fonction demandait à l'utilisateur l'ordonnée de la case à dévoiler
def entrery
begin
puts "Colonne de la case à dévoiler :"
y = gets.chomp.to_i
if (y < 1 || y > @colonnes)
raise "Coordonnée mauvaise !"
end
rescue
puts "Erreur : #{$!}\n\n"
retry
end
@y = y
end
#Fonction permettant de vérifier le contenu de la case à dévoiler (présence ou absence de mine)
def verification(tableau,tableaucache)
if (tableaucache[@x][@y] == ' X')
tableau[@x][@y] = ' X'
@defaite = 1
else
tableau[@x][@y] = ' '
@@score += 1
@score = @@score
end
end
#Fonction permettant d'afficher la grille demandée
def affichage(tableau)
puts tableau.map { |row| row.join(" ")}.join("\n")
puts "Score : " + @score.to_s
puts "Mines : " + @mines.to_s
end
#Fonction de fin du jeu (victoire / défaite)
def finjeu(tableau)
self.affichage(tableau)
if (@defaite == 1)
puts "YOU LOSE"
else
puts "YOU WIN"
end
end
end |
Partager