Piirtää kuvan (suomenlippu, jonka päällä on tyhmän näköinen naama), liikuttaa sitä ruudulla ja pomppauttaa kuvan toiseen suuntaan, kun se törmää kuvan laitaan.
' ESIVALMISTELUT:
DIM kuva(5000) ' Varaa kuvalle taulukon
RANDOMIZE TIMER
CONST pii = 3.141592654# ' piin likiarvo, sitä tarvitsee ympyrän osan piirrossa
x = 230 ' Kuvan vasemman yläkulman x-koordinaatti
y = 140 ' Kuvan vasemman yläkulman y-koordinaatti
kokox = 150 ' Kuvan leveys
kokoy = 100 ' Kuvan korkeus
' KUVAN PIIRTÄMINEN:
SCREEN 12
' LIPUN PIIRTÄMINEN:
LINE (x, y)-(x + 150, y + 100), 1, BF ' piirtää pohjan lipulle
LINE (x, y)-(x + 50, y + 40), 15, BF ' Lipun
LINE (x, y + 60)-(x + 50, y + 100), 15, BF ' neljän
LINE (x + 70, y)-(x + 150, y + 40), 15, BF ' valkoisen
LINE (x + 70, y + 60)-(x + 150, y + 100), 15, BF ' neliön piirto
' NAAMAN PIIRTÄMINEN
CIRCLE (x + 60, y + 50), 40, 4 ' Naaman ympyrä
LINE (x + 45, y + 35)-(x + 46, y + 36), 4, B ' Silmä
LINE (x + 75, y + 35)-(x + 76, y + 36), 4, B ' Toinen silmä
CIRCLE (x + 60, y + 60), 15, 4, pii + .2, 2 * pii - .2 ' Suu
CIRCLE (x + 60, y + 50), 2, 4 ' Nenä
' KUVAN LIIKUTTAMINEN:
suunta = INT(RND * 4 + 1) ' Arpoo lähtösuunnan
DO
GET (x, y)-(x + kokox, y + kokoy), kuva ' Tallentaa kuvan taulukkoon
SELECT CASE suunta ' Valitsee kuvan liikuttamissuunnan
CASE 1
x = x + 1 ' Siirtää yhden pikselin alas ja oikealle
y = y + 1
CASE 2
x = x + 1 ' Siirtää yhden pikselin ylös ja oikealle
y = y - 1
CASE 3
x = x - 1 ' Siirtää yhden pikselin alas ja vasemmalle
y = y + 1
CASE 4
x = x - 1 ' Siirtää yhden pikselin ylös ja vasemmalle
y = y - 1
END SELECT
IF x <= 0 AND suunta = 3 THEN suunta = 1 ' Tarkastaa, onko kuva menossa ulos ruudulta, jos on, suunta muutetaan toiseksi
IF x <= 0 AND suunta = 4 THEN suunta = 2
IF x >= 639 - kokox AND suunta = 1 THEN suunta = 3
IF x >= 639 - kokox AND suunta = 2 THEN suunta = 4
IF y <= 0 AND suunta = 2 THEN suunta = 1
IF y <= 0 AND suunta = 4 THEN suunta = 3
IF y >= 479 - kokoy AND suunta = 1 THEN suunta = 2
IF y >= 479 - kokoy AND suunta = 3 THEN suunta = 4
PUT (x, y), kuva, PSET ' Lataa kuvan taulukosta ja laittaa sen uusiin koordinaatteihin
LINE (x - 1, y - 1)-(x + kokox + 1, y + kokoy + 1), 0, B ' Poistaa vanhan kuvan rippeet
LOOP UNTIL INKEY$ = CHR$(27) ' Esci lopettaa...Tuosta saa vähän nopeamman, jos siirtää GET-komennon ennen DO-silmukan alkua.
Oho! Niipäs saisikin, mutta meillä se liikkuu ihan sopivalla nopeudella noinkin.
Juup onhan tuo hieno...
Olis tuon voinu vähän kätevämminkin toteuttaa ja sisennyksiä jäin kaipaamaan.. :-)
Mihin olisin tuossa laittanut sisennyksiä? Itse käytän niitä vain loopeissa, IF-lauseissa ja SELECT CASEissa...
Minä ainakin tykkään sisentää vielä nuo "CASE X":n jälkeiset lauseet, sekä tietysti "DO: LOOP" yms.
------
Mihin olisin tuossa laittanut sisennyksiä? Itse käytän niitä vain loopeissa, IF-lauseissa ja SELECT CASEissa...
------
Eikös DO:LOOP olekin silmukka (ns. looppi)?
ja sitten tota sisennys väliä voisi pienentää 2 niin on kivempi kattookkin. ja ei ihan kaikkia printtejä tarvi kommentoida
Juu, kiitos neuvoista. Voisin ottaa ne huomioon seuraavaa vinkkiä väsätessäni... ;)
haa! suomen lipun piirto-ohjeet!
naama on todellakin ruma
Aihe on jo aika vanha, joten et voi enää vastata siihen.