Kbitnik
Messages postés125Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention 2 mars 2006
-
5 mai 2005 à 18:46
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 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
// 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");
}
Kbitnik
Messages postés125Date d'inscriptionmercredi 15 novembre 2000StatutMembreDerniè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 !!
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 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( )
Kbitnik
Messages postés125Date d'inscriptionmercredi 15 novembre 2000StatutMembreDerniè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()) !!
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 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..
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;
}
}