Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Ohjelman ajastaminen

KemXy [01.12.2003 19:29:31]

#

Millähän keinolla saisi ohjelman pääloopin QBasicissa käymään läpi vaikkapa 70 kertaa sekunnissa? Kun ei ainakaan TIMER:illä onnistunut. Toimii kyllä, mutta ei sitä saa niin nopeaksi. Pitäisi saada peli toimimaan Windowsin dos emuloinnin alla kaikilla koneilla yhtä nopeasti. Peli on aika nopeatempoinen joten sen pitäisi käydä looppi läpi noin 50 - 100 kertaa sekunnissa ja olla tietysti säädettävä.

rndprogy [01.12.2003 19:58:51]

#

Tämä voi toimia

Q = TIMER
DO: LOOP UNTIL TIMER - Q > .2

Säädä tota desmaalia Q > jälkeen

Antti Laaksonen [01.12.2003 20:50:23]

#

Tällaista koodinpätkää olen joskus käyttänyt. Hidastus hoidetaan FOR-silmukalla ja silmukan pituutta vaihdellaan jatkuvasti sen mukaan, kuinka monta kuvaa on edellisen sekunnin aikana piirretty. Windowsin alla frame-rate tuntui heittelevän 65 - 75 välillä, DOSin alla luku oli paljon vakaampi. Hidastussilmukan välissä olevaa laskutoimitusta kannattaa mahdollisuuksien mukaan muuttaa koneen nopeudesta riippuen.

DIM hidaste AS INTEGER, aika AS STRING, kerrat AS INTEGER
DIM i AS INTEGER, j AS SINGLE

'aloitusarvot
hidaste = 100
aika = TIME$

DO
   FOR i = 1 TO hidaste
      'tähän joku sopiva laskutoimitus, mieluiten käyttäjän koneesta riippuen
      j = SQR(i) / SIN(i)
   NEXT
   'lasketaan "frame-rate"
   kerrat = kerrat + 1
   IF TIME$ <> aika AND kerrat <> 0 THEN
      'sekunnin välein lasketaan paras hidaste edelliseen sekuntiin nähden (nyt tavoiteltu frame-rate 70 fps)
      hidaste = hidaste * (kerrat / 70)
      'näyte ajastuksen tarkkuudesta
      PRINT hidaste, kerrat
      'uusi aika talteen ja laskuri nollaksi
      aika = TIME$
      kerrat = 0
   END IF
LOOP UNTIL INKEY$ = CHR$(27)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta