Commit 538deacd authored by Fardale's avatar Fardale

end

parent bf0feb0e
......@@ -3,7 +3,7 @@ import Array._
import javax.swing.ImageIcon
import scala.math._
class Demineur extends Jeu[BoumBouton] {
class Demineur extends Jeu[MonBouton] {
valeur_defaut = Array(9,9,10)
// Taille du champ de mine. Par défaut, réglé en "Facile".
......@@ -32,7 +32,7 @@ class Demineur extends Jeu[BoumBouton] {
// private var champ = ofDim[Int](tailleX,tailleY)
// Matrice des boutons associés aux cases (il me semble plus pertinent de l'inclure dans le jeu).
override protected var boutons = ofDim[BoumBouton](tailleX,tailleY)
override protected var boutons = ofDim[MonBouton](tailleX,tailleY)
// Réinitialise les paramètres ci-dessus en cas de changement de difficulté.
def reparametrage (x: Int, y: Int, n: Int) = {
......@@ -40,7 +40,7 @@ class Demineur extends Jeu[BoumBouton] {
tailleY = y
nb_mines = n
c_restantes = tailleX*tailleY - nb_mines
boutons = ofDim[BoumBouton](tailleX, tailleY)
boutons = ofDim[MonBouton](tailleX, tailleY)
}
// On n'aura normalement pas à utiliser cette fonction, mais elle doit exister
......@@ -48,6 +48,7 @@ class Demineur extends Jeu[BoumBouton] {
// Focntion de redémarrage
def redemarre() = {
premierCoup = true
for (i <- 0 to (tailleX-1)) {
for (j <- 0 to (tailleY-1)) {
boutons(i)(j).reset
......@@ -62,7 +63,7 @@ class Demineur extends Jeu[BoumBouton] {
// (Re)crée un champ de boutons sans toucher aux valeurs
def creation_boutons = {
map_init((i,j) => new BoumBouton(i,j), boutons)
map_init((i,j) => new MonBouton(i,j), boutons)
}
// Initialisation basique d'un champ de mine.
......@@ -129,7 +130,7 @@ class Demineur extends Jeu[BoumBouton] {
if(premierCoup){premierCoup = false}
var voisin = voisinEtendu(x,y):::(Nil)
var voisin = voisinEtendu(x,y)
for((vx,vy) <- voisin){
if(boutons(vx)(vy).estLibre && !boutons(vx)(vy).mines){clique_action_gauche(vx,vy)}}
}
......@@ -138,7 +139,7 @@ class Demineur extends Jeu[BoumBouton] {
def devoile (x: Int, y: Int) = {
var perdu = false
var nb = boutons(x)(y).getContenu
var voisin = voisinEtendu(x,y):::(Nil)
var voisin = voisinEtendu(x,y)
// Si unn drapeau n'a pas été posé, on n'autorise pas le dévoilement.
for((vx,vy) <- voisin) {
if (boutons(vx)(vy).possedeDrapeau) { nb -= 1 }
......
......@@ -2,7 +2,7 @@ import swing._
import java.awt.Color
import javax.swing.ImageIcon
abstract class MonBouton(protected val x : Int, protected val y : Int) extends Button {
class MonBouton(protected val x : Int, protected val y : Int) extends Button {
preferredSize = new Dimension(50, 50)
borderPainted = true
......@@ -15,10 +15,6 @@ abstract class MonBouton(protected val x : Int, protected val y : Int) extends B
enabled = en
disabledIcon = im
}
}
class BoumBouton(protected val x1 : Int, protected val y1 : Int) extends MonBouton(x1,y1) {
// Gestion des éléments du Démineur
private var contenu = 0 // 0-8 nbre mines, 9 mine
......@@ -40,11 +36,9 @@ class BoumBouton(protected val x1 : Int, protected val y1 : Int) extends MonBout
def reset =
libre = true
drapeau = false
}
class ColoredBouton(protected val x1 : Int, protected val y1 : Int) extends MonBouton(x1,y1) {
// Gestion de la couleur du bouton
// Gestion de la couleur du bouton
private var couleur = Color.gray
private var colore = false
......
......@@ -2,7 +2,7 @@ import scala.util.Random
import Array._
import java.awt.Color
class Flip extends Jeu[ColoredBouton] {
class Flip extends Jeu[MonBouton] {
valeur_defaut = Array(5,5)
// Cotés du terrain.
......@@ -10,7 +10,7 @@ class Flip extends Jeu[ColoredBouton] {
tailleY = valeur_defaut(1)
// Matrice des boutons.
override protected var boutons = ofDim[ColoredBouton](tailleX,tailleY)
override protected var boutons = ofDim[MonBouton](tailleX,tailleY)
// Sauvegarde nécessaire pour le redémarrage
private var sauvegardeMat = ofDim[Color](tailleX,tailleY)
......@@ -19,7 +19,7 @@ class Flip extends Jeu[ColoredBouton] {
def reparametrage(x: Int, y: Int) = {
tailleX = x
tailleY = y
boutons = ofDim[ColoredBouton](tailleX,tailleY)
boutons = ofDim[MonBouton](tailleX,tailleY)
sauvegardeMat = ofDim[Color](tailleX,tailleY)
}
......@@ -35,9 +35,9 @@ class Flip extends Jeu[ColoredBouton] {
// Génération d'une grille de départ aléatoire.
def initialise() = {
map_init((i,j) => new ColoredBouton(i,j), boutons)
map_init((i,j) => new MonBouton(i,j), boutons)
var x = Random.nextBoolean
def f (b: ColoredBouton) = {
def f (b: MonBouton) = {
var i = b.getTheX
var j = b.getTheY
if (x) { boutons(i)(j).active_couleur(Color.black) }
......@@ -45,7 +45,7 @@ class Flip extends Jeu[ColoredBouton] {
x = Random.nextBoolean
}
map_apply(f, boutons)
def init (b: ColoredBouton) = {
def init (b: MonBouton) = {
var i = b.getTheX
var j = b.getTheY
sauvegardeMat(i)(j) = boutons(i)(j).getCouleur
......@@ -55,17 +55,17 @@ class Flip extends Jeu[ColoredBouton] {
// Génération aléatoire avec graine
def initialise(n: Int) = {
map_init((i,j) => new ColoredBouton(i,j), boutons)
map_init((i,j) => new MonBouton(i,j), boutons)
var ran = new Random(n)
var x = ran.nextBoolean
def f (b : ColoredBouton) = {
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
if (x) { boutons(i)(j).active_couleur(Color.black) }
else { boutons(i)(j).active_couleur(Color.white) }
x = Random.nextBoolean}
map_apply(f, boutons)
def init (b: ColoredBouton) = {
def init (b: MonBouton) = {
var i = b.getTheX
var j = b.getTheY
sauvegardeMat(i)(j) = boutons(i)(j).getCouleur
......@@ -85,7 +85,7 @@ class Flip extends Jeu[ColoredBouton] {
// Renvoire true si toutes les cases du terrain sont blanches
def victoire = {
var res = true
def f (b : ColoredBouton) = {
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
res = (res && boutons(i)(j).estColore(Color.white))
......
......@@ -4,7 +4,7 @@ import Array._
import javax.swing.ImageIcon
import scala.math._
abstract class Jeu[+T<:Button] {
abstract class Jeu[T<:Button] {
// Variables de base
protected var tailleX : Int = 9
protected var tailleY : Int = 9
......
......@@ -227,7 +227,7 @@ object CercleInvocation extends SimpleSwingApplication {
// Réaction aux évènements.
reactions += {
case (e: MouseEvent) if (e.peer.getButton() == java.awt.event.MouseEvent.BUTTON1) =>
case (e: MouseReleased) => if (e.peer.getButton() == java.awt.event.MouseEvent.BUTTON1) {
var i = (e.peer.getComponent.getY)/50
var j = (e.peer.getComponent.getX)/50
if (choix_de_jeu == 1) {
......@@ -259,7 +259,8 @@ object CercleInvocation extends SimpleSwingApplication {
new_game
}
}
case (e: MouseEvent) if (e.peer.getButton() == java.awt.event.MouseEvent.BUTTON3) =>
}
if (e.peer.getButton() == java.awt.event.MouseEvent.BUTTON3) {
var i = (e.peer.getComponent.getY)/50
var j = (e.peer.getComponent.getX)/50
if (choix_de_jeu == 1) {
......@@ -277,6 +278,7 @@ object CercleInvocation extends SimpleSwingApplication {
new_game
}
}
}
case ButtonClicked(comp) if (comp == but_fac) || (comp == but_moy) || (comp == but_dur) => new_game
case ButtonClicked(comp) if comp == but_per => diff_fr.regenere ; diff_fr.open
case ButtonClicked(comp) if (comp == tt_dem) => choix_de_jeu = 1 ; new_game
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment