Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Fardale
Prog2
Commits
8c5d6665
Commit
8c5d6665
authored
Apr 06, 2015
by
William Babonnaud
Browse files
Démineur encore... + test2 devient main
parent
35ac5cdb
Changes
3
Hide whitespace changes
Inline
Side-by-side
boum.scala
View file @
8c5d6665
...
...
@@ -137,15 +137,14 @@ class Demineur extends Jeu[MonBouton] {
def
devoile
(
x
:
Int
,
y
:
Int
)
=
{
var
perdu
=
false
var
nb
=
boutons
(
x
)(
y
).
getContenu
var
voisin
=
voisinEtendu
(
x
,
y
):::(
Nil
)
// Si une mine autour n'a pas été trouvée, on n'autorise pas le dévoilement.
/* for((vx,vy) <- voisin) {
if (boutons(vx)(vy).mines && !boutons(vx)(vy).possedeDrapeau) {
perdu = true
}
} */
// 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
}
}
if
(
perdu
)
{
false
}
else
{
if
(
nb
!=
0
)
{
false
}
else
{
for
((
vx
,
vy
)
<-
voisin
){
if
(
boutons
(
vx
)(
vy
).
estLibre
){
perdu
=
perdu
||
clique_action_gauche
(
vx
,
vy
)}}
perdu
...
...
main.scala
100755 → 100644
View file @
8c5d6665
...
...
@@ -5,19 +5,27 @@ import java.awt.{Color, Graphics2D}
import
javax.swing.ImageIcon
object
CercleInvocation
extends
SimpleSwingApplication
{
def
top
=
new
MainFrame
{
// Valeurs et variables.
private
var
jeu
=
new
Demineur
def
top
=
new
MainFrame
{
cela
=>
// On empêche le redimensionnement
resizable
=
false
// Valeurs de choix de jeu :
// 1 : Démineur
// 2 : Flip
// 3 : Unruly
private
var
choix_de_jeu
=
1
private
var
jeu
:
Jeu
[
MonBouton
]
=
new
Demineur
// Convertisseur sécurisé
private
def
string_to_int
(
s
:
String
)
=
{
try
{
s
.
toInt
}
catch
{
case
e
:
Exception
=>
0
case
e
:
Exception
=>
-
1
}
}
// Boutons pour la sélection de la difficulté
private
val
but_fac
=
new
RadioButton
(
"Facile"
)
private
val
but_moy
=
new
RadioButton
(
"Moyen"
)
private
val
but_dur
=
new
RadioButton
(
"Difficile"
)
...
...
@@ -25,39 +33,46 @@ object CercleInvocation extends SimpleSwingApplication {
private
val
mutex
=
new
ButtonGroup
(
but_fac
,
but_moy
,
but_dur
,
but_per
)
mutex
.
select
(
but_fac
)
// Création d'un nouveau jeu
private
def
new_game
=
{
jeu
=
new
Demineur
// Boutons pour la sélection du jeu
private
val
tt_dem
=
new
RadioButton
(
"Démineur"
)
private
val
tt_fli
=
new
RadioButton
(
"Flip"
)
private
val
tt_unr
=
new
RadioButton
(
"Unruly"
)
private
val
touslesjeux
=
new
ButtonGroup
(
tt_dem
,
tt_fli
,
tt_unr
)
touslesjeux
.
select
(
tt_unr
)
// Base de créaition de nouveau jeu
private
def
nouveau
=
{
choix_de_jeu
match
{
case
1
=>
jeu
=
new
Demineur
case
2
=>
jeu
=
new
Flip
case
3
=>
jeu
=
new
Unruly
}
mutex
.
selected
.
get
match
{
case
`but_fac`
=>
case
`but_moy`
=>
jeu
.
reparametrage
(
16
,
16
,
40
)
case
`but_dur`
=>
jeu
.
reparametrage
(
16
,
16
,
99
)
case
`but_per`
=>
val
r_lig
=
Dialog
.
showInput
(
contents
.
head
,
"Entrez le nombre de lignes :"
,
title
=
"Génération personnalisée"
,
initial
=
"9"
,
icon
=
new
ImageIcon
(
getClass
.
getResource
(
"case_un.png"
)))
val
r_col
=
Dialog
.
showInput
(
contents
.
head
,
"Entrez le nombre de colonnes :"
,
title
=
"Génération personnalisée"
,
initial
=
"9"
,
icon
=
new
ImageIcon
(
getClass
.
getResource
(
"case_deux.png"
)))
val
r_mine
=
Dialog
.
showInput
(
contents
.
head
,
"Entrez le nombre de mines :"
,
title
=
"Génération personnalisée"
,
initial
=
"10"
,
icon
=
new
ImageIcon
(
getClass
.
getResource
(
"case_trois.png"
)))
var
li
=
9
var
co
=
9
var
nm
=
10
r_lig
match
{
case
Some
(
s
)
=>
if
(
string_to_int
(
s
)
!=
0
)
{
li
=
string_to_int
(
s
)
}
case
None
=>
}
r_col
match
{
case
Some
(
s
)
=>
if
(
string_to_int
(
s
)
!=
0
)
{
co
=
string_to_int
(
s
)
}
case
None
=>
case
`but_moy`
=>
choix_de_jeu
match
{
case
1
=>
jeu
.
reparametrage
(
16
,
16
,
40
)
case
2
=>
jeu
.
reparametrage
(
7
,
7
)
case
3
=>
jeu
.
reparametrage
(
10
,
10
)
}
case
`but_dur`
=>
choix_de_jeu
match
{
case
1
=>
jeu
.
reparametrage
(
16
,
16
,
99
)
case
2
=>
jeu
.
reparametrage
(
9
,
9
)
case
3
=>
jeu
.
reparametrage
(
14
,
14
)
}
r_mine
match
{
case
Some
(
s
)
=>
if
(
string_to_int
(
s
)
!=
0
)
{
nm
=
string_to_int
(
s
)
}
case
None
=>
case
`but_per`
=>
choix_de_jeu
match
{
case
1
=>
jeu
.
reparametrage
(
diff_fr
.
li
,
diff_fr
.
co
,
diff_fr
.
aut
)
case
2
=>
jeu
.
reparametrage
(
diff_fr
.
li
,
diff_fr
.
co
)
case
3
=>
jeu
.
reparametrage
(
2
*(
diff_fr
.
li
/
2
),
2
*(
diff_fr
.
co
/
2
))
}
jeu
.
reparametrage
(
li
,
co
,
nm
)
}
}
}
// Création d'un nouveau jeu
private
def
new_game
=
{
nouveau
jeu
.
initialise
contents
=
genContents
listen
...
...
@@ -85,7 +100,6 @@ object CercleInvocation extends SimpleSwingApplication {
// Redémarrage du jeu
private
def
redemarrage
=
{
jeu
.
redemarre
jeu
.
resetPremierCoup
contents
=
genContents
listen
}
...
...
@@ -96,49 +110,79 @@ object CercleInvocation extends SimpleSwingApplication {
title
=
"Génération paramétrée"
,
initial
=
"12"
,
icon
=
new
ImageIcon
(
getClass
.
getResource
(
"case_mine.png"
)))
r
match
{
case
Some
(
s
)
=>
jeu
=
new
Demineur
mutex
.
selected
.
get
match
{
case
`but_fac`
=>
case
`but_moy`
=>
jeu
.
reparametrage
(
16
,
16
,
40
)
case
`but_dur`
=>
jeu
.
reparametrage
(
16
,
16
,
99
)
case
`but_per`
=>
val
r_lig
=
Dialog
.
showInput
(
contents
.
head
,
"Entrez le nombre de lignes :"
,
title
=
"Génération personnalisée"
,
initial
=
"9"
,
icon
=
new
ImageIcon
(
getClass
.
getResource
(
"case_un.png"
)))
val
r_col
=
Dialog
.
showInput
(
contents
.
head
,
"Entrez le nombre de colonnes :"
,
title
=
"Génération personnalisée"
,
initial
=
"9"
,
icon
=
new
ImageIcon
(
getClass
.
getResource
(
"case_deux.png"
)))
val
r_mine
=
Dialog
.
showInput
(
contents
.
head
,
"Entrez le nombre de mines :"
,
title
=
"Génération personnalisée"
,
initial
=
"10"
,
icon
=
new
ImageIcon
(
getClass
.
getResource
(
"case_trois.png"
)))
var
li
=
9
var
co
=
9
var
nm
=
10
r_lig
match
{
case
Some
(
s
)
=>
if
(
string_to_int
(
s
)
>
0
)
{
li
=
string_to_int
(
s
)
}
case
None
=>
}
r_col
match
{
case
Some
(
s
)
=>
if
(
string_to_int
(
s
)
>
0
)
{
co
=
string_to_int
(
s
)
}
case
None
=>
}
r_mine
match
{
case
Some
(
s
)
=>
if
(
string_to_int
(
s
)
>
0
)
{
nm
=
string_to_int
(
s
)
}
case
None
=>
}
jeu
.
reparametrage
(
li
,
co
,
nm
)
}
case
Some
(
s
)
=>
nouveau
jeu
.
initialise
(
string_to_int
(
s
))
contents
=
genContents
listen
listen
case
None
=>
}
}
object
text_ligne
extends
TextField
{
columns
=
5
}
object
text_colonne
extends
TextField
{
columns
=
5
}
object
text_autre
extends
TextField
{
columns
=
5
}
def
create_panel
()
=
{
if
(
choix_de_jeu
==
1
)
{
new
GridPanel
(
3
,
2
)
{
contents
+=
new
Label
(
"Nombre de lignes : "
)
contents
+=
text_ligne
contents
+=
new
Label
(
" Nombre de colonnes : "
)
contents
+=
text_colonne
contents
+=
new
Label
(
"Nombre de mines : "
)
contents
+=
text_autre
border
=
Swing
.
EmptyBorder
(
10
,
20
,
10
,
20
)
}
}
else
{
new
GridPanel
(
2
,
2
)
{
contents
+=
new
Label
(
"Nombre de lignes : "
)
contents
+=
text_ligne
contents
+=
new
Label
(
" Nombre de colonnes : "
)
contents
+=
text_colonne
border
=
Swing
.
EmptyBorder
(
10
,
20
,
10
,
20
)
}
}
}
private
var
diff_fr
=
new
Frame
{
ceci
=>
title
=
"Difficulté personnalisée"
var
li
=
0
var
co
=
0
var
aut
=
0
val
sortie
=
new
FlowPanel
{
contents
+=
new
Button
(
Action
(
"Valider"
)
{
if
(
string_to_int
(
text_ligne
.
text
)
>
0
)
{
li
=
string_to_int
(
text_ligne
.
text
)
}
else
{
li
=
cela
.
jeu
.
getValeurDefaut
(
0
)
}
if
(
string_to_int
(
text_colonne
.
text
)
>
0
)
{
co
=
string_to_int
(
text_colonne
.
text
)
}
else
{
co
=
cela
.
jeu
.
getValeurDefaut
(
1
)
}
if
(
cela
.
choix_de_jeu
==
1
)
{
if
(
string_to_int
(
text_autre
.
text
)
>
0
)
{
aut
=
string_to_int
(
text_autre
.
text
)
}
else
{
aut
=
cela
.
jeu
.
getValeurDefaut
(
2
)
}
}
cela
.
choix_de_jeu
match
{
case
1
=>
cela
.
jeu
=
new
Demineur
;
cela
.
jeu
.
reparametrage
(
li
,
co
,
aut
)
case
2
=>
cela
.
jeu
=
new
Flip
;
cela
.
jeu
.
reparametrage
(
li
,
co
)
case
3
=>
cela
.
jeu
=
new
Unruly
;
cela
.
jeu
.
reparametrage
(
2
*(
li
/
2
),
2
*(
co
/
2
))
}
cela
.
jeu
.
initialise
cela
.
contents
=
genContents
cela
.
listen
ceci
.
dispose
()
})
}
def
regenere
=
{
contents
=
new
BoxPanel
(
Orientation
.
Vertical
)
{
contents
+=
create_panel
()
contents
+=
sortie
}
}
}
// Création d'un jeu initial.
jeu
.
initialise
// Elément de décor.
title
=
"The Great Satanist Programming Project"
title
=
"The Great Satanist Programming Project
Test
"
// Barre de menu.
menuBar
=
new
MenuBar
{
...
...
@@ -159,6 +203,9 @@ object CercleInvocation extends SimpleSwingApplication {
sys
.
exit
(
0
)
})
}
contents
+=
new
Menu
(
"Autres jeux"
)
{
contents
++=
touslesjeux
.
buttons
}
}
//contents += new Label("Il te reste 10 mines !")
...
...
@@ -169,29 +216,73 @@ object CercleInvocation extends SimpleSwingApplication {
// Activation des surveillances de boutons.
listen
listenTo
(
but_fac
)
listenTo
(
but_moy
)
listenTo
(
but_dur
)
listenTo
(
but_per
)
listenTo
(
tt_dem
)
listenTo
(
tt_fli
)
listenTo
(
tt_unr
)
// Réaction aux évènements.
reactions
+=
{
case
ButtonClicked
(
component
:
MonBouton
)
=>
var
bo
=
jeu
.
clique_action_gauche
(
component
.
getTheX
,
component
.
getTheY
)
if
(
bo
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Désolé, vous avez perdu !"
,
"Boum !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_mine.png"
)))
redemarrage
}
else
{
if
(
jeu
.
victoire
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Victoire !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_drapeau.png"
)))
new_game
}
}
case
(
e
:
MouseEvent
)
=>
if
(
e
.
peer
.
getButton
()
==
java
.
awt
.
event
.
MouseEvent
.
BUTTON3
)
{
var
bo
=
jeu
.
clique_action_droit
(
e
.
peer
.
getComponent
.
getY
/
50
,
e
.
peer
.
getComponent
.
getX
/
50
)
case
(
e
:
MouseEvent
)
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
)
{
var
bo
=
jeu
.
clique_action_gauche
(
i
,
j
)
if
(
bo
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Désolé, vous avez perdu !"
,
"Boum !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_mine.png"
)))
redemarrage
}
else
{
if
(
jeu
.
victoire
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Victoire !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_drapeau.png"
)))
new_game
}
}
}
if
(
choix_de_jeu
==
2
)
{
var
bo
=
jeu
.
clique_action_gauche
(
i
,
j
)
if
(
jeu
.
victoire
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Victoire !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_drapeau.png"
)))
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_drapeau.png"
)))
new_game
}
}
}
if
(
choix_de_jeu
==
3
)
{
if
(
jeu
.
clique_action_gauche
(
i
,
j
))
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Bravo !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"blanc_inchangeable.png"
)))
new_game
}
}
case
(
e
:
MouseEvent
)
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
)
{
var
bo
=
jeu
.
clique_action_droit
(
i
,
j
)
if
(
bo
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Victoire !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_drapeau.png"
)))
new_game
}
}
if
(
choix_de_jeu
==
3
)
{
if
(
jeu
.
clique_action_droit
(
i
,
j
))
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Bravo !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"noir_inchangeable.png"
)))
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
case
ButtonClicked
(
comp
)
if
(
comp
==
tt_fli
)
=>
choix_de_jeu
=
2
;
new_game
case
ButtonClicked
(
comp
)
if
(
comp
==
tt_unr
)
=>
choix_de_jeu
=
3
;
new_game
}
}
}
test2.scala
deleted
100644 → 0
View file @
35ac5cdb
import
swing._
import
event._
import
Array._
import
java.awt.
{
Color
,
Graphics2D
}
import
javax.swing.ImageIcon
object
CercleInvocationTropMieux
extends
SimpleSwingApplication
{
def
top
=
new
MainFrame
{
cela
=>
// On empêche le redimensionnement
resizable
=
false
// Valeurs de choix de jeu :
// 1 : Démineur
// 2 : Flip
// 3 : Unruly
private
var
choix_de_jeu
=
3
private
var
jeu
:
Jeu
[
MonBouton
]
=
new
Unruly
// Convertisseur sécurisé
private
def
string_to_int
(
s
:
String
)
=
{
try
{
s
.
toInt
}
catch
{
case
e
:
Exception
=>
-
1
}
}
// Boutons pour la sélection de la difficulté
private
val
but_fac
=
new
RadioButton
(
"Facile"
)
private
val
but_moy
=
new
RadioButton
(
"Moyen"
)
private
val
but_dur
=
new
RadioButton
(
"Difficile"
)
private
val
but_per
=
new
RadioButton
(
"Personnalisé"
)
private
val
mutex
=
new
ButtonGroup
(
but_fac
,
but_moy
,
but_dur
,
but_per
)
mutex
.
select
(
but_fac
)
// Boutons pour la sélection du jeu
private
val
tt_dem
=
new
RadioButton
(
"Démineur"
)
private
val
tt_fli
=
new
RadioButton
(
"Flip"
)
private
val
tt_unr
=
new
RadioButton
(
"Unruly"
)
private
val
touslesjeux
=
new
ButtonGroup
(
tt_dem
,
tt_fli
,
tt_unr
)
touslesjeux
.
select
(
tt_unr
)
// Base de créaition de nouveau jeu
private
def
nouveau
=
{
choix_de_jeu
match
{
case
1
=>
jeu
=
new
Demineur
case
2
=>
jeu
=
new
Flip
case
3
=>
jeu
=
new
Unruly
}
mutex
.
selected
.
get
match
{
case
`but_fac`
=>
case
`but_moy`
=>
choix_de_jeu
match
{
case
1
=>
jeu
.
reparametrage
(
16
,
16
,
40
)
case
2
=>
jeu
.
reparametrage
(
7
,
7
)
case
3
=>
jeu
.
reparametrage
(
10
,
10
)
}
case
`but_dur`
=>
choix_de_jeu
match
{
case
1
=>
jeu
.
reparametrage
(
16
,
16
,
99
)
case
2
=>
jeu
.
reparametrage
(
9
,
9
)
case
3
=>
jeu
.
reparametrage
(
14
,
14
)
}
case
`but_per`
=>
choix_de_jeu
match
{
case
1
=>
jeu
.
reparametrage
(
diff_fr
.
li
,
diff_fr
.
co
,
diff_fr
.
aut
)
case
2
=>
jeu
.
reparametrage
(
diff_fr
.
li
,
diff_fr
.
co
)
case
3
=>
jeu
.
reparametrage
(
2
*(
diff_fr
.
li
/
2
),
2
*(
diff_fr
.
co
/
2
))
}
}
}
// Création d'un nouveau jeu
private
def
new_game
=
{
nouveau
jeu
.
initialise
contents
=
genContents
listen
}
// Activation des surveillances de boutons.
private
def
listen
=
for
(
i
<-
0
to
(
jeu
.
getTailleX
-
1
))
{
for
(
j
<-
0
to
(
jeu
.
getTailleY
-
1
))
{
listenTo
(
jeu
.
getBoutons
(
i
,
j
))
listenTo
(
jeu
.
getBoutons
(
i
,
j
).
mouse
.
clicks
)
}
}
// Genesation de la grille
private
def
genContents
=
new
GridPanel
(
jeu
.
getTailleX
,
jeu
.
getTailleY
)
{
for
(
i
<-
0
to
(
jeu
.
getTailleX
-
1
))
{
for
(
j
<-
0
to
(
jeu
.
getTailleY
-
1
))
{
contents
+=
jeu
.
getBoutons
(
i
,
j
)
}
}
}
// Redémarrage du jeu
private
def
redemarrage
=
{
jeu
.
redemarre
contents
=
genContents
listen
}
// Génération à partir d'une graine aléatoire
private
def
genere_a_parametre
=
{
val
r
=
Dialog
.
showInput
(
contents
.
head
,
"Entrez une graine de génération :"
,
title
=
"Génération paramétrée"
,
initial
=
"12"
,
icon
=
new
ImageIcon
(
getClass
.
getResource
(
"case_mine.png"
)))
r
match
{
case
Some
(
s
)
=>
nouveau
jeu
.
initialise
(
string_to_int
(
s
))
contents
=
genContents
listen
case
None
=>
}
}
object
text_ligne
extends
TextField
{
columns
=
5
}
object
text_colonne
extends
TextField
{
columns
=
5
}
object
text_autre
extends
TextField
{
columns
=
5
}
def
create_panel
()
=
{
if
(
choix_de_jeu
==
1
)
{
new
GridPanel
(
3
,
2
)
{
contents
+=
new
Label
(
"Nombre de lignes : "
)
contents
+=
text_ligne
contents
+=
new
Label
(
" Nombre de colonnes : "
)
contents
+=
text_colonne
contents
+=
new
Label
(
"Nombre de mines : "
)
contents
+=
text_autre
border
=
Swing
.
EmptyBorder
(
10
,
20
,
10
,
20
)
}
}
else
{
new
GridPanel
(
2
,
2
)
{
contents
+=
new
Label
(
"Nombre de lignes : "
)
contents
+=
text_ligne
contents
+=
new
Label
(
" Nombre de colonnes : "
)
contents
+=
text_colonne
border
=
Swing
.
EmptyBorder
(
10
,
20
,
10
,
20
)
}
}
}
private
var
diff_fr
=
new
Frame
{
ceci
=>
title
=
"Difficulté personnalisée"
var
li
=
0
var
co
=
0
var
aut
=
0
val
sortie
=
new
FlowPanel
{
contents
+=
new
Button
(
Action
(
"Valider"
)
{
if
(
string_to_int
(
text_ligne
.
text
)
>
0
)
{
li
=
string_to_int
(
text_ligne
.
text
)
}
else
{
li
=
cela
.
jeu
.
getValeurDefaut
(
0
)
}
if
(
string_to_int
(
text_colonne
.
text
)
>
0
)
{
co
=
string_to_int
(
text_colonne
.
text
)
}
else
{
co
=
cela
.
jeu
.
getValeurDefaut
(
1
)
}
if
(
cela
.
choix_de_jeu
==
1
)
{
if
(
string_to_int
(
text_autre
.
text
)
>
0
)
{
aut
=
string_to_int
(
text_autre
.
text
)
}
else
{
aut
=
cela
.
jeu
.
getValeurDefaut
(
2
)
}
}
cela
.
choix_de_jeu
match
{
case
1
=>
cela
.
jeu
=
new
Demineur
;
cela
.
jeu
.
reparametrage
(
li
,
co
,
aut
)
case
2
=>
cela
.
jeu
=
new
Flip
;
cela
.
jeu
.
reparametrage
(
li
,
co
)
case
3
=>
cela
.
jeu
=
new
Unruly
;
cela
.
jeu
.
reparametrage
(
2
*(
li
/
2
),
2
*(
co
/
2
))
}
cela
.
jeu
.
initialise
cela
.
contents
=
genContents
cela
.
listen
ceci
.
dispose
()
})
}
def
regenere
=
{
contents
=
new
BoxPanel
(
Orientation
.
Vertical
)
{
contents
+=
create_panel
()
contents
+=
sortie
}
}
}
// Création d'un jeu initial.
jeu
.
initialise
// Elément de décor.
title
=
"The Great Satanist Programming Project Test"
// Barre de menu.
menuBar
=
new
MenuBar
{
contents
+=
new
Menu
(
"Jeu"
)
{
contents
+=
new
MenuItem
(
Action
(
"Nouveau jeu"
)
{
new_game
})
contents
+=
new
MenuItem
(
Action
(
"Redémarrer"
)
{
redemarrage
})
contents
+=
new
MenuItem
(
Action
(
"Génération paramétrée..."
)
{
genere_a_parametre
})
contents
+=
new
Menu
(
"Difficulté"
)
{
contents
++=
mutex
.
buttons
}
contents
+=
new
MenuItem
(
Action
(
"Sortir"
){
sys
.
exit
(
0
)
})
}
contents
+=
new
Menu
(
"Autres jeux"
)
{
contents
++=
touslesjeux
.
buttons
}
}
//contents += new Label("Il te reste 10 mines !")
// Elements de la fenêtre.
contents
=
genContents
// Activation des surveillances de boutons.
listen
listenTo
(
but_fac
)
listenTo
(
but_moy
)
listenTo
(
but_dur
)
listenTo
(
but_per
)
listenTo
(
tt_dem
)
listenTo
(
tt_fli
)
listenTo
(
tt_unr
)
// Réaction aux évènements.
reactions
+=
{
case
(
e
:
MouseEvent
)
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
)
{
var
bo
=
jeu
.
clique_action_gauche
(
i
,
j
)
if
(
bo
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Désolé, vous avez perdu !"
,
"Boum !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_mine.png"
)))
redemarrage
}
else
{
if
(
jeu
.
victoire
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Victoire !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_drapeau.png"
)))
new_game
}
}
}
if
(
choix_de_jeu
==
2
)
{
var
bo
=
jeu
.
clique_action_gauche
(
i
,
j
)
if
(
jeu
.
victoire
)
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Victoire !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"case_drapeau.png"
)))
new_game
}
}
if
(
choix_de_jeu
==
3
)
{
if
(
jeu
.
clique_action_gauche
(
i
,
j
))
{
Dialog
.
showMessage
(
contents
.
head
,
"Félicitations, vous avez gagné !"
,
"Bravo !!!"
,
Dialog
.
Message
.
Info
,
new
ImageIcon
(
getClass
.
getResource
(
"blanc_inchangeable.png"
)))
new_game
}
}
case
(
e
:
MouseEvent
)
if
(
e
.
peer
.
getButton
()
==
java
.
awt
.
event
.
MouseEvent
.
BUTTON3
)
=>
var
i
=
(
e
.
peer
.
getComponent
.
getY
)/
50