Toujour un truc qui gene !!

Signaler
Messages postés
36
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2009
-
Messages postés
36
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2009
-
bonsoir

en fait je réalise un sudoku
tout fonctionne tres bien sauf deux trucs bien génant !!

1er probleme :
j'ai créer une fonction pour enregistrer la grille, donc je l'enregistre dans un fichier texte et quand une case est vide ca remplace par un 0 dans ce fichier txt. Mais tous les 9 chiffres je dois revenir à la ligne, et je ny arrive pas. Normalement c'est \n il me semble, mais bon ca marche pas.

2nd probleme :
Lorsque l'utilisateur entre un chiffre, si celui ci n'est pas possible, un message d'erreur apparait, puis cela doit effacer la case. MAIS quand on efface la case, cela revient a mettre un 0, et comme j'ai un test qui empeche l'utilisateur de saisir 0 ou une lettre, j'ai de nouveau un message d'erreur au moment ou la case s'efface disant "le chiffre 0 ne peut pas etre entré ici", et ca il faut que ca vire pour le cas ou j'efface la case et non pour le cas ou l'utilisateur entre 0.

Voici qq extraits de mon code pour clarifier un peu tout :

public int Value
{
set
{
if(value==0)
{
this.Enabled = true;
this.Text = string.Empty;
}
else
{
this.Enabled = false;
this.Text = value.ToString();
}
}
get
{
if(this.Text != string.Empty)
{
try
{
return int.Parse(this.Text);
}
catch(FormatException) //Si le caractère entré n'est pas convertible en entier
{
MessageBox.Show("Vous devez saisir un nombre","Erreur");
this.ResetText();
return 0;
}
}
else
return 0;


private void Menu_Save_Click(object sender, System.EventArgs e)
{
int Value;

if(SFD_Save.ShowDialog() == DialogResult.OK)
{
StreamWriter file = new StreamWriter(SFD_Save.FileName);

for(int i=0; i<9; i++)
{
for(int j=0; j<9; j++)
{
Value = Grille[j,i].Value;
file.Write(Value);
}
file.Write('\n');
}
file.Close();
}
}


Merci d'avance

PS : si vous souhaitez voir un autre point de mon code dite le moi ;)

3 réponses

Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008

t'as essayé voir file.WriteLine();

@++
Messages postés
36
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2009

ah yessssss
nickel !

donc mon premier probleme est réglé ! MERCI BEAUCOUP badrbadr
Messages postés
36
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
14 mars 2009

tiens j'ai aussi une autre erreur, mais c'est juste graphique, c'est pas grave mais c'est dommage que ca ne fonctionne pas
explications :
-la fonction TextChanged : si on peut ecrire dans la case, et que la valeur entrée est bonne, elle est blanche, si la veleur entrée est incorrect elle devien rouge, puis un message d'erreur apparait, puis elle redevient blanche et efface le chiffre entré.
et si la case n'est pas active, elle est bleu nuit

_la fonction Help_Clik : l'utilisateur clique sur l'aide pour le chiffre 1 par exemple, et ca affiche le 1 partout ou il peut aller, et en colorant la case en bleu clair.

PROBLEME : il me colore la case en bleu nuit !!! ou est le probleme ?

mon code :

private void TextChanged(object sender, System.EventArgs e)
{
Case c = (Case)sender;

if(c.Enabled)
{
if(accepted(c,c.Value))
{
c.BackColor = Color.White;
c.ForeColor = Color.MidnightBlue;
}
else
{
c.BackColor = Color.Red;
MessageBox.Show("Vous ne pouvez pas placer " + c.Value.ToString() + " ici.","Erreur");
c.BackColor = Color.White;
c.ResetText();
}
}
else
c.BackColor = Color.MidnightBlue;
}

private void Help_Click(Object sender, System.EventArgs e)
{
MenuItem mi = (MenuItem)sender;
ArrayList list = new ArrayList();

int digit = int.Parse(mi.Text);

for(int i=0; i<9; i++)
{
for(int j=0; j<9; j++)
{
if(Grille[i,j].Value == 0 && accepted(Grille[i,j],digit))
list.Add(Grille[i,j]);
}
}

foreach(Case c in list)
{
c.BackColor = Color.LightBlue;
c.Value = digit;
}

MessageBox.Show("Placement des " + digit + " terminé", "Aide : chiffre " + digit);

foreach(Case c in list)
{
c.BackColor = Color.White;
c.Value = 0;
}
}