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ä?
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,9lainaus:
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/
Aihe on jo aika vanha, joten et voi enää vastata siihen.