Petit jeu de cible, probleme d'affichage.

Signaler
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011
-
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011
-
Bonjour ami(e)s programmeurs et programmeuzes,

J'ai essyer dernierement de programmer un petit jeux de cible tout simple (que je compte améliorer avec le temps), et rien dans la version "tres" simple j'ai un petit probleme ; pour commencer je vous met mon code :

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Form1->Height=750 ;
Form1->Width=1260 ;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
randomize();
Horizontale = rand()%1200 ;
Verticale = rand()%700 ;

Cible->Top = Verticale ;
Cible->Left = Horizontale ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CibleClick(TObject *Sender)
{
temps = Timer1->Interval ;

pnt += 10 ;
Points->Caption = pnt ;

if (temps != 50)
{
temps -= 50 ;
Timer1->Interval = temps ;
}

randomize();
Horizontale = rand()%1200 ;
Verticale = rand()%700 ;

Cible->Top = Verticale ;
Cible->Left = Horizontale ;
}

Cible est une image, et Points un Label.

Mon probleme c'est qu'apres un certain nombre de cliques sur la cible, et que l'interval du timer est devenu vraiment petit, l'image ne met pas 50ms à changer de place, et de temps en temps(à intervalle aléatoire) elle s'arrete une seconde environ.

Je pense que c'est par ce que l'ordinateur n'a pas le temps d'executer le programme dans le temps de l'intervalle, vous pensez que c'est ca?
Et comment puis je régler ce probleme?

Merci d'avance pour vos réponses.

6 réponses

Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Bin...personne veut me répondre? vous me boudés? T_T
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Salut


Effectivement c'est une possibilite.
Essaye de mettre ta limite a 100ms et non a 50 ms et vois si tu obtient le meme resultat.

Si tu veux de plus grande perf, il va falloir se debaraser de toutes les surcouches inutiles:
Regarde du cote de la fonction BitBlt c'est ce qu'il y a de plus rapide pour afficher une image.

A+

Mon site internet : http://pistol.petesampras.free.fr
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Bonjour, desolé du retard, qu'est ce que tu appelle "surcouche inutile"?
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Et je ne trouve pas de fonction BitBlt ^^'
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Les surcouche inutiles c'est de passer par les MFC, qui encapsule tous le WIN32. Si tu veux avoir des performances, il vaux mieux eviter et coder directement en WIN32
Sinon pour la fonction BitBlt c'est par ici: 
http://msdn.microsoft.com/en-us/library/ms532278(VS.85).aspx

C'est marant, c'est le premier lien qui apparait dans google quand tu tappes BitBlt...

A+
Mon site internet : http://pistol.petesampras.free.fr
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Désolé j'avais pas cherché, je postais surtout pour le "surcouches" (la j'aurais pas toruvé sur google XD)