Toujour un truc qui gene !!

aposfa Messages postés 36 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 14 mars 2009 - 22 mars 2006 à 22:03
aposfa Messages postés 36 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 14 mars 2009 - 22 mars 2006 à 23:06
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

cs_badrbadr Messages postés 475 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 3 novembre 2008 1
22 mars 2006 à 22:31
t'as essayé voir file.WriteLine();

@++
0
aposfa Messages postés 36 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 14 mars 2009
22 mars 2006 à 22:42
ah yessssss
nickel !

donc mon premier probleme est réglé ! MERCI BEAUCOUP badrbadr
0
aposfa Messages postés 36 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 14 mars 2009
22 mars 2006 à 23:06
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;
}
}
0
Rejoignez-nous