Commit 16ad1137 authored by William Babonnaud's avatar William Babonnaud

Ajout du fichier "test2" qui lance les trois jeux

parent a59e4bc3
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
}
}
}
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