Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: LINE ja DRAW

Grey [12.12.2002 22:06:25]

#

Ongelmani näiden kahden kanssa on yksinkertainen, mutta ongelma kuitenkin. En ole lukemisesta huolimatta vieläkään täysin varma miten noita käskyjä käytetään kunnolla. Esim. aloituspisteen määrittäminen on ollut melkoisen hankalaa minulle, ja myös se missä muodossa niitä käytetään, ja niin pois päin. Kyllä, olen lukenut Qbasicin ohjeet, jotenka siinä ei siis ongelmaa. Jos joku ymmärtää nuo käskyt, pyydän häntä antamaan selityksen niistä, että pääsen niitä käyttämään. Kiitokset jo etukäteen..

-Grey-

tomaattigeeni [12.12.2002 22:41:27]

#

DRAW:sta mulla ei ole tarkempaa tietoa mutta koitan nyt jotenkin selvittää tota LINEä.

eli näinpiirretään viiva vasemmasta reunasta 10 pikseliä näytön yläreunasta alaspäin
Viiva loppuu kohtaan 100 pikseliä näytön vasemmasta reunasta oikealle ja 100 pikseliä yläreunasta alaspäin:

screen 13
LINE (0, 10)-(100, 100), 1  ' 1 = väri. väri on siis sininen.

jos halutaan piirtää neliö, se tehdään näin:

LINE (20,10)-(50,50), 1, B

Esimerkki piirtää neliön vasemman yläkulman kohtaan 20,10 (20 = x, 10 = y)
Vasen alareuna tulee kohtaan 20, 50. Oikea yläreuna tulee kohtaan 50,10 ja oikea alareuna kohtaan 50, 50.
1 viittaa taas väriin (sininen tässä tapauksessa) ja B kertoo että tehdään neliö. Jos neliö halutaan laittaa sisältäkin siniseksi, B:n paikalle pitää laittaa BF (F = Filled)

Antti Laaksonen [12.12.2002 22:52:28]

#

Kirjoitetaan nyt vaihteeksi kunnolla tekstiä :) Luonnollisesti näitä grafiikkakomentoja käyttäessä on oltava ensin asetettu grafiikkatila SCREEN:illä.

1. LINE-komento

LINE-komennolla voit piirtää eri värisiä viivoja sekä täytettyjä ja täyttämättömiä nelikulmioita. Komennon syntaksi on:

LINE [[STEP](x1,y1)] - [STEP](x2,y2) [,[vari] [,[B[F]] [,tyyli]]]

Jossa parametrit ovat samassa järjestyksessä:

STEP - x1 ja y1 lasketaan edellisestä piirretystä kohdasta
x1 - vasemman yläkulman x
y1 - vasemman yläkulman y
STEP - x2 ja y2 lasketaan edellisestä piirretystä kohdasta
x2 - oikean alakulman x
y2 - oikean alakulman y
vari - viivan/nelikulmion väri
B - piirretään nelikulmio viivan sijasta
F - piirretty nelikulmio täytetään
tyyli - reunuksen kuvioinnin määritys (lisätietoa QB:n ohjeessa)

Esimerkkiohjelma:

SCREEN 12
LINE (50, 50)-(100, 100)
LOCATE 15: PRINT "Tavallinen viiva pisteestä 50,50 pisteeseen 100,100"
SLEEP
CLS
LINE (50, 50)-(100, 100), 5, B
LOCATE 15: PRINT "Täyttämätön violetti nelikulmio"
SLEEP
CLS
LINE (50, 50)-(100, 100), 5, BF
LOCATE 15: PRINT "Sama nelikulmio täytettynä"
SLEEP
CLS
LINE (50, 50)-(100, 100), , B, &HF0F
LOCATE 15: PRINT "Katkoviivainen nelikulmio"

2. DRAW-komento

DRAW-komento on monipuolinen piirtokomento, jolle annetaan merkkijonomuotoista piirtodataa samalla tavalla kuin PLAY-komennolle annetaan soitettava melodia merkkijonoina.

Merkkijonoissa voi käyttää seuraavia piirtokomentoja:

[N] - seuraava viiva piirretään
[B] - seuraavaa viivaa ei piirretä

U[n] - siirrytään ylös n:n verran
D[n] - siirrytään alas n:n verran
L[n] - siirrytään vasemmalle n:n verran
R[n] - siirrytään oikealle n:n verran

E[n] - siirrytään yläoikealle n:n verran
F[n] - siirrytään alaoikealle n:n verran
G[n] - siirrytään alavasemmalle n:n verran
H[n] - siirrytään ylävasemmalle n:n verran

Ja seuraavia väri-, koko- ja kulmakomentoja:

Cn - vaihtaa piirtoväriksi n:n
Pb,p - täyttää suljetun alueen, jonka reunan väri on b värillä p

Sn - määrittää piirrettävien viivojen koon (oletus: 4)

An - piirtää jatkossa n*90 asteen kulmassa, kun n on 0-3
TAn - piirtää jatkossa n asteen kulmassa, kun n on 0-360

Esimerkkiohjelma:

SCREEN 13
DRAW "bm160,100" 'siirtyy näytön keskelle
DRAW "be50" 'siirtyy neliön oikeaan ylänurkkaan
DRAW "d100l100u100r100" 'piirtää neliön
DRAW "bg50" 'palaa neliön keskipisteeseen
DRAW "p1,15" 'värittää neliön

progo [13.12.2002 13:35:15]

#

Miten se Antti nuin pitkiä kirjottelee?-) Kopioipa nuo ja tee uusi opas, sehän on tuossa valmiina.. :)

thefox [13.12.2002 14:28:23]

#

Selvennetäänpä tuosta tuo LINE:n style -parametrikin...
Jos meillä on binääristringi 0101010101010101b (heksadesimaali 5555h), ja se annetaan parametrina LINE:lle, piirtää käsky vain viivan (tai laatikon, toimii vain reunojen kanssa) joka toisen pikselin.
Eli:

LINE (50, 50)-(100, 100), 5, B, 21845
' Täyttämätön violetti nelikulmio, piirretään joka toinen piste

Vastaus

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

Tietoa sivustosta