Commit 2d3c1725 authored by Zéfling's avatar Zéfling 🎨
Browse files

+90 niveaux

26/03/2008
parent 792ce969
No preview for this file type
......@@ -55,7 +55,7 @@ namespace Sokoban.Jeu.Affichage
personnage.ImageLocation = (@"Images\perso_gauche.gif");
personnage.Location = new System.Drawing.Point(_x, _y);
personnage.BackColor = Color.FromArgb(0, 0, 0, 0);
personnage.BackColor = Color.Transparent;
personnage.Size = new System.Drawing.Size(_xpas, _ypas);
int nombreCaseX = niveau.GetLength(1);
......
......@@ -38,6 +38,9 @@
this.bt_Recommencer = new System.Windows.Forms.Button();
this.bt_NivSuiv = new System.Windows.Forms.Button();
this.bt_NivPrec = new System.Windows.Forms.Button();
this.lb_TextPrec = new System.Windows.Forms.Label();
this.lb_Rec = new System.Windows.Forms.Label();
this.lb_Suiv = new System.Windows.Forms.Label();
this.gbx_Actu.SuspendLayout();
this.SuspendLayout();
//
......@@ -140,10 +143,43 @@
this.bt_NivPrec.UseVisualStyleBackColor = true;
this.bt_NivPrec.Click += new System.EventHandler(this.bt_NivPrec_Click);
//
// lb_TextPrec
//
this.lb_TextPrec.AutoSize = true;
this.lb_TextPrec.Location = new System.Drawing.Point(146, 234);
this.lb_TextPrec.Name = "lb_TextPrec";
this.lb_TextPrec.Size = new System.Drawing.Size(29, 13);
this.lb_TextPrec.TabIndex = 4;
this.lb_TextPrec.Text = "Préc";
this.lb_TextPrec.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// lb_Rec
//
this.lb_Rec.AutoSize = true;
this.lb_Rec.Location = new System.Drawing.Point(291, 234);
this.lb_Rec.Name = "lb_Rec";
this.lb_Rec.Size = new System.Drawing.Size(44, 13);
this.lb_Rec.TabIndex = 4;
this.lb_Rec.Text = "Courant";
this.lb_Rec.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// lb_Suiv
//
this.lb_Suiv.AutoSize = true;
this.lb_Suiv.Location = new System.Drawing.Point(452, 234);
this.lb_Suiv.Name = "lb_Suiv";
this.lb_Suiv.Size = new System.Drawing.Size(28, 13);
this.lb_Suiv.TabIndex = 4;
this.lb_Suiv.Text = "Suiv";
this.lb_Suiv.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// ecran_NiveauFini
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.lb_Suiv);
this.Controls.Add(this.lb_Rec);
this.Controls.Add(this.lb_TextPrec);
this.Controls.Add(this.bt_Recommencer);
this.Controls.Add(this.bt_NivPrec);
this.Controls.Add(this.bt_NivSuiv);
......@@ -171,5 +207,8 @@
private System.Windows.Forms.Button bt_Recommencer;
private System.Windows.Forms.Button bt_NivSuiv;
private System.Windows.Forms.Button bt_NivPrec;
private System.Windows.Forms.Label lb_TextPrec;
private System.Windows.Forms.Label lb_Rec;
private System.Windows.Forms.Label lb_Suiv;
}
}
......@@ -6,6 +6,7 @@ using System.Data;
using System.Text;
using System.Windows.Forms;
using Sokoban.Jeu.Niveau;
using System.IO;
namespace Sokoban.Jeu.Affichage
{
......@@ -13,6 +14,11 @@ namespace Sokoban.Jeu.Affichage
{
public JeuSokoban jeuSokoban;
private int ligneSuiv;
private int niveauSuiv;
private int lignePrec;
private int niveauPrec;
public ecran_NiveauFini(JeuSokoban jeuSokoban)
{
this.jeuSokoban = jeuSokoban;
......@@ -21,6 +27,7 @@ namespace Sokoban.Jeu.Affichage
InitializeComponent();
// Affichage des infos du joueur
int courant = nivInfo.Temps;
String TimeInString;
int courantMinute = courant / 60000;
......@@ -29,31 +36,75 @@ namespace Sokoban.Jeu.Affichage
TimeInString = String.Format("{0:D2}", courantMinute);
TimeInString += ":" + String.Format("{0:D2}", courantSeconde);
lb_Temps.Text = TimeInString;
lb_Mouvement.Text = String.Format("{0:D4}", nivInfo.Deplacements);
bt_NivPrec.Enabled = false;
// dsactivation de bouton
testNiveau(-1, bt_NivPrec, lb_TextPrec);
testNiveau(0, bt_Recommencer, lb_Rec);
testNiveau(1, bt_NivSuiv, lb_Suiv);
}
private void testNiveau(int i, Button bouton, Label label)
{
int ligne = jeuSokoban.NiveauInfos.jeuLigne;
int niveau = jeuSokoban.NiveauInfos.jeuNiveau + i %10;
niveau = (niveau == 0) ? 10 : niveau;
if (i >= 0)
{
ligne += ((jeuSokoban.NiveauInfos.jeuNiveau + i % 10 == 0) ? 1 : 0);
ligneSuiv = ligne;
niveauSuiv = niveau;
}
else if (i <= 0)
{
ligne += ((jeuSokoban.NiveauInfos.jeuNiveau + i % 10 == 0) ? -1 : 0);
lignePrec = ligne;
niveauPrec = niveau;
}
//Fichier test = new Fichier(jeuSokoban.NiveauInfos.jeuNom, ligne+" - "+niveau+".xsb");
bool isExist = File.Exists(@"Niveaux\" + jeuSokoban.NiveauInfos.jeuNom +
@"\" + (ligne-1) + "-" + (niveau-1) + ".xsb");
bouton.Visible = isExist;
label.Visible = isExist;
if (isExist)
{
String nom;
if (jeuSokoban.NiveauInfos.jeuNom.Equals("defaut"))
{
nom = "Niveau " + ligne + "-" + niveau;
}
else
{
nom = jeuSokoban.NiveauInfos.jeuNom + " " + ligne + "-" + niveau;
}
label.Text = nom;
}
}
private void bt_NivPrec_Click(object sender, EventArgs e)
{
jeuSokoban.EcranSuivant = JeuSokoban.VIDE;
jeuSokoban.activerNiveau(jeuSokoban.NiveauInfos.jeuNom, lignePrec, niveauPrec);
jeuSokoban.ecran(JeuSokoban.NIVEAU);
}
private void bt_Recommencer_Click(object sender, EventArgs e)
{
jeuSokoban.EcranSuivant = JeuSokoban.VIDE;
jeuSokoban.activerNiveau(jeuSokoban.NiveauInfos.jeuNom, jeuSokoban.NiveauInfos.jeuNiveau, jeuSokoban.NiveauInfos.jeuNiveau);
jeuSokoban.activerNiveau(jeuSokoban.NiveauInfos.jeuNom, jeuSokoban.NiveauInfos.jeuLigne, jeuSokoban.NiveauInfos.jeuNiveau);
jeuSokoban.ecran(JeuSokoban.NIVEAU);
}
private void bt_NivSuiv_Click(object sender, EventArgs e)
{
jeuSokoban.EcranSuivant = JeuSokoban.VIDE;
int ligne = jeuSokoban.NiveauInfos.jeuLigne + ((jeuSokoban.NiveauInfos.jeuNiveau + 1 % 10 == 0) ? 1 : 0);
jeuSokoban.activerNiveau(jeuSokoban.NiveauInfos.jeuNom, ligne, jeuSokoban.NiveauInfos.jeuNiveau + 1 % 10);
jeuSokoban.activerNiveau(jeuSokoban.NiveauInfos.jeuNom, ligneSuiv, niveauSuiv);
jeuSokoban.ecran(JeuSokoban.NIVEAU);
}
......
......@@ -8,6 +8,7 @@ namespace Sokoban.Jeu.Niveau
{
public class Fichier
{
public bool isExist = false;
private int[,] niveau;
private int[,] niveauElements;
......@@ -21,80 +22,88 @@ namespace Sokoban.Jeu.Niveau
/// <param name="niveau">numero de niveau dans la ligne</param>
public Fichier (String nom, int numLigne, int numNiveau)
{
TextReader xsb = new StreamReader(@"Niveaux\" + nom + @"\" + (numLigne - 1) + "-" + (numNiveau - 1) + ".xsb");
// recherche la taille du niveau
int largeur = 0;
int lignes = 0;
String ligne = "";
List<String> nivLigne = new List<string>();
while ((ligne = xsb.ReadLine()) != null)
try
{
if (largeur < ligne.Length)
TextReader xsb = new StreamReader(@"Niveaux\" + nom + @"\" + (numLigne - 1) + "-" + (numNiveau - 1) + ".xsb");
// recherche la taille du niveau
int largeur = 0;
int lignes = 0;
String ligne = "";
List<String> nivLigne = new List<string>();
while ((ligne = xsb.ReadLine()) != null)
{
largeur = ligne.Length;
if (largeur < ligne.Length)
{
largeur = ligne.Length;
}
lignes++;
nivLigne.Add(ligne);
}
lignes++;
nivLigne.Add(ligne);
}
xsb.Close();
xsb.Close();
niveau = new int[lignes,largeur];
niveauElements = new int[lignes,largeur];
niveau = new int[lignes, largeur];
niveauElements = new int[lignes, largeur];
int j = 0;
foreach(String l in nivLigne) {
int i = 0;
IEnumerator<char> lEnum = l.GetEnumerator();
while (lEnum.MoveNext())
int j = 0;
foreach (String l in nivLigne)
{
char ch = lEnum.Current;
if (ch.Equals('#'))
int i = 0;
IEnumerator<char> lEnum = l.GetEnumerator();
while (lEnum.MoveNext())
{
niveau[j, i] = 0;
niveauElements[j, i] = 0;
char ch = lEnum.Current;
if (ch.Equals('#'))
{
niveau[j, i] = 0;
niveauElements[j, i] = 0;
}
else if (ch.Equals('$'))
{
niveau[j, i] = 1;
niveauElements[j, i] = 1;
}
else if (ch.Equals('.'))
{
niveau[j, i] = 2;
niveauElements[j, i] = 0;
}
else if (ch.Equals('*'))
{
niveau[j, i] = 2;
niveauElements[j, i] = 1;
}
else if (ch.Equals('@'))
{
joueur[0] = j;
joueur[1] = i;
niveau[j, i] = 1;
niveauElements[j, i] = 0;
}
else if (ch.Equals('+'))
{
joueur[0] = j;
joueur[1] = i;
niveau[j, i] = 2;
niveauElements[j, i] = 0;
}
else
{
niveau[j, i] = 1;
niveauElements[j, i] = 0;
}
i++;
}
else if (ch.Equals('$'))
for (; i < largeur; i++)
{
niveau[j, i] = 1;
niveauElements[j, i] = 1;
}
else if (ch.Equals('.'))
{
niveau[j, i] = 2;
niveauElements[j, i] = 0;
}
else if (ch.Equals('*'))
{
niveau[j, i] = 2;
niveauElements[j, i] = 1;
}
else if (ch.Equals('@'))
{
joueur[0] = j;
joueur[1] = i;
niveau[j, i] = 1;
niveauElements[j, i] = 0;
}
else if (ch.Equals('+'))
{
joueur[0] = j;
joueur[1] = i;
niveau[j, i] = 2;
niveauElements[j, i] = 0;
}
else
{
niveau[j, i] = 1;
niveauElements[j, i] = 0;
}
i++;
j++;
}
for (; i < largeur; i++)
{
niveau[j, i] = 1;
}
j++;
isExist = true;
}
catch (Exception ex)
{
System.Console.WriteLine("Le fichier " + @"Niveaux\" + nom + @"\" + (numLigne - 1) + "-" + (numNiveau - 1) + ".xsb n'existe pas ");
}
}
......
########
# #
# #############
# . #
# * $ ######
# # #
########## @ ######
# #
# ####
# #
###
\ No newline at end of file
#####
# #
#$ #
### $##
# $ $ #
### # ## # ######
# # ## ##### ..#
# $ $ ..#
##### ### #@## ..#
# #########
#######
####################
# .#.. #
# ### ####### $ #
# #$###
#* $ $ ## ###
# # #
#.######## @ ######
### ######
############
#.. # ###
#.. # $ $ #
#.. #$#### #
#.. @ ## #
#.. # # $ ##
###### ##$ $ #
# $ $ $ $ #
# # #
############
########
# @#
# $#$ ##
# $ $#
##$ $ #
######### $ # ###
#.... ## $ $ #
##... $ $ #
#.... ##########
########
########
# ....#
############ ....#
# # $ $ ....#
# $$$#$ $ # ....#
# $ $ # ....#
# $$ #$ $ $########
# $ # #
## #########
# # ##
# $ ##
# $$#$$ @#
# # ##
###########
#####
# #####
# #$## #
# $ #
######### ### #
#.... ## $ $###
#.... $ $$ ##
#.... ##$ $ @#
######### $ ##
# $ $ #
### ## #
# #
######
###### ###
#.. # ##@##
#.. ### #
#.. $$ #
#.. # # $ #
#..### # $ #
#### $ #$ #
# $# $ #
# $ $ #
# ## #
#########
#####
####### ##
## # @## $$ #
# $ #
# $ ### #
### #####$###
# $ ### ..#
# $ $ $ ...#
# ###...#
# $$ # #...#
# ### #####
####
####
# ###########
# $ $ $ #
# $# $ # $ #
# $ $ # #
### $# # #### #
#@#$ $ $ ## #
# $ #$# # #
# $ $ $ $ #
##### #########
# #
# #
#......#
#......#
#......#
########
#######
# ...#
##### ...#
# . .#
# ## ...#
## ## ...#
### ########
# $$$ ##
##### $ $ #####
## #$ $ # #
#@ $ $ $ $ #
###### $$ $ #####
# #
########
### #############
##@#### # #
# $$ $$ $ $ ...#
# $$$# $ #...#
# $ # $$ $$ #...#
### # $ #...#
# # $ $ $ #...#
# ###### ###...#
## # # $ $ #...#
# ## # $$ $ $##..#
# ..# # $ #.#
# ..# # $$$ $$$ #.#
##### # # #.#
# ######### #.#
# #.#
###############
####
#### # #
### @###$ #
## $ #
## $ $$## ##
# #$## #
# # $ $$ # ###
# $ # # $ #####
#### # $$ # #
#### ## $ #
#. ### ########
#.. ..# ####
#...#.#
#.....#
#######
################
# #
# # ###### #
# # $ $ $ $# #
# # $@$ ## ##
# # $ $ $###...#
# # $ $ ##...#
# ###$$$ $ ##...#
# # ## ##...#
##### ## ##...#
##### ###
# #
#######
#########
## ## #####
### # # ###
# $ #$ # # ... #
# # $#@$## # #.#. #
# # #$ # . . #
# $ $ # # #.#. #
# ## ##$ $ . . #
# $ # # #$#.#. #
## $ $ $ $... #
#$ ###### ## #