Shaolyne
Messages postés155Date d'inscriptionjeudi 12 mai 2005StatutMembreDernière intervention 8 mars 20111 13 nov. 2010 à 17:39
Salut à toi kev,
Tu peux rediriger les actions "click" de chacun des boutons sur le même handler (la même méthode). Pour ce faire, il te suffit de spécifier la même méthode pour les 3 boutons (via le designer, dans la dropdown de l'évènement click ; via le code comme ci:
Dans ton handler, tu vas alors vérifier quel est le bouton initiateur de l'évènement via la variable sender. En fonction du bouton, tu vas alors appeler une méthode UpdateScore(playerAction, AIAction). Finalement, il te reste à mettre tes libellés à jour. Pour ce faire, tu peux créer une méthode UpdateLabels(j, AIAction, result).
Ton code aura alors l'allure suivante :
private void btn_Click(object sender, EventArgs e)
{
Random AIAction = new Random();
i = r.Next(1, 4);//si 1 : Pierre, si 2 : Feuille, si 3 : Ciseau
if (j < 30)
{
int playerAction = GetValueFromButton(sender as Button);
int result = UpdateScore(playerAction, AIAction)
UpdateLabels(j, AIAction, result);
j++;
}
else
{
gain scoreJ < scoreO? "Ordinateur gagne!" : gain "Joueur gagne!";
lbl4.Text = "Partie terminé: " + gain;
}
}
private int GetValueFromButton(Button btn)
{
int btnValue=0;
if(btn == btnPierre)
btnValue = 1;
else if(btn == btnPapier)
btnValue = 2;
else if(btn == btnCiseau)
btnValue = 3;
return btnValue;
}
private int UpdateScore(int playerAction, int AIAction)
{
switch(playerAction)
{
case 1: //Appliquer la règle
//Mettre à jour les scores
//Mettre à jour la variable result: 0 si égalité, 1 si
//player vainqueur et 2 si AI vainqueur
case 2: //idem
case 3: //idem
}
return result;
}
private void UpdateLabels(int nbTours, int AIAction, int result)
{
lbl2.Text = GetTextFromAIAction(AIAction) + " - " + GetTextFromResult(result);
lbl3.Text = "Score Joueur: " + scoreJ + " pts" + "\n" + "Score ordinateur: " + scoreO + "pts";
lbl4.Text = "Tour n° " + j;
}
Je te laisse écrire le code relative aux 2 dernière méthodes: GetTextFromAIAction(AIAction) et GetTextFromResult(result).
Concernant l'exactitude du code, il se peut qu'il y ait certaines erreurs car je n'ai pas de VS installé sur cette machine. Concernant la sémantique implicite apportée à chaque valeur, il est préférable de travailler avec des enum. De la sorte, le code sera plus clair et plus maintenable.