begin process at 2012 02 12 05:59:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Timer en borland C++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Timer en borland C++

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ée 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 timer atméga8535 [ par lalouna41 ] salut j'ai un programme a faire pour un système d'aide a la navigation pour mon thème bac je dois utiliser l'atméga 8535. voila la description du Fonction En C [ par wallaby83140 ] Bonjour Alors je dois transformer les fonctions MIL, CEN, DIX et UNI en une seule je sais qu'il faut mettre des argument genre void fonction(argument interface graphique mfc [ par infoYESMINE ] Salut j'ai un code c++ ( interface graphique ) qui contient un bouton "open image" et qui affiche cette image dans une nouvelle fenetre nommé "Origin Afficher une partie de l'image BMP [ par faizazouari ] Salut. J'ai rencontrée un problème lors l'affichage d'une partie de l'image original(bmp) de résolution 480x640.Je veux Afficher uniquement une partie winscard [ par aymen87 ] Bonjour Je suis en train de développer une interface qui permet d'envoyer des commande APDU à une carte ISO7816 en C++ sous Visual Studio 2008. J'ai


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,451 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales