class NombreNonDisponible < Exception def initialize(n) super(n.to_s + " n'est pas disponible") end end class JeuCompteEstBon attr_reader :resultat_attendu attr_reader :resultat_obtenu NOMBRES_PERMIS = [1,2,3,4,5,6,7,8,9,10,25,50,75,100] def initialize nombres_disponibles = NOMBRES_PERMIS @nombres = Array.new 6.times { @nombres << nombres_disponibles.slice!(rand(nombres_disponibles.size)) } @resultat_attendu = rand(899) + 100 reset_nombres_utilises end def reset_nombres_utilises @nombres_utilises = Array.new @resultat_obtenu=0 end def nombre_disponibles @nombres.reject {|n| @nombres_utilises.include?(n) } end def utiliser_nombre(n) if @nombres.include?(n) @nombres_utilises << n else raise NombreNonDisponible, n end end def +(n) utiliser_nombre n @resultat_obtenu = @resultat_obtenu + n end def -(n) utiliser_nombre n @resultat_obtenu = @resultat_obtenu - n end def *(n) utiliser_nombre n @resultat_obtenu = @resultat_obtenu * n end def /(n) utiliser_nombre n @resultat_obtenu = @resultat_obtenu / n end end