Conditions

Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006 - 5 mai 2005 à 18:46
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 6 mai 2005 à 02:17
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

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
5 mai 2005 à 19:04
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
0
Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006
5 mai 2005 à 19:17
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;
}
}
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
5 mai 2005 à 19:22
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#
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
5 mai 2005 à 19:28
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006
5 mai 2005 à 19:39
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
5 mai 2005 à 19:53
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
5 mai 2005 à 21:08
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( )
0
Kbitnik Messages postés 125 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 2 mars 2006
5 mai 2005 à 22:14
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 mai 2005 à 02:12
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( );
}
}
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 mai 2005 à 02:17
Grrr... toute la mise en page de mon code est ruinee...
0
Rejoignez-nous