'rotate.bas
'Tyhjennetään ruutu, daa.
CLS
'320*200*256.
SCREEN 13
'Muuttujat joita tarvitaan.
DIM x1, x2, y1, y2, x3, y3, x4, y4 AS INTEGER
DIM kulma AS INTEGER
kulma = 0
'Pääloop.
WHILE (INKEY$ <> CHR$(27))
'Vähän normaalia nopeampi CLS.
LINE (0, 0)-(319, 199), 0, BF
'Annetaan arvot pisteille jotka yhdistetään.
'Edessä oleva "100 + ..." antaa kuviolle 100px
'lisätilaa pyörimiseen, jos sen jättää pois, kuvio
'pyörii aivan ruudun reunassa.
x1 = 100 + COS(kulma * .0175#) * 50
y1 = 100 + SIN(kulma * .0175#) * 50
'Ja kaikki ovelat matemaatikot myös huomaavat, että
'x ja y arvot lasketaan sinin ja cosinin avulla
'kertomalla kulma ns. hengellä, eli 0.0175:llä.
'Lopussa oleva "* 50" tarkoittaa kuvion kokoa.
x2 = x1 + 90
y2 = y1 + 90
x3 = x1 + 180
y3 = y1 + 180
x4 = x1 + 270
y4 = y1 + 270
'Yhdistetään pisteet.
LINE (x1, y1)-(x2, y2), 2
LINE (x2, y2)-(x3, y3), 2
LINE (x3, y3)-(x4, y4), 2
LINE (x4, y4)-(x1, y1), 2
'Kasvatetaan kulmaa pyörimisliikkeen saamiseksi.
kulma = kulma + 1
'Pyörähdys ympäri.
IF (kulma >= 360) THEN kulma = 0
'Tässä on asian avain!
'Jos ohjelmaa ei hidasta, niin se vilkkuu ja osaa
'kuviosta ei näy! Minä käytin hidastuksena tätä:
a = TIMER
DO: LOOP UNTIL TIMER - a > 0.01
'Mutta FreeBASICissa tämä:
' WAIT &H3DA, 8
'Oli todella hyvä. Hidastustavan voi vaihtaa oman
'mielensä mukaan.
WEND
ENDAihe on jo aika vanha, joten et voi enää vastata siihen.