Gå til innhold

Delay, hvordan skape delay på f.eks. 0.1sek.


Anbefalte innlegg

Skrevet

Ja, som topic sier trenger jeg altså en kodesnutt som skaper delay i koden min.

 

Altså, at programmet venter f.eks 0.1 sekund før neste linje kjøres.

 

Programmerer i C++ btw, med Dev-C++ 4.01 som IDE

Videoannonse
Annonse
Skrevet

Dårlig med det gitt .. det vil si; den hjemmesnekkra wikien er så dårlig at jeg ikke gidder å bruke den.

 

Kanskje installere mediawiki eller-noe; får sjekke hva som er tilgjengelig her - melder fra om/når jeg får satt opp noe.

  • 2 uker senere...
Skrevet

I alle fall så lite standard at det skriker i ørene mine.

 

Om noe, så bruk sleep() med en (i større eller mindre grad) platformuavhengig wrapper.

 

(Sekunder benevnes forresten som "s" -- kun SI-enheter oppkalt etter egennavn får stor bokstav. Eks: A -- ampere, N -- newton, osv. Dette gjelder også med størrelsesprefikser. Med andre ord: "0,1 s" == 100 ms)

Skrevet

typedef long long qword;
float get_time()
{
qword m_tmp;
__asm
{
 lea ebx, m_tmp
 rdtsc
 mov dword ptr [ebx], eax
 add ebx, 4
 mov dword ptr [ebx], edx
 add ebx, -4
 fild qword ptr [ebx]
}
}

bool m_init = false;

float m_old_time;

float get_passed_time()
{
float m_ret_val;
float m_time = get_time();
if(m_init)
{
 m_ret_val = m_time - m_old_time;
 m_old_time = m_time;
 return m_ret_val;
}
else
{
 m_init = true;
 m_old_time = get_time();
 return 0.0f;
}
}

 

kan kanskje brukes? den har jeg skrevet i VC++ 7.1, og bruker den til time based movement.

Skrevet

Nei, jeg har andre ting å gjøre :)

 

Jeg har bare kopiert denne rett fra kildekoden min, og der brukes den til noe annet en å vente, men jeg kan skrive den betydelig kortere, droppe hele floating point greiene f.eks..

 

rdtsc var den eneste funksjonen jeg fant som hentet tid fra prosesoren.

 

typedef long long qword;
qword get_time()
{
qword m_tmp;
__asm
{
lea ebx, m_tmp
rdtsc
mov dword ptr [ebx], eax
add ebx, 4
mov dword ptr [ebx], edx
add ebx, -4
}
return qword ptr [ebx] 
}

bool m_init = false;

qword m_old_time;

qword get_passed_time()
{
qword m_ret_val;
qword m_time = get_time();
if(m_init)
{
m_ret_val = m_time - m_old_time;
m_old_time = m_time;
return m_ret_val;
}
else
{
m_init = true;
m_old_time = get_time();
return 0;
}
}

 

vet ikke om dette fungerer, skrev det i en fei, men den er kanskje mer til hjelp en den foregående.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...