Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Meitriks

Sivun loppuun

sooda [11.04.2004 11:54:02]

#

Meitriks! Älkää vaan luulko että matkin tämän idean tuosta https://www.ohjelmointiputka.net/koodivinkit/24290-vb-net-matrix-koodi, tein tän oplilla psionilleni jo ainaski viikkoa ennen kuin toi vinkki ilmestyi mutta tää sitten oli näköjään(mustavalkoisenakin) liian tehoa vievä ohjelma sille 8MHz Psion-raukalleni ja siinä toimi yks rivi ja sekin 1fps :D
Eli: Musta tausta josta tippuu merkkirivejä joissa merkit jää näytölle siihen kohtaan missä on ja väri liukuu vihreän sävyinä kirkaammaksi alas päin. Ei siis ihan matriks tyylinen mutta supah-hieano mun kustomi! noh, exestä saa selvää enemmän kuin tästä tekstistä:
http://sooda.dy.fi/foo/meitriks/ <---tuolla on kaikki filut.

Const ne = 30 'tippuvia rivejä yhteensä
Const Min_Pituus = 4, Max_Pituus = 15 'rivin kokorajat
Private x(ne), y(ne), p(ne), m(ne), n(ne) 'rivin aloitusx ja y ja pituus, merkit ja nopeus.
Private Sub Form_Load()

    Show 'näkyviin :P
    Move Left, Top, 640 * 15, 480 * 15 'kivan kokoiseksi
    Caption = "Initoidaan Meitriks..." 'kerrotaan mitä tehdään jos o hidas kone
    Randomize Timer 'alustetaan visual basicin sisäänrakennettu lineaarinen satunnaislukugeneraattori (:D)
    AutoRedraw = True 'mukava ominaisuus piirtäessä
    picture1.BackColor = 0 'taustavärit nätin mustaksi
    BackColor = 0 '...
    picture1.ScaleMode = 3 'picture1pipiktuurilaatikko pikselimoodiseksi, twipit haisee
    ScaleMode = 3 'haisee edelleen, hyh
    picture1.AutoRedraw = True 'supah ominaisuus piirtäessä
    picture1.Font = "Courier New" 'kaunis fontti, tasavälinen=kiva
    picture1.FontSize = 12 'mukava koko
    picture1.Visible = False 'picture1pipuskuripiirtoloota piiloon
    For i = 1 To ne 'alustetaan rivit
        arvo i
    Next
    Timer1.Interval = 50 'ja ajastin päälle
    Caption = "Meitriks" 'ja otsikko kuntoon

End Sub 'ja menoks :P

Private Sub Form_Resize()

    picture1.Move 0, 0, ScaleWidth, ScaleHeight 'kuvapuskuri oikean kokoiseksi

End Sub

Private Sub Form_Unload(Cancel As Integer)

    End 'joskus jää piiloon luuppaamaan johonki do...looppiin

End Sub

Private Sub Timer1_Timer()

    picture1.Cls 'vanhat roskat veks
    For i = 1 To ne 'siirretään joka riviä
        juttu = y(i) - p(i) 'mihin asti piirretään
        If juttu < 0 Then juttu = 0 'ei piirretä formin ulkopuolelle
        For t = y(i) To juttu Step -1 'piirretään rivi päästä häntään
            DoEvents 'ettei ohjelma tilttaa, nimim. kokemusta on
            picture1.CurrentX = picture1.FontSize * x(i) 'siirretään piirtokohta oikeaan kohtaan
            picture1.CurrentY = picture1.FontSize * t '...
            picture1.ForeColor = RGB(0, picture1.CurrentY / picture1.ScaleHeight * 200 + 55, 0) 'väri kivaksi
            picture1.Print Mid(m(i), y(i) - t + 1, 1) 'ja ulostetaan merkki
        Next 'seuraava rivi
        y(i) = y(i) + n(i) 'tiputetaan merkkiä alas
        If juttu >= ScaleHeight \ picture1.FontSize Then arvo i 'jos rivi menee alas niin tehdään uus rivi
        skroll i 'skrollataan rivin merkit taaksepäin niin että merkit pysyy hieanosti samassa kohdassa näytöllä
    Next
    Picture = picture1.Image 'näytetään kuva

End Sub

Sub arvo(i) 'alustaa rivin i

    x(i) = ran(2, ScaleWidth \ picture1.FontSize) 'vasemmalta koordinaatti
    y(i) = 1 'ylhäälle
    p(i) = ran(Min_Pituus, Max_Pituus) 'pituus
    m(i) = ""
    For t = 1 To p(i) 'ja merkit
        m(i) = m(i) + Chr(ran(33, 255))
    Next
    n(i) = ran(1, 5) 'nopeus

End Sub

Sub skroll(i) 'skrollaa rivin merkkejä yhden askeleen taaksepäin ja arpoo uuden merkin päähän
              'niin että tulee hieano ehvekti, merkit jää siihen ruudulle silleen jännästi(:P)
    For t = p(i) To 1 + n(i) Step -1 'skrollataan
        DoEvents
        Mid(m(i), t, 1) = Mid(m(i), t - n(i), 1)
    Next
    For t = 1 To n(i) 'arvotaan uudet merkit
        Mid(m(i), t, 1) = Chr(ran(33, 255))
    Next

End Sub

Function ran(a, b) 'arpoo randomuusisti a ja b väliltä

    ran = Int((a - b + 1) * Rnd + b)

End Function

nlampola [15.04.2004 17:39:17]

#

Ihan hyvältä näyttää :)

hunajavohveli [15.04.2004 18:42:58]

#

Hienoin Matrix-teksti minkä olen tähän asti nähnyt. Ja kerrankin sellainen VB-koodivinkki, jonka toiminnan minäkin kykenen ymmärtämään. :)

kenkku [15.04.2004 19:17:22]

#

Hieno on, mutta ei niitä kommentteja tarvitse joka riville tökkiä ;)

ajv [15.04.2004 19:18:31]

#

Hienolta näyttää ainakin näin alottelijan silmissä! Täytyy taas lähtee tota soveltamaan... Sillai oppii parhaiten, varsinkin jos osaa vähänkään perusteita.

ajv [15.04.2004 19:21:22]

#

kenkku kirjoitti:

Hieno on, mutta ei niitä kommentteja tarvitse joka riville tökkiä ;)

Päinvastoin! Todella hyvä että on paljon kommenttia.

hunajavohveli [15.04.2004 21:15:32]

#

Heh, minäkin olin sattumalta tehnyt juuri samanlaisen funktion kuin tuo ran, joskin eri nimellä. Tuosta oppii muuten hienosti myös, miten PictureBoxiin kirjoitetaan ja vaihdetaan fonttia yms.

Fisher [16.04.2004 22:01:09]

#

WWW-OOO-WWW!!

sooda [17.04.2004 18:23:50]

#

Jhes, tulipas kivaa kommenttia :) nyt on kiva olo :P

ja voffeli, tuo funkkari (tai siis sen kaava) on suoraan vb:n helpistä, ja se lukee kaikkialla, qb:ssäkin, että miten saa kokonaislukuja a ja b välillä(siellä se kyllä on upper- ja lowerbound :P) eli ei varmaan ihme sattuma :)

hunajavohveli [11.05.2004 16:40:13]

#

Nyt kun selailin helppejä, niin jo löytyi. En kyllä muista, olinko nähnyt sen joskus sieltä, vai keksinyt omasta päästä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta