Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Pomppiva kuva

Sivun loppuun

Sami [19.02.2003 18:11:53]

#

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...

Antti Laaksonen [20.02.2003 22:49:35]

#

Tuosta saa vähän nopeamman, jos siirtää GET-komennon ennen DO-silmukan alkua.

Sami [21.02.2003 10:59:00]

#

Oho! Niipäs saisikin, mutta meillä se liikkuu ihan sopivalla nopeudella noinkin.

Teme [21.02.2003 11:16:33]

#

Juup onhan tuo hieno...

thefox [21.02.2003 15:13:26]

#

Olis tuon voinu vähän kätevämminkin toteuttaa ja sisennyksiä jäin kaipaamaan.. :-)

Sami [21.02.2003 15:40:56]

#

Mihin olisin tuossa laittanut sisennyksiä? Itse käytän niitä vain loopeissa, IF-lauseissa ja SELECT CASEissa...

thefox [21.02.2003 18:25:55]

#

Minä ainakin tykkään sisentää vielä nuo "CASE X":n jälkeiset lauseet, sekä tietysti "DO: LOOP" yms.

Gwaur [21.02.2003 20:40:11]

#

------
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)?

snakari [21.02.2003 20:56:42]

#

ja sitten tota sisennys väliä voisi pienentää 2 niin on kivempi kattookkin. ja ei ihan kaikkia printtejä tarvi kommentoida

Sami [21.02.2003 22:05:07]

#

Juu, kiitos neuvoista. Voisin ottaa ne huomioon seuraavaa vinkkiä väsätessäni... ;)

Fisher [05.05.2004 19:16:04]

#

haa! suomen lipun piirto-ohjeet!

black cat [01.12.2009 13:39:43]

#

naama on todellakin ruma


Sivun alkuun

Vastaus

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

Tietoa sivustosta