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.