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
Ihan hyvältä näyttää :)
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. :)
Hieno on, mutta ei niitä kommentteja tarvitse joka riville tökkiä ;)
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.
kenkku kirjoitti:
Hieno on, mutta ei niitä kommentteja tarvitse joka riville tökkiä ;)
Päinvastoin! Todella hyvä että on paljon kommenttia.
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.
WWW-OOO-WWW!!
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 :)
Nyt kun selailin helppejä, niin jo löytyi. En kyllä muista, olinko nähnyt sen joskus sieltä, vai keksinyt omasta päästä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.