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ä.
Tämä voi toimia
Q = TIMER DO: LOOP UNTIL TIMER - Q > .2
Säädä tota desmaalia Q > jälkeen
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)
Aihe on jo aika vanha, joten et voi enää vastata siihen.