Commit edab8c09 authored by Fardale's avatar Fardale

flip extends Jeu + modif mineur boum

parent 6d436562
......@@ -111,30 +111,9 @@ class Demineur extends Jeu[MonBouton] {
y = ran.nextInt(tailleY)
}
boutons(x)(y).setContenu(9)
if (x != 0) {
if (!boutons(x-1)(y).mines) { boutons(x-1)(y).incrContenu}
}
if (x != (tailleX-1)) {
if (!boutons(x+1)(y).mines) { boutons(x+1)(y).incrContenu}
}
if (y != 0) {
if (!boutons(x)(y-1).mines) { boutons(x)(y-1).incrContenu}
}
if (y != (tailleY-1)) {
if (!boutons(x)(y+1).mines) { boutons(x)(y+1).incrContenu}
}
if (x != 0 && y != 0) {
if (!boutons(x-1)(y-1).mines) { boutons(x-1)(y-1).incrContenu}
}
if (x != 0 && y != (tailleY-1)) {
if (!boutons(x-1)(y+1).mines) { boutons(x-1)(y+1).incrContenu}
}
if (x != (tailleX-1) && y != 0) {
if (!boutons(x+1)(y-1).mines) { boutons(x+1)(y-1).incrContenu}
}
if (x != (tailleX-1) && y != (tailleY-1)) {
if (!boutons(x+1)(y+1).mines) { boutons(x+1)(y+1).incrContenu}
}
var voisin = voisinEtendu(x,y):::(Nil)
for((vx,vy) <- voisin){
if(!boutons(vx)(vy).mines) { boutons(vx)(vy).incrContenu }}
}
}
......@@ -144,40 +123,19 @@ class Demineur extends Jeu[MonBouton] {
if(premierCoup){premierCoup = false}
var voisin = (voisinEtendu(x,y):::(Nil))
for(plop <- voisin)
{var (vx, vy) = plop
var voisin = voisinEtendu(x,y):::(Nil)
for((vx,vy) <- voisin){
if(boutons(vx)(vy).estLibre && !boutons(vx)(vy).mines){clique_action(vx,vy)}}
}
}
def devoile (x: Int, y: Int) = {
var perdu = false
if (x > 0) {
if(boutons(x-1)(y).estLibre){perdu = perdu || clique_action(x-1,y)}
if(y > 0){
if(boutons(x-1)(y-1).estLibre){perdu = perdu || clique_action(x-1,y-1)}
}
if(y < tailleY-1){
if(boutons(x-1)(y+1).estLibre){perdu = perdu || clique_action(x-1,y+1)}
}
}
if (x < tailleX-1) {
if(boutons(x+1)(y).estLibre){perdu = perdu || clique_action(x+1,y)}
if(y > 0){
if(boutons(x+1)(y-1).estLibre){perdu = perdu || clique_action(x+1,y-1)}
}
if(y < tailleY-1){
if(boutons(x+1)(y+1).estLibre){perdu = perdu || clique_action(x+1,y+1)}
}
}
if(y>0){
if(boutons(x)(y-1).estLibre){perdu = perdu || clique_action(x,y-1)}
}
if(y<tailleY-1){
if(boutons(x)(y+1).estLibre){perdu = perdu || clique_action(x,y+1)}
}
perdu
var perdu = false
var voisin = voisinEtendu(x,y):::(Nil)
for((vx,vy) <- voisin){
if(boutons(vx)(vy).estLibre){perdu = perdu || clique_action(vx,vy)}}
perdu
}
// Définit les conséquences d'un clic sur un bouton.
......
......@@ -2,16 +2,16 @@ import scala.util.Random
import Array._
import java.awt.Color
class Flip {
class Flip extends Jeu[MonBouton] {
// Cotés du terrain.
private var tailleX = 5
private var tailleY = 5
tailleX = 5
tailleY = 5
def getTailleX = tailleX
def getTailleY = tailleY
// Matrice des boutons.
var boutons = ofDim[MonBouton](tailleX,tailleY)
override protected var boutons = ofDim[MonBouton](tailleX,tailleY)
def getBoutons(x: Int, y: Int) = boutons(x)(y)
......@@ -36,37 +36,30 @@ class Flip {
// Génération d'une grille de départ aléatoire.
def initialise = {
/* !!! */ for (i <- 0 to (tailleX-1)) {
for (j <- 0 to (tailleY-1)) {
boutons(i)(j) = new MonBouton(i,j)
}
}
map_init((i,j) => new MonBouton(i,j), boutons)
var x = Random.nextBoolean
/* !!! */ for (i <- 0 to (tailleX-1)) {
for (j <- 0 to (tailleY-1)) {
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
if (x) { boutons(i)(j).chgLibre }
fixCouleur(i,j)
x = Random.nextBoolean
}
}
x = Random.nextBoolean}
map_apply(f, boutons)
}
// Génération aléatoire avec graine
def initialise(n: Int) = {
/* !!! */ for (i <- 0 to (tailleX-1)) {
for (j <- 0 to (tailleY-1)) {
boutons(i)(j) = new MonBouton(i,j)
}
}
map_init((i,j) => new MonBouton(i,j), boutons)
var ran = new Random(n)
var x = ran.nextBoolean
/* !!! */ for (i <- 0 to (tailleX-1)) {
for (j <- 0 to (tailleY-1)) {
if (x) { boutons(i)(j).chgLibre }
fixCouleur(i,j)
x = Random.nextBoolean
}
}
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
if (x) { boutons(i)(j).chgLibre }
fixCouleur(i,j)
x = Random.nextBoolean}
map_apply(f, boutons)
}
// Modification de la couleur d'un bouton.
......@@ -78,21 +71,20 @@ class Flip {
// Renvoire true si toutes les cases du terrain sont blanches
def victoire = {
var res = true
/* !!! */ for (i <- 0 to (tailleX-1)) {
for (j <- 0 to (tailleY-1)) {
res = (res && boutons(i)(j).estLibre)
}
def f (b : MonBouton) = {
var i = b.getTheX
var j = b.getTheY
res = (res && boutons(i)(j).estLibre)
}
map_apply(f, boutons)
res
}
// Conséquence du clic d'un bouton.
def clique_action(i: Int, j:Int) : Boolean = {
chgBouton(i,j)
if (i > 0) { chgBouton(i-1,j) }
if (i < tailleX-1) { chgBouton(i+1,j) }
if (j > 0) { chgBouton(i,j-1) }
if (j < tailleY-1) { chgBouton(i,j+1) }
var voisin = voisinDirect(i,j)
for((x,y) <- voisin){chgBouton(x,y)}
false
}
......
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