Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Timer en borland C++ [ Archives / Au secours ] (Kurul1)

mercredi 2 mars 2005 à 14:15:32 | Timer en borland C++

Kurul1

Bonjour à tous

je suis en tr1 de faire un jeu ou il faut amené la souris sur un point situé sur l'écran (j'utilise actuellement la souris mais ce programme évoluera pour utiliser une plate-forme de force). Et chaque partie dure un temps déterminé, d'où l'utilisation d'un timer.

Ma partie a deux facon de se terminer :
   - lorsque le timer est terminé
   - lorsque l'utilisateur a amené le point de ca souris sur le point.

Mon problème est que lorsque je lance plusieurs partie de suite, il y a un problème avec le timer à partir de la deuxième partie (impossible a jouer car la partie ne dure pas).
Or, en mettant une pause (un showMessage), il n'y a plus de problème. Quelqu'un aurait-il une solution

voici mon code :

// Méthode déclancher lorsque le timer est terminé
void __fastcall TGameForm::OnTimer(TObject *Sender)
{
   FinDePartie();
}

// Méthode qui lance une partie
void  TGameForm::DbtDePartie(void)
{
   // On détermine les coordonnées du point
   Point(p->LesParties[NumPartie].Position);

   // On configure l'objet timer
   Timer1 = new TTimer(NULL);

   // On fixe l'intervalle du timer
   Timer1->Interval = (p->LesParties[NumPartie].Temps) * 1000;

   // On affecte la méthode OnTimer
   Timer1->OnTimer = OnTimer;

   // On active Le timer
   Timer1->Enabled = true;

   // On Dessine l'écran
   OnPaint(this);
}

// Méthode qui termine une partie
void TGameForm::FinDePartie(void)
{
   //ShowMessage("Fin de partie");
   // On désactive l'objet timer
   Timer1->Enabled = false;

   // On détruit l'objet Timer
   delete Timer1;

   // On efface l'écran
   Canvas->Pen->Color = clWhite;
   Canvas->Brush->Color = clWhite;
   Canvas->Rectangle(0, 0, ClientWidth, ClientHeight);

   // On incrémente le numéro de la partie
   NumPartie++;

   // On vide la liste des points
   pts.ViderPoints();

   // On lance la partie suivante
   if(NumPartie < 4)
   {
      DbtDePartie();
   }
   else
   {
      ShowMessage("Fin du Jeu !");
      // On met NumPartie à -1
      NumPartie = -1;

      // On désactive le mode Jeu
      ModeJeu = false;

       OnPaint(this);
   }
}

void __fastcall TGameForm::OnMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        // Si l'on est en mode Jeu
        if(ModeJeu == true)
        {
                // Si c'est le premier point
                if(pts.NbPoints == 0)
                {
                        Canvas->MoveTo(X, Y);
                }
                else
                {
                        Canvas->LineTo(X, Y);
                }
                // On ajoute le point
                pts.AjouterPoint(X, Y);
                if(Gagner(X, Y))
                { 
                        // Pause qui permet au programme de fonctionner
                        //ShowMessage("Gagné");    
                        FinDePartie();
                }
        }
}

// Méthode qui teste si l'on a gagné
bool TGameForm::Gagner(int x, int y)
{
        int xc, yc;                     // Coordonnées du centre du cercle
        double Distance;                // Distance
        double Rayon = Diametre / 2;    // Rayon
        double opx, opy;


        xc = ((float)(x1) + (float)(x2)) / 2;
        yc = ((float)(y1) + (float)(y2)) / 2;

        opx = (x - xc) * (x - xc);
        opy = (y - yc) * (y - yc);

        Distance = sqrt(opx + opy);

        // SI la distance est inférieur au diamètre du cercle
        if(Distance < Rayon)
        {
                // C'est gagné
                return true;
        }
        else
        {
                return false;
        }
}



Cette discussion est classé dans : timer, void, partie, timer1, numpartie


Répondre à ce message

Sujets en rapport avec ce message

probleme avec des classes [ par khalilo ] salut a tousj'ai un probleme dans un projet qui consiste a faire un tictactoe avec ia qui apprend.Le probleme est le suivant : sachant que je compile Help ! Timer qui ne ce déclanche pas ? [ par jbmartinez ] J'ai suivis toute les instructions que j'ai trouvé ici. J'ai regarder l'exemple dans dev c++ de winanim. Rien y fait ! Mon timer ne ce déclanche pas ! jeux d'échec qui nous met en échec!! [ par shinohinata01 ] Bonjour,nous rencontrons actuellement un problème sur un de nos programmes qui traite d'un jeux d'échec.en gros nous avons une fonction dans une class charger un objet enregister et l'instancier [ par bleuerouge ] Bonjour , je suis en train de faire un petit projet de jeu de role, rien de bien pretencieux, mias bon il faut bien que je m'y mette...J'ai diveirs pr Timer & service [ par deck_bsd ] Bonjour à tous.Voici mon problème,J'ai crée un timer dans mon service, mais celui-ci ne fonctionne pas (je suis certain que c'est le timer car j'ai te Probleme lien bouton [ par spounk77 ] bonsoir,j'aurai besoin de votre aide, je suis en train de réaliser un programme en WinForms et je n'arrive pas a donner un lien a mon bouton. Je m'exp Problème avec le Timer d'ALLEGRO [ par tibe18453636 ] J'ai un problème avec un jeu (une sorte de pong) que j'ai développé sous dev-cpp avec Allegro.Apparament cela vient du timer que jutilise pour limiter Timer C++ en console? [ par lekenyanbreton ] Salut tout le monde je cherche à développer un timer C++ en mode console car avec une MFC c facile mais en console j'arrive pas.Merci d'avance!!! parcours en profondeur dans un graphe [ par Tavarez59282 ] Bonjour j'ai un sujet de tp à realiser sur les graphes à l'aide de listes d'adjacence et j'ai un incident de segmentation dans mon code lorsque j'exec une partie de remerciement [ par unionx ] sujet hors programmation, puisque ce site est mon prefere je dis :Groooooos Merci Merci de répondre à nos questions, Merci de tenter de trouver des so


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.