Onko keksimääni menetelmää nopeampia ukon näkökyky menetelmiä? Koska omani vaikuttaa mielestäni vähän tönköltä.
CLS TYPE Tpos x AS INTEGER y AS INTEGER END TYPE DIM buf AS Tpos CONST pi = 3.14 sight = 10 FOR i = 1 TO 360 STEP 360 / (sight * 12) FOR f = 1 TO sight buf.x = INT(COS(i / 180 * pi) * f) buf.y = INT(SIN(i / 180 * pi) * f) LOCATE 20 + buf.y, 20 + buf.x PRINT "#" NEXT f NEXT i
Sinun tapasi on ihan hyvä - jos nopeus on riittävä lopullisessa ohjelmassa. Nyt ainakin näyttää siltä, että pelihahmo näkee kaikki ympäröivät ruudut. Seinien kanssa tuleekin hankalampaa. Mutta yhden nopeutusvinkin voin kertoa: On varsin työlästä muuttaa asteet radiaaneiksi jokaisessa kohdassa. Ovelampi tapa on toteuttaa koko silmukka niin, että muuttuja i on alusta asti radiaaneina. Siis tähän tapaan:
FOR i = 0 TO 2 * pi STEP (2 * pi) / (sight * 12)
Nyt erillisiä muunnoksia COS- ja SIN-funktioita varten ei tarvita. Toinen vinkki: Jos muuttujat ovat kokonaislukuja, kerro se myös QB:lle. Kokonaislukujen käyttö on nopeampaa kuin liukulukujen. Helpoin tapa on varmaan lisätä %-merkki muuttujan nimen perään. Radiaanit eivät kumminkaan ole kokonaislukuja.
Kiitos ja huomasin vielä itsekin, että jos käyttää komentoa "FIX" komennon "INT" sijaan, niin seinäongelmakin häviää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.