Oltana.net 24 Mai 2012 à 16:38:29 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.


Connexion avec identifiant et mot de passe
Nouvelles:
Bascule sur SMF faite!
 
 
Accueil Aide Rechercher
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Problème de gestion de Hide  (Lu 474 fois)
Arphus
Posteur assidu
****
Hors ligne Hors ligne

Messages: 235



Voir le profil
« le: 30 Septembre 2007 à 03:50:37 »

Bonjour, je fais présentement un TP pour mon cours d'algorithme et programmation au Cégep et j'ai un problème.  J'ai programmer un mini-jeu de d6.

voici les règles:

Code:
//////////Règles du jeu /////////////////////////////////////
 // le 1 sur un dé vaut 10 points.                               //
 // le 5 sur un dé vaut 5 points.                                 //
 // le double 2 vaut 20 points.                                   //
 // le double 3 vaut 30 points.                                   //
 // le double 4 vaut 40 points.                                   //
 // le double 5 vaut 50 points.                                   //
 // seulement les valeurs (sans le double)                  //
 // si on a un chiffre: 2,3,4,5,6 on a
 // zéro et on a perdu.
 // On doit atteindre au minimun 100
 // si on a veut gagné.                                              //
 ///////////////////////////////////////////////////////////////

le problème c'est quand je veux afficher le bouton Recommencer le résultat doit être égale ou supérieur à 100.

Voici le code source:

Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int valSave=0;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 lGagne->Hide();
 lPerdu->Hide();
 iDe1->Show();
 iDe11->Hide();
 iDe12->Hide();
 iDe13->Hide();
 iDe14->Hide();
 iDe15->Hide();
 iDe16->Hide();
 iDe2->Show();
 iDe21->Hide();
 iDe22->Hide();
 iDe23->Hide();
 iDe24->Hide();
 iDe25->Hide();
 iDe26->Hide();
 bRetry->Hide();
 bJouer->Show();

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 randomize();


}
//---------------------------------------------------------------------------
void __fastcall TForm1::bJouerClick(TObject *Sender)
{
 int deNo1 = random(6)+1;
 int deNo2 = random(6)+1;
 int val;

 //////////Règles du jeu ///////////////////////////////////////
 // le 1 sur un dé vaut 10 points.                            //
 // le 5 sur un dé vaut 5 points.                             //
 // le double 2 vaut 20 points.                               //
 // le double 3 vaut 30 points.                               //
 // le double 4 vaut 40 points.                               //
 // le double 5 vaut 50 points.                               //
 // seulement les valeurs (sans le double)                    //
 // : 2,3,4,5,6 on une valeur de zéro.                        //
 ///////////////////////////////////////////////////////////////



   if (deNo1==1 && deNo2==1){
    val = 100;
    lGagne->Show();
    bRetry->Show();
    bJouer->Hide();
   }
    else
      if (deNo1==2 && deNo2==2)
      val = 20;
       else
       if (deNo1==3 && deNo2==3)
        val = 30;
        else
         if (deNo1==4 && deNo2==4)
          val = 40;
          else
           if (deNo1==5 && deNo2==5)
            val = 50;
            else
             if (deNo1==6 && deNo2==6)
              val = 60;
              else
               if (deNo1==1 || deNo2==1)
                val = 10;
                else
                 if (deNo1==5 || deNo2==5)
                  val = 5;
                  else{
                   val = 0;
                   lPerdu->Show();
                   bRetry->Show();
                   bJouer->Hide();
                    }

 // Affichage du D6 No 1 à l'écran.
switch(deNo1){
  case 1:
        iDe1->Hide();
        iDe11->Show();
        iDe12->Hide();
        iDe13->Hide();
        iDe14->Hide();
        iDe15->Hide();
        iDe16->Hide();
  break;
  case 2:
        iDe1->Hide();
        iDe11->Hide();
        iDe12->Show();
        iDe13->Hide();
        iDe14->Hide();
        iDe15->Hide();
        iDe16->Hide();
  break;
  case 3:
        iDe1->Hide();
        iDe11->Hide();
        iDe12->Hide();
        iDe13->Show();
        iDe14->Hide();
        iDe15->Hide();
        iDe16->Hide();
  break;
  case 4:
        iDe1->Hide();
        iDe11->Hide();
        iDe12->Hide();
        iDe13->Hide();
        iDe14->Show();
        iDe15->Hide();
        iDe16->Hide();
  break;
  case 5:
        iDe1->Hide();
        iDe11->Hide();
        iDe12->Hide();
        iDe13->Hide();
        iDe14->Hide();
        iDe15->Show();
        iDe16->Hide();
  break;
  case 6:
        iDe1->Hide();
        iDe11->Hide();
        iDe12->Hide();
        iDe13->Hide();
        iDe14->Hide();
        iDe15->Hide();
        iDe16->Show();
  break;
  default:iDe1->Show();
 }
 // Affichage du D6 No 2 à l'écran.
 switch(deNo2){
  case 1:
        iDe2->Hide();
        iDe21->Show();
        iDe22->Hide();
        iDe23->Hide();
        iDe24->Hide();
        iDe25->Hide();
        iDe26->Hide();
  break;
  case 2:
        iDe2->Hide();
        iDe21->Hide();
        iDe22->Show();
        iDe23->Hide();
        iDe24->Hide();
        iDe25->Hide();
        iDe26->Hide();
  break;
  case 3:
        iDe2->Hide();
        iDe21->Hide();
        iDe22->Hide();
        iDe23->Show();
        iDe24->Hide();
        iDe25->Hide();
        iDe26->Hide();
  break;
  case 4:
        iDe2->Hide();
        iDe21->Hide();
        iDe22->Hide();
        iDe23->Hide();
        iDe24->Show();
        iDe25->Hide();
        iDe26->Hide();
  break;
  case 5:
        iDe2->Hide();
        iDe21->Hide();
        iDe22->Hide();
        iDe23->Hide();
        iDe24->Hide();
        iDe25->Show();
        iDe26->Hide();
  break;
  case 6:
        iDe2->Hide();
        iDe21->Hide();
        iDe22->Hide();
        iDe23->Hide();
        iDe24->Hide();
        iDe25->Hide();
        iDe26->Show();
  break;
  default:iDe2->Show();
 }
 valSave = valSave + val;

 lTotal->Caption = "Le Total : ";
 lTotal->Caption = lTotal->Caption + valSave ;
 if (valSave >=100)                                              /////// C'est ici
   bRetry->Show();                                              /<====
   lGagne->Show();                                             /<====

}
//---------------------------------------------------------------------------
void __fastcall TForm1::bQuitterClick(TObject *Sender)
{
 Close();        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::bRetryClick(TObject *Sender)
{
 valSave = 0 ;
 lTotal->Caption = "Total : 0";
 bJouer->Show();

 lGagne->Hide();
 lPerdu->Hide();
 iDe1->Show();
 iDe11->Hide();
 iDe12->Hide();
 iDe13->Hide();
 iDe14->Hide();
 iDe15->Hide();
 iDe16->Hide();


 iDe2->Show();
 iDe21->Hide();
 iDe22->Hide();
 iDe23->Hide();
 iDe24->Hide();
 iDe25->Hide();
 iDe26->Hide();
 bRetry->Hide();
}
//---------------------------------------------------------------------------

Journalisée




GianT
Animateurs
****
Hors ligne Hors ligne

Messages: 403



Voir le profil WWW
« Répondre #1 le: 01 Octobre 2007 à 17:57:46 »

Hum , et ca serait pas plus simple de mettre un switch(deNo1 * deNo2) la a la place des if en chaine ?
Code:
     if (deNo1==2 && deNo2==2)
      val = 20;
       else
       if (deNo1==3 && deNo2==3)
        val = 30;
        else
         if (deNo1==4 && deNo2==4)
          val = 40;
          else
           if (deNo1==5 && deNo2==5)
            val = 50;
            else
             if (deNo1==6 && deNo2==6)
              val = 60;
              else
               if (deNo1==1 || deNo2==1)
                val = 10;
                else
                 if (deNo1==5 || deNo2==5)
                  val = 5;
                  else{
                   val = 0;
                   lPerdu->Show();
                   bRetry->Show();
                   bJouer->Hide();
                    }

sinon , je suis pas sur d'avoir bien compris ton probleme mais au vu de l'indentation ca serait pas plutot ca ?
Code:
if (valSave >=100){
   bRetry->Show();
   lGagne->Show();
 }

(genre il manquerait les accolades ...)
Journalisée
Fireboot
Modérateur Global
*****
Hors ligne Hors ligne

Messages: 1831



Voir le profil
« Répondre #2 le: 02 Octobre 2007 à 01:20:54 »

Désolé, c'est mal indenté, et sale dans l'ensemble, j'ai pas le courage de tout lire...
Journalisée




GianT
Animateurs
****
Hors ligne Hors ligne

Messages: 403



Voir le profil WWW
« Répondre #3 le: 05 Octobre 2007 à 01:17:51 »

je me suis trompé ou c'est bien la l'erreur Arphus ?
Journalisée
Pages: [1]   Haut de page
Imprimer
Oltana.net  |  Informatique Créatrice  |  Programmation  |  Fil de discussion: Problème de gestion de Hide
 
Aller à:  

Powered by SMF 1.1.15 | SMF © 2006-2009, Simple Machines