Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: ASCII- pelissä näkökyky

Wukkopi [22.11.2005 08:19:59]

#

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

Antti Laaksonen [23.11.2005 15:44:12]

#

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.

Wukkopi [24.11.2005 10:19:03]

#

Kiitos ja huomasin vielä itsekin, että jos käyttää komentoa "FIX" komennon "INT" sijaan, niin seinäongelmakin häviää.

Vastaus

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

Tietoa sivustosta