Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Fardale
Prog2
Commits
16ad1137
Commit
16ad1137
authored
Apr 04, 2015
by
William Babonnaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Ajout du fichier "test2" qui lance les trois jeux
parent
a59e4bc3
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
262 additions
and
0 deletions
+262
-0
test2.scala
test2.scala
+262
-0
No files found.
test2.scala
0 → 100644
View file @
16ad1137
import
swing._
import
event._
import
Array._
import
java.awt.
{
Color
,
Graphics2D
}
import
javax.swing.ImageIcon
object
CercleInvocationTropMieux
extends
SimpleSwingApplication
{
def
top
=
new
MainFrame
{
cela
=>
// 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étaion 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
.
mn
)
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
plop
extends
TextField
{
columns
=
5
}
object
bing
extends
TextField
{
columns
=
5
}
object
grao
extends
TextField
{
columns
=
5
}
private
var
diff_fr
=
new
Frame
{
ceci
=>
title
=
"Difficulté personnalisée"
var
li
=
9
var
co
=
9
var
mn
=
10
def
facile
=
{
li
=
9
;
co
=
9
;
mn
=
10
}
def
moyen
=
{
li
=
16
;
co
=
16
;
mn
=
10
}
def
difficile
=
{
li
=
16
;
co
=
16
;
mn
=
99
}
contents
=
new
BoxPanel
(
Orientation
.
Vertical
)
{
contents
+=
new
GridPanel
(
3
,
2
)
{
contents
+=
new
Label
(
" Nombre de lignes : "
)
contents
+=
plop
contents
+=
new
Label
(
" Nombre de colonnes : "
)
contents
+=
bing
contents
+=
new
Label
(
" Nombre de mines : "
)
contents
+=
grao
border
=
Swing
.
EmptyBorder
(
10
,
20
,
10
,
20
)
}
contents
+=
new
FlowPanel
{
contents
+=
new
Button
(
Action
(
"Valider"
)
{
cela
.
jeu
=
new
Unruly
if
(
string_to_int
(
plop
.
text
)
>
0
)
{
li
=
string_to_int
(
plop
.
text
)
}
if
(
string_to_int
(
bing
.
text
)
>
0
)
{
co
=
string_to_int
(
bing
.
text
)
}
if
(
string_to_int
(
grao
.
text
)
>
0
)
{
mn
=
string_to_int
(
grao
.
text
)
}
cela
.
jeu
.
reparametrage
(
li
,
co
,
mn
)
cela
.
jeu
.
initialise
cela
.
contents
=
genContents
cela
.
listen
ceci
.
dispose
()
})
}
}
}
// 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
)
=>
if
(
choix_de_jeu
==
1
)
{
var
bo
=
jeu
.
clique_action_gauche
(
e
.
peer
.
getComponent
.
getY
/
50
,
e
.
peer
.
getComponent
.
getX
/
50
)
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
(
e
.
peer
.
getComponent
.
getY
/
50
,
e
.
peer
.
getComponent
.
getX
/
50
)
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
(
e
.
peer
.
getComponent
.
getY
/
50
,
e
.
peer
.
getComponent
.
getX
/
50
))
{
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
)
=>
if
(
choix_de_jeu
==
1
)
{
var
bo
=
jeu
.
clique_action_droit
(
e
.
peer
.
getComponent
.
getY
/
50
,
e
.
peer
.
getComponent
.
getX
/
50
)
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
(
e
.
peer
.
getComponent
.
getY
/
50
,
e
.
peer
.
getComponent
.
getX
/
50
))
{
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
.
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
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment