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


Connexion avec identifiant et mot de passe
Nouvelles:
Pour les gens déja membres, veuillez supprimer le cookie du site présent sur vos navigateurs, sous peine de pb de connexion.

Si ca n'y fait toujours rien, se faire renvoyer un nouveau mot de passe, puis le changer un fois loggé.
 
 
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