Conditions

Signaler
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
salut, je fais un jeu en c# ou je génére des nombre à chaque foi que j'appuie sur un bonton.
et ainsi, un label ajoute a chaque fois son ancien nombre + celui qui vient d'être généré.
le but du jeu est d'arriver à la case 90. mais c'est là que se pose le problème, je ne sais pas ou plasser ma condition pour que lorsque la case ets égale a 90, il m'affiche ma form4.
je ne peux pas la mettre dans private void button_Click , ça ne marche pas, je ne sais pas dans quoi je peux mettre cette condition. aidez moi

K.bitnik

10 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Salut,
Il faut plus de précisions pour pouvoir répondre à cette question, poste un morceau de ton code intéressant qui pourrait aider à répondre !

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

private
void button3_Click(
object sender, System.EventArgs e)
{
label11.Text = ("" + case1);

// prob
if (case1==90)
{
Form2.ActiveForm.Close();
Form4 form4 =
new Form4();
Form4.ShowDialog();
}

//random pour le dés 1
Random c =
new Random();

int d = c.Next(1,7);
label6.Text = ("" + d);

//random pour le dés 2
int g = c.Next(1,7);
label7.Text = ("" + g);

//somme des dés
int somme = (d+g);
label8.Text = ("" + somme);

//Conditions pour la case1 = prob aussi ( c'est surement le fait que je soit dans private void button_Click, mais je sais pas où je pourrai placer toutes ces conditions)
if (case1 + somme == 6)
{
case1 = 17;
label11.Text = ("17");
}

else
if (case1 +somme== 14)
{
case1 = 3;
label11.Text = ("3");
}

else
if (case1 +somme== 20)
{
case1 = 15;
label11.Text = ("15");
}

else
if (case1 +somme== 24)
{
case1 = 26;
label11.Text = ("26");
}

else
if (case1 +somme== 30)
{
case1 = 44;
label11.Text = ("44");
}

else
if (case1 +somme== 39)
{
case1 = 33;
label11.Text = ("33");
}

else
if (case1 +somme== 49)
{
case1 = 62;
label11.Text = ("62");
}

else
if (case1 +somme== 66)
{
case1 = 53;
label11.Text = ("53");
}

else
if (case1 +somme== 69)
{
case1 = 58;
label11.Text = ("58");
}

else
if (case1 +somme== 79)
{
case1 = 67;
label11.Text = ("67");
}

else
if (case1 +somme== 82)
{
case1 = 86;
label11.Text = ("86");
}

else
if (case1 +somme== 84)
{
case1 = 71;
label11.Text = ("71");
}

else
if (case1 +somme== 88)
{
case1 = 36;
label11.Text = ("36");
}

//compteur des cases
case1 = case1 + somme;
label11.Text = ("" + case1);

//condition pour la fin
if ((case1)+d>90)
{

int recul;
recul = (case1 + d) - 90;
case1 = case1 - recul;
}
}
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Comment ça prob, case1 est de quel type ?

Sinon au lieu de ta rafale de "else if" regarde du côté de "switch"

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
J'imagine que case est de type int.
Mais tu as un problème de compilation ou de logique en fait ?

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

j'ai déclaré case1 comme ça.:
static public int case1; mais quand j'execute mon jeu, quand je génére, il m'affiche le num de la case dans un label et quand le num de la case est à 90 eh bien rien ne se passe!!
il ne m'ouvre pas la form que je veux !
je pense que ce soit dû au faite que ces conditions ne doivent pas figurer dans cette partie du programme (private void button_click) car pour que le programme vérifie les conditions, je dois cliquer or ça n'est pas ce que je veu, je veu qu'il fasse automatiquement !!

K.bitnik
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Je pense plutot que c'est parce que le bloc

if (case1==90)
{
Form2.ActiveForm.Close();
Form4 form4 =
new Form4();
Form4.ShowDialog();
}

doit se trouver à la fin de ta méthode ! Et pas au début.

[Pub]
http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
Comme le dit Bidou le test doit etre a la fin, apres le calcul et non l'inverse ou alors tu auras toujours un clic de retard.. De plus case1 n'est peut etre jamais strictement egale a 90 mais plus grand.. Et si tu veux que ton programme test les conditions automatiquement il te faut une boucle principale ou un timer mais pas un evenement OnClick.

petite precision:

Tu peux remplacer l'expression "" + case1 par case1.ToString( )
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

J'affiche le résultat de un label comme tu as pu voir, donc je vois la valeur de la case1.or même si je place la condition a la fin des calculs et que le label affiche 90, rien ne se passe.
Comment faire une boucle principale ?? avec quoi ??
désolé (je suis débutant)

Merci pour le renseignement concernant : (case1.ToString()) !!

K.bitnik
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
Voila le squelette pour une application avec une boucle principale, comme pour un jeu par exemple.. Si c'est trop complique pour toi utilise System.Windows.Forms.Timer pour declencher des evenements a intervales reguliers.

using System;
using System.Windows.Forms;


class MainForm : Form
{
private MainForm( ) : base( )
{
// Ici l'initialisation de ton programme..
this.Visible true; // ou this.Show( ); Maintenant this.Created true.
}

private void Run( )
{
while ( this.Created ) // La bouble principale.
{
// Ici toute la logique de ton programme..

Application.DoEvents( ); // Remplace Application.Run( new MainForm( ) );
}
}

protected override void OnKeyUp( KeyEventArgs args )
{
switch ( args.KeyCode ) // switch est l'equivalent d'une multitude de else.
{
case Keys.Escape : this.Close( ); break; // Mainteant this.Created == false.
case Keys.P : MessageBox.Show( "Le jeu est en Pause." ); break;
}
}

private static void Main( )
{
new MainForm( ).Run( );
}
}
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
Grrr... toute la mise en page de mon code est ruinee...