Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: DATA taulukossa oleva kuva vinoon?

Gwaur [26.07.2003 16:24:34]

#

Miten saa QBasicilla DATA-taulukossa olevan kuvan vaikka 73 asteen kulmaan?

Entäs jos laitan aluksen liikkumaan 2d-tähtikentän läpi GET/PUT-toiminnoilla, miten saan mahdolliset aluksen "alle" jääneet tähdet näkymään, kun alus siirtyy pois tähden edestä?

Antti Laaksonen [27.07.2003 00:11:57]

#

lainaus:

Miten saa QBasicilla DATA-taulukossa olevan kuvan vaikka 73 asteen kulmaan?

Esimerkiksi näin:

DEFINT A-Z
SCREEN 13

l% = 24         'kuvan leveys
k% = 20         'kuvan korkeus
k! = 73         'piirtokulma asteina
kx% = 160       'keskipisteen x
ky% = 100       'keskipisteen y

'luetaan kuva DATAsta taulukkoon
DIM t(l%, k%) AS INTEGER
FOR j = 1 TO k%
  FOR i = 1 TO l%
    READ t(i, j)
  NEXT
NEXT

'kulma radiaaneina
k! = k! * (3.14159 / 180)
'matka keskipisteestä kulmaan
p! = SQR((l / 2) ^ 2 + (k / 2) ^ 2)
'ensimmäinen suorakulmion kulmista
a! = ATN(1) + k! + 3.14159
'lasketaan neljän kulman koordinaatit
FOR i = 1 TO 4
  x!(i) = SIN(a!) * p!
  y!(i) = COS(a!) * p!
  a! = a! - 3.14159 / 2
NEXT

'vaakasuuntainen askel
xa1! = (x!(2) - x!(1)) / 24
ya1! = (y!(2) - y!(1)) / 20
'pystysuuntainen askel
xa2! = (x!(4) - x!(1)) / 24
ya2! = (y!(4) - y!(1)) / 20

'aloituskohta
x! = x!(1)
y! = y!(1)
FOR i = 1 TO k%
  FOR j = 1 TO l%
    'siirretään koordinaatteja vaakasuunnassa
    x! = x! + xa1!
    y! = y! + ya1!
    'luetaan pisteen väri taulukosta
    v% = t(j, i)
    'piirretään piste
    LINE (kx% + x!, ky% + y!)-STEP(1, 1), v%, B
  NEXT
  'lisätään koordinaatteja pystysuunnassa
  x! = x!(1) + i * xa2!
  y! = y!(1) + i * ya2!
NEXT

DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,3,3,3,3,3,3,3,3,3,3,9,9,9,2,2,2,2,9,9,9,9
DATA 9,9,9,3,3,3,3,3,3,3,3,3,3,9,2,2,2,2,2,2,2,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,3,3,9,9,2,2,9,9,9,2,2,2,9,9
DATA 9,9,9,9,9,9,9,9,9,3,3,9,9,9,9,9,9,9,9,9,2,2,9,9
DATA 9,9,9,9,9,9,9,9,3,3,9,9,9,9,9,9,9,9,9,9,2,2,9,9
DATA 9,9,9,9,9,9,9,9,3,3,9,9,9,9,9,9,9,2,2,2,2,9,9,9
DATA 9,9,9,9,9,9,9,9,3,3,9,9,9,9,9,9,2,2,2,2,9,9,9,9
DATA 9,9,9,9,9,9,9,3,3,9,9,9,9,9,9,9,9,9,2,2,2,9,9,9
DATA 9,9,9,9,9,9,9,3,3,9,9,9,9,9,9,9,9,9,9,9,2,2,9,9
DATA 9,9,9,9,9,9,3,3,9,9,9,9,9,9,9,9,9,9,9,9,2,2,9,9
DATA 9,9,9,9,9,9,3,3,9,9,9,9,9,9,2,9,9,9,9,9,2,2,9,9
DATA 9,9,9,9,9,9,3,9,9,9,9,9,9,9,2,2,9,9,9,2,2,2,9,9
DATA 9,9,9,9,9,3,3,9,9,9,9,9,9,9,9,2,2,2,2,2,2,9,9,9
DATA 9,9,9,9,9,3,9,9,9,9,9,9,9,9,9,9,2,2,2,2,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
DATA 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9

lainaus:

Entäs jos laitan aluksen liikkumaan 2d-tähtikentän läpi GET/PUT-toiminnoilla, miten saan mahdolliset aluksen "alle" jääneet tähdet näkymään, kun alus siirtyy pois tähden edestä?

Aluksen peittämä tausta täytyy joka kerralla kopioida talteen, ja aluksen siirtyessä jälleen kopioida takaisin. Näin on tehty mm. sprite-oppaan esimerkkiohjelmassa, joten katsopa sieltä (https://www.ohjelmointiputka.net/oppaat/spriteo_qb.zip).

Vastaus

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

Tietoa sivustosta