Efektit

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Efektit

Post by TheDuck »

VesQ wrote:
TheDuck wrote:Can't load image: Media/tileset.png
Heitä rivin 130

Code: Select all

img = LoadImage("Media/tileset.png")
tilalle tämä:

Code: Select all

img = LoadImage("Media/tileset.bmp")
EDIT: Oli muuten ihan kivoja matriiseja :). Tuohon tilesettiin kun heitti MakeEdgeDetectMatrix tai MakeSharpenMatrix niin oli aika kauhean näköistä, mutta muut toimivat oikein hienosti :). Yllättävän nopeitakin olivat, kun miettii CB:n hitautta.
Joo, kyllä mä sen itekkin osaan korjata, mutta ajattelin vain mainita että latexi muokkaisi alkuperäisen koodinkin toimivaksi kaikilla.
^^
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Efektit

Post by Latexi95 »

TheDuck wrote:
VesQ wrote:
TheDuck wrote:Can't load image: Media/tileset.png
Heitä rivin 130

Code: Select all

img = LoadImage("Media/tileset.png")
tilalle tämä:

Code: Select all

img = LoadImage("Media/tileset.bmp")
EDIT: Oli muuten ihan kivoja matriiseja :). Tuohon tilesettiin kun heitti MakeEdgeDetectMatrix tai MakeSharpenMatrix niin oli aika kauhean näköistä, mutta muut toimivat oikein hienosti :). Yllättävän nopeitakin olivat, kun miettii CB:n hitautta.
Joo, kyllä mä sen itekkin osaan korjata, mutta ajattelin vain mainita että latexi muokkaisi alkuperäisen koodinkin toimivaksi kaikilla.
Paihoittelen... Olin näköjään muuttanut "tileset.bmp":n png:ksi. :lol:
Korjasin virheen...
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: Efektit

Post by CCE »

Retroefekteistä kiinnostuneiden kannattaa vilkaista jo klassillista Laamatuttia. Tieto on jo pahasti vanhentunutta mutta sitä on paljon :D
Alla on sisällysluettelo, ja koko tutoriaalin voi napata täältä. Lukemiseen suosittelen vanhan MS-DOS enkoodauksen takia Notepad++:ssaa language valikosta kieleksi valittuna "MS-DOS Style".

Code: Select all

Laaman tie DJGPP-peliohjelmointiin versio 2.10. By Jokke / BAD KARMA
Sisällysluettelo:

1. Esittely
        1.1  Disclaimer
        1.2  Mistä uusin versio?
        1.3  Huomattavaa lukijalle
        1.4  Kenelle tämä on tarkoitettu?
        1.5  Kreditsit
        1.6  Versiohistoria
        1.7  Yhteystiedot
        1.8  Esimerkkien kääntäminen
2. Alkeet
        2.1  DJGPP - vaikea, suuri, monimutkainen, omituinen, hidas?
        2.2  Grafiikkaa - mitä se on?
        2.3  Paletti - hörhelöhameita ja tanssia?
3. Peruskikkoja
        3.1  Kaksoispuskuri - luonnonoikku, horoskooppi?
        3.2  PCX-kuvien lataus - vain vähän oikaisemalla
4. Bittikartat ja animaatiot
        4.1  Bitmapit - eikai vain suunnistusta?
        4.2  Animaatiot
        4.3  Pitääkö spriten törmätä? Entä coca-colan?
        4.4  Maskatut spritet
5. Hieman kehittyneempää yleistavaraa
        5.1  Näppäimistön käsittely - ja nyt meillä on hauskaa
        5.2  Fixed point matematiikka
        5.3  Lookup-tablet ja muita optimointivinkkejä
        5.4  Väliaikatulokset ja fontteja
        5.5  Hiirulainen, jokanörtin oma lemmikki
        5.6  Tekstitilan käsittely suoraan
6. Projektinhallinta
        6.1  Projektien hallinta - useat tiedostot
        6.2  Useiden tiedostojen projektit - kääntäminen ja hallinta
        6.3  Hieman automaatiota - tapaus Rhide
        6.4  Todellista guruutta - salaperäinen make
        6.5  Ammattimaista meininkiä - enginen teko
7. Kehittyneemmät yksityiskohdat
        7.1  Vauhtia peliin - ulkoisen assyn käyttö
        7.2  PIT - aikaa ja purkkaa
        7.3  Miten peli toimii yhtä nopeasti kaikilla koneilla
        7.4  Yleistä asiaa pelin levityksestä
        7.5  Interpolointi ja viivoja
        7.6  Vapaa skrollaus
        7.7  Sinit ja kosinit sekä plasmaa
        7.8  Paletin kvantisointi ja rekursio - Median cut
        7.9  Lisää paletin kvantisointia - Local K Mean
        7.10 VESA 2.0, rakenteet
        7.11 VESA 2.0, ensimmäiset keskeytykset
        7.12 Miten se todella pitäisi tehdä
8. Asioiden taustaa
        8.1  Datatiedostot - miten?
        8.2  Läpinäkyvyys ja sen vaihtoehto - shadebobit
        8.3  Motion blur - sumeeta menoa
        8.4  Vektorit pelimaailmassa
        8.5  Musiikkijärjestelmistä
        8.6  Plasma tekee comebackin - wobblerit
        8.7  Prekalkattuja pintoja - ja tunneli
        8.8  Lisää kivaa - zoomaus
        8.9  Polygoneista ja niiden fillauksesta
        8.10 Pari kivaa feikkimoodia
9. Liitteet, jatkeet ja muu roina
        9.1  Saatteeksi
        9.2  Hieman koodereiden jargonia
        9.3  Lähteet
        
atomimalli
Moderator
Moderator
Posts: 227
Joined: Wed Aug 29, 2007 3:55 pm

Re: Efektit

Post by atomimalli »

Tein tuommoisen valoefektin ja matkalla tuli tehtyä pikkuefektejä, jotka saa numeronäppäimistä myös näkyviin. Valoefektissä näkyy valokiiloja, jotka häikäisevät osuessaan kameraan. Ei mitään erityistä mutta kikkailua piirtojärjestyksien, randomizen, ajoituksien ja hiukan matematiikankin kanssa kumminkin. Näitä ei tullut erityisemmin optimoitua.

Code: Select all

'This is your first CoolBasic program! <-:D
SCREEN 640,480,32
Dim par(10,5) As Float
efu=8
Repeat
    Select efu
        Case 1
            ClsColor cbwhite
            vuor=(Timer()Mod 1800)<900
            Randomize (Timer()+vuor*900)/1800*17*3
            k=(Timer()+(vuor)*900) Mod 1800/10
            
            For i=1 To Min(k,90)
                a=Rand(360)
                c=Sin(Min(90,k-i))*127+128
                Color c,c,c
                Circle Rnd(-1,1)^3*320+320+Cos(a)*(k-i),Rnd(-1,1)^3*230+230+ Sin(a)*(k-i),40
            Next i
        Case 2
            ClsColor cbwhite
            vuor=(Timer()Mod 1800)<900
            Randomize (Timer()+vuor*900)/1800*17*3
            k=(Timer()+(vuor)*900) Mod 1800/10
            
            For i=1 To Min(k,90)
                a=Rand(360)
                c=Sin(Min(90,k-i))*127+128
                Color c,c,c
                Circle Rnd(-1,1)^3*320+320+Cos(a)*(k-i),Rnd(-1,1)^3*230+230+ Sin(a)*(k-i),40
            Next i
            
            Randomize (Timer()+(not vuor)*900)/1800*17*3
            k=(Timer()+(Not vuor)*900) Mod 1800/10
            
            For i=1 To Min(k,90)
                a=Rand(360)
                c=Sin(Min(90,k-i))*127+128
                Color c,c,c
                Circle Rnd(-1,1)^3*320+320+Cos(a)*(k-i),Rnd(-1,1)^3*230+230+ Sin(a)*(k-i),40
            Next i
        Case 3
            ClsColor cbwhite
            Randomize (Timer()+vuor*900)/1800*17*3
            k=(Timer()+(vuor)*900) Mod 1800/10
            a=Rand(360)
            x=Rnd(-1,1)^3*320+320
            y=Rnd(-1,1)^3*230+230
            For i=1 To Min(k,90)
                
                c=Sin(Min(90,k-i))*127+128
                Color c,c,c
                Circle x+Cos(a)*(k-i),y+ Sin(a)*(k-i),40
            Next i
        Case 4
            ClsColor cbblack
            Randomize (Timer()+vuor*900)/900*17*3*7
            Randomize Rand(12353245)
            k=(Timer()) Mod 900/5
            x=Rnd(-1,1)*320+320
            y=Rnd(-1,1)*230+230
            a=-GetAngle(x,y,320,230)
            For i=1 To Min(k,90)
                c=-Sin(Min(90,k-i))*127+128
                Color c,c,c
                Circle x+Cos(a)*(i),y+ Sin(a)*(i),40
            Next i
        Case 5
            m=3
            ClsColor cbblack
            Randomize (Timer())/1800*17*3*7
            Randomize Rand(12353245)
            k=(Timer()) Mod 900/5
            remstart
            k=(Timer()) Mod 900/5
            x=Rnd(-1,1)*320+320
            y=Rnd(-1,1)*230+230
            a=-GetAngle(x,y,320,230)
            remend
            For i=0 To m
                par(i,0)=(Timer()+Rand(900)) Mod 900/5
                par(i,1)=Rnd(-1,1)*320+320
                par(i,2)=Rnd(-1,1)*230+230
                par(i,3)=-GetAngle(par(i,1),par(i,2),320,230)
            Next i
            For i=1 To 90 Step 2
                c=Sin(i-90)*127+128
                For j=0 To m
                    If 1<90-k Then
                        'c=-Sin(Min(90,par(j,0)-i))*127+128
                        Color c,c,c
                        Circle par(j,1)+Cos(par(j,3))*(i),par(j,2)+ Sin(par(j,3))*(i),40
                    EndIf
                Next j
            Next i
        Case 6
            m=3
            ClsColor cbblack
            Randomize (Timer())/1800*17*3*7
            Randomize Rand(12353245)
            k=(Timer()) Mod 1800/5
            remstart
            k=(Timer()) Mod 1800/5
            x=Rnd(-1,1)*320+320
            y=Rnd(-1,1)*230+230
            a=-GetAngle(x,y,320,230)
            remend
            For i=0 To m
                par(i,0)=Rand(90)
                par(i,1)=Rnd(-1,1)*320+320
                par(i,2)=Rnd(-1,1)*230+230
                par(i,3)=-GetAngle(par(i,1),par(i,2),320,230)+Rand(-10,10)+i*10
            Next i
            For i=1 To 90
                c=Sin(i-90)*127+128
                For j=0 To m
                    If i<par(j,0)+k-2*(k-90)*(k>90) Then
                        'c=-Sin(Min(90,par(j,0)-i))*127+128
                        Color c,c,c
                        Circle par(j,1)+Cos(par(j,3))*(i+k-par(j,0)),par(j,2)+ Sin(par(j,3))*(i+k-par(j,0)),40
                    EndIf
                Next j
            Next i
        Case 7
            m=3
            ClsColor cbblack
            Randomize Int(Timer()*1.5)/2700*17*3*7
            Randomize Rand(12353245)
            k=Int(Timer()*1.5) Mod 2700/5
            remstart
            k=(Timer()) Mod 1800/5
            x=Rnd(-1,1)*320+320
            y=Rnd(-1,1)*230+230
            a=-GetAngle(x,y,320,230)
            remend
            For i=1 To m
                par(i,0)=-Rand(90)
                par(i,1)=Rnd(-1,1)
                par(i,2)=Rnd(-1,1)
                par(i,3)=-GetAngle(par(i,1),par(i,2),320,230)+Rand(-10,10)+i*10'+Rnd(-1,1)*(k/2-Rand(90))
            Next i
            For i=1 To 90 Step 2
                c=Sin(i-90)*127+128
                For j=1 To m
                    If i<par(j,0)+k-2*(k-180)*(k>90) Then
                        'c=-Sin(Min(90,par(j,0)-i))*127+128
                        Color c,c,c
                        p=-sin(i^1.12+k+par(j,0))*(20+i/5)'Sin(k^1.12-i^1.12+par(j,0)*4)*(90-i)
                        Circle par(j,1)+Cos(par(j,3))*(i+k+par(j,0))+Cos(par(j,3)+90)*p,par(j,2)+ Sin(par(j,3))*(i+k+par(j,0)-90)+Sin(par(j,3))*p,40
                    EndIf
                Next j
            Next i
        Case 8
            m=3
            'ClsColor cbblack
            Randomize (Timer())/1800/8*17*3*7
            Randomize Rand(12353245)
            k=(Timer()/8) Mod 900/5
            remstart
            k=(Timer()) Mod 900/5
            x=Rnd(-1,1)*320+320
            y=Rnd(-1,1)*230+230
            a=-GetAngle(x,y,320,230)
            remend
            ki#=1
            For i=1 To m
                par(i,0)=(Timer()+Rand(900)) Mod 900/5
                par(i,1)=Rnd(-1,1)*2+sin(timer()/4/3)*2'*320+320
                par(i,2)=Rnd(-1,1)*2+sin(timer()/4/5)*2'*230+230
                par(i,3)=-GetAngle(par(i,1),par(i,2),0,0)
                par(i,5)=Rnd(2,6)
                par(i,4)=atan(par(i,5)/Distance(par(i,1),par(i,2),0,0))
                'If ki>par(i,4) Then ki=par(i,4)
                ki=ki*Cos(par(i,4))^(1/par(i,5))
            Next i
            ki=(1-ki)^4*128
            kic=ki Shl 16+ ki Shl 8+ki'(ki/16.0)^2
            ClsColor 0,0,kic
            Cls
            a=Timer()
            For i=1 To 90 Step 2
                c=Sin(i-90)*127+128
                For j=1 To m
                    'If i<90-k Then
                        'c=-Sin(Min(90,par(j,0)-i))*127+128
                        z#=par(j,5)+i*Sin(par(j,5))+Sin(a/11)*2
                        x=(par(j,1)*320+Cos(par(j,3))*(i)*Cos(par(j,4)))/z
                        y=(par(j,2)*230+ Sin(par(j,3))*(i)*Cos(par(j,4)))/z
                        
                        Color c*Sin(par(j,4))+ki,c*Sin(par(j,4))+ki,(c/16.0)^2*Sin(par(j,4))+ki'(ki/16.0)^2'+kic
                        Circle (par(j,1)*320+Cos(par(j,3))*(i)*Cos(par(j,4)))/z+320-(180-i)/z,(par(j,2)*230+ Sin(par(j,3))*(i)*Cos(par(j,4)))/z+230-(180-i)/z,(180-i)/z*2
                    'EndIf
                Next j
            Next i
    EndSelect
         key=GetKey()
         if key then efu=Int(chr(key))
         SetWindow ""+FPS()+" koita vaan kaikkia numeroita"
    DrawScreen
Forever
E: vaihdoin selkeämmän kuvauksen :P
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Efektit

Post by koodaaja »

Curl noise -kikkailua, pienoinen liekkiefekti. Ylös ja alas säätää spawnimäärää.

Code: Select all

Box 40, 140, 320, 20, OFF
DrawScreen

Randomize 3

Const noisew = 400
Const noiseh = 300

Dim noisepattern(noisew, noiseh) As Float
Dim prenoise(noisew-1, noiseh-1) As Float
Dim noise(noisew-1, noiseh-1, 1) As Float

Function getinterpnoise#(i, j)
    ii# = Float(i/16.0)
    jj# = Float(j/16.0)
    aa# = noisepattern(RoundDown(ii#)+1, RoundDown(jj#))*(ii#-RoundDown(ii#))+noisepattern(RoundDown(ii#), RoundDown(jj#))*(1.0-(ii#-RoundDown(ii#)))
    bb# = noisepattern(RoundDown(ii#)+1, RoundDown(jj#)+1)*(ii#-RoundDown(ii#))+noisepattern(RoundDown(ii#), RoundDown(jj#)+1)*(1.0-(ii#-RoundDown(ii#)))
    Return bb#*(jj#-RoundDown(jj))+aa#*(1.0-(jj#-RoundDown(jj#)))
EndFunction

For i = 0 To noisew
    For j = 0 To noiseh
        noisepattern(i, j) = Rnd(-1.0, 1.0)
    Next j
    If i Mod 20 = 0 Then
        Box 40, 140, 320, 20, OFF
        Box 42, 142, 316*.333*i/float(noisew), 16
        DrawScreen
    EndIf
Next i

For i = 0 To noisew-1
    For j = 0 To noiseh-1
        prenoise(i, j) = getinterpnoise#(i, j)
    Next j
    If i Mod 20 = 0 Then
        Box 40, 140, 320, 20, OFF
        Box 42, 142, 316*.333*(1.0+i/float(noisew)), 16
        DrawScreen
    EndIf
Next i

For i = 1 To noisew-2
    For j = 1 To noiseh-2
        noise(i, j, 0) = (prenoise(i,j+1)-prenoise(i,j-1))*2.0
        noise(i, j, 1) = (prenoise(i+1,j)-prenoise(i-1,j))*2.0
    Next j
    If i Mod 20 = 0 Then
        Box 40, 140, 320, 20, OFF
        Box 42, 142, 316*.333*(2.0+i/float(noisew)), 16
        DrawScreen
    EndIf
Next i

Dim parts(9999, 2) As Float
For i = 0 To 1999
    parts(i,2)=-1.0
Next i
ptimer = Timer()

spawn = 4

Repeat
    spawn = spawn + UpKey() - DownKey()
    spawned = 0
    ra = 0
    Lock
        For i = 0 To 9999
            If parts(i,2)>0 Then
                ra = ra + 1
                parts(i,0) = parts(i,0)+noise(Int(parts(i, 0)), Int(parts(i, 1)), 0)
                parts(i,1) = parts(i,1)-noise(Int(parts(i, 0)), Int(parts(i, 1)), 1)-.4
                parts(i,2) = parts(i,2)-1.25
                col = max(0, Min(255, parts(i,2)))
                Color col, (col*.055)^2.0, 0
                For x = parts(i,0)-2 to parts(i,0)+2
                    Line x, parts(i,1)-2, x, parts(i,1)+2
                Next x
            Else
                If spawned<spawn Then
                    parts(i,0) = Rnd(80.0, 320.0)
                    parts(i,1) = Rnd(180.0, 200.0)
                    parts(i,2) = 255.0
                    spawned = spawned + 1
                EndIf
            EndIf
        Next i
    Unlock
    Color 255, 255, 255
    Text 10, 220, "fp"+"s is "+Str(FPS())
    Text 10, 240, "rendering "+Str(ra)+" particles"
    Text 10, 260, "spawning "+Str(spawn+1)+" per frame"
    DrawScreen
Forever
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Efektit

Post by MaGetzUb »

Ikivanha räpellys.

Code: Select all

Type Particles
    Field Particle_X As Float : Field Particle_Y As Float 
    Field Particle_PrevX As Float : Field Particle_PrevY As Float 
    Field Particle_ForceX As Float : Field Particle_ForceY As Float 
    Field Particle_W As Integer : Field Particle_H As Integer
EndType 

Dim scalarX As Float, scalarY As Float 
SCREEN 640, 480

img = LoadImage("Media\Map.BMP")



ResizeImage img, 640, 480
AddText "Hiiren vasemmalla näppäimellä kusinen efekti!"
Repeat 
    DrawImage img, 0, 0


    
    If MouseDown(1) Then 
        For i = 0 To 24
            size = Rand(10, 20)
            Effect(MouseX(), MouseY(), size, size, Rand(360), 5)
        Next i
    EndIf 
    Update_Effects()
DrawScreen
Forever 




Function Effect(x As Float, y As Float, w As Integer, h As Integer, ang As Float, speed As Float)
    Particle.Particles = New (Particles)
    Particle\Particle_X = x : Particle\Particle_Y = y    
    Particle\Particle_PrevX = x : Particle\Particle_PrevY = y 
    Particle\Particle_ForceX = Cos(ang) * speed
    Particle\Particle_ForceY = - Sin(ang) * speed
    Particle\Particle_W = w : Particle\Particle_H = h
End Function 

Function Update_Effects()
    For Particle.Particles = Each Particles
        Particle\Particle_PrevX = Particle\Particle_X
        Particle\Particle_X = Particle\Particle_X + Particle\Particle_ForceX
        Particle\Particle_PrevY = Particle\Particle_Y
        Particle\Particle_Y = Particle\Particle_Y + Particle\Particle_ForceY
        CopyBox Int(Particle\Particle_PrevX) - Particle\Particle_W / 2, Int(Particle\Particle_PrevY) - Particle\Particle_H / 2, Int(Particle\Particle_W), Int(Particle\Particle_H), Int(Particle\Particle_X) - ScreenWidth()/2 - Particle\Particle_W /2, Int(Particle\Particle_Y) - ScreenHeight()/2 - Particle\Particle_H / 2
        Particle\Particle_W = Particle\Particle_W - 1
        Particle\Particle_H = Particle\Particle_H - 1
        If (Particle\Particle_W * Particle\Particle_H) < 0 Then 
            Delete Particle
        EndIf             
    Next Particle
End Function 
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Efektit

Post by SPuntte »

En tiedä täyttääkö tämä efektin tunnusmerkit, mutta laitetaan nyt kuitenkin tänne.
Hiiri + WASD ohjaa.

Code: Select all

SAFEEXIT OFF
FrameLimit 40

SCREEN 640, 480, 32, 1

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
ObjectPickable kartta, ON

hahmo = MakeObject()
ObjectRange hahmo, 20
SetupCollision hahmo, kartta, 2, 4, 2

ShowMouse OFF

poimintoja = 75
Repeat
	poimintoja = Max(1, Min(poimintoja + MouseMoveZ(), 720))
	PointObjectToMouse(hahmo)
	MoveObject hahmo, 3*(KeyDown(cbKeyW)-KeyDown(cbKeyS)), 3*(KeyDown(cbKeyD)-KeyDown(cbKeyA))
	UpdateGame
	CloneCameraPosition hahmo
	DrawGame
	
	Color 0, 0, 0
	Box 0, 0, 1024, 600, ON
	Color 255, 0, 0
	DrawToWorld ON
		a# = ObjectAngle(hahmo) + Timer()/150.0
		For i = 1 To poimintoja
			RotateObject hahmo, a + i * 360.0/Float(poimintoja) 
			ObjectPick hahmo
			//Line ObjectX(hahmo), ObjectY(hahmo), PickedX(), PickedY()
			Dot PickedX(), PickedY()
		Next i
		Color 0, 255, 0
		Dot MouseWX(), MouseWY()
		Color 0, 0, 255
		Dot ObjectX(hahmo), ObjectY(hahmo)
	DrawToWorld OFF
	
	Color 255, 255, 255
	Text 5, 5, Str(FPS()) + " FPS"
	Text 5, 20, "poimintoja: " + poimintoja
	
	DrawScreen ON, ON
Until EscapeKey()

//© Bagard (R.I.P.)
Function PointObjectToMouse(ob)
    RotateObject ob, -GetAngle(ObjectX(ob), ObjectY(ob), MouseWX(), MouseWY())
EndFunction 
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Efektit

Post by MaGetzUb »

On se hieno, mutta Imo tuo olisi paremi skaalattuna pienemmäksi radariin. :)
Otinpa heti omankäden oikeuden ja muokkasin koodia. :D

Code: Select all

SAFEEXIT OFF
FrameLimit 40

SCREEN 640, 480, 32, 1

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
ObjectPickable kartta, ON

hahmo = MakeObject()
ObjectRange hahmo, 20
SetupCollision hahmo, kartta, 2, 4, 2

ShowMouse OFF

poimintoja = 75
Repeat
   poimintoja = Max(1, Min(poimintoja + MouseMoveZ(), 720))
   PointObjectToMouse(hahmo)
   MoveObject hahmo, 3*(KeyDown(cbKeyW)-KeyDown(cbKeyS)), 3*(KeyDown(cbKeyD)-KeyDown(cbKeyA))
   UpdateGame
   CloneCameraPosition hahmo
   DrawGame
   
   Color 0, 0, 0
   Box 0, 0, 1024, 600, ON
   Color 255, 0, 0
   DrawToWorld ON
      a# = ObjectAngle(hahmo) + Timer()/150.0
      For i = 1 To poimintoja
         oldx = x
         oldy = y
         RotateObject hahmo, a + i * 360.0/Float(poimintoja) 
         ObjectPick hahmo
         //Line ObjectX(hahmo), ObjectY(hahmo), PickedX(), PickedY()
         x = PickedX() : y = PickedY()
         Line oldx, oldy, x, y
      Next i
      Color 0, 255, 0
      Dot MouseWX(), MouseWY()
      Color 0, 0, 255
      Dot ObjectX(hahmo), ObjectY(hahmo)
   DrawToWorld OFF
   
   Color 255, 255, 255
   Text 5, 5, Str(FPS()) + " FPS"
   Text 5, 20, "poimintoja: " + poimintoja
   
   DrawScreen ON, ON
Until EscapeKey()

//© Bagard (R.I.P.)
Function PointObjectToMouse(ob)
    RotateObject ob, -GetAngle(ObjectX(ob), ObjectY(ob), MouseWX(), MouseWY())
EndFunction 
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Efektit

Post by tuhoojabotti »

Joo, jossain ketjun uumenissa mun wanha tutka-efekti löytyykin, joka käyttää täysin samaa periaatetta. Tuolla on kyllä hauska leikkiä. :)
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
mkn
Member
Posts: 61
Joined: Wed Feb 17, 2010 3:12 pm

Re: Efektit

Post by mkn »

Piirtää hienon kuvion :D

Muokkaa (xn) arvoa -100000-100000 saadaksesi erilaisia kuvioita :D

Code: Select all

SCREEN 1000,1000
xn=-100
DrawToWorld ON 

c=1300 'Vaihda väritystä :D
ClsColor cborange
For y=1 To 1000
For i=1 To 1000
xn+1 = xn^2 + c
Color 0+c,xn/2,3*xn
Dot xn/i,y

Dot (xn-xn-xn)/i,y

luku=xn/i

Dot y,xn/i
Dot y-y-y,xn/i
Dot y,luku-luku-luku
Dot y-y-y,luku-luku-luku
Dot luku-luku-luku,y-y-y
Dot luku,y-y-y
Next i
Next y
Repeat 

DrawScreen OFF 
Forever 


Last edited by mkn on Tue Jan 11, 2011 5:50 pm, edited 1 time in total.
"I'd love to change the world, but they won't give me the source code." - Anonymous
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Efektit

Post by MaGetzUb »

Ihan nätti, paitsi "kunnon" koodaajat ei yleensä päästä väriarvojen menemään RGB värityksellä yli 255. :) Tuo kuvio vaikuttaa jonkinsortin fraktaalilta. :P
Last edited by MaGetzUb on Tue Jan 11, 2011 3:46 pm, edited 1 time in total.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
mkn
Member
Posts: 61
Joined: Wed Feb 17, 2010 3:12 pm

Re: Efektit

Post by mkn »

Se on fraktaali :lol:
"I'd love to change the world, but they won't give me the source code." - Anonymous
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Efektit

Post by MaGetzUb »

Onko tuolla nimikin?
Tuli tehtyä tämmöne:

Code: Select all

Const SW = 80
Const SH = 60
Const GW = 1
Const GH = 1
SCREEN SW, SH, 32, 2


Repeat 


    A# = A# + 0.5

    Lock 
    For i = 0 To SW / GW
        For j = 0 To SH / GH
            'Color 0, 127 + Sin((a+(i*Sin(a+j+120))+(j*Cos(a+i+120))) * 5 + 120) * 127, 127*3+(127 + Sin((a+(i*Sin(a+j+240))+(j*Cos(a+i+240))) * 5 + 240) * 127)/2
            r# = 127 + Sin((a+(i*Sin(a+j))+(j*Cos(a+i))) * 5) * 127
            g# = 127 + Sin((a+(i*Sin(a+j+120))+(j*Cos(a+i+120))) * 5 + 120) * 127
            b# = 127 + Sin((a+(i*Sin(a+j+240))+(j*Cos(a+i+240))) * 5 + 240) * 127
            Color r, g, b
            For g = 0 To GH
               Line i*GW, j*GH+g, i*GW+GW, j*GH+g
            Next g
        Next j
    Next i
    Unlock


DrawScreen
Forever 
Last edited by MaGetzUb on Wed Jan 12, 2011 2:26 pm, edited 1 time in total.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Efektit

Post by Ruuttu »

Oikein hieno ja nopeakin. Mutta mikä on tuo d joka ei tee yhtään mitään?
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Efektit

Post by MaGetzUb »

Ruuttu wrote:Oikein hieno ja nopeakin. Mutta mikä on tuo d joka ei tee yhtään mitään?
Ettäkun aina unohtuu noita testihommia tuonne koodiin. Tein tuolla D:ä yhden 3D jutskan joka ei ollut hyvän näköinen. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: Efektit

Post by CCE »

MaGetzUb wrote:Onko tuolla nimikin?
Tuli tehtyä tämmöne:

Code: Select all

Const SW = 80
Const SH = 60
Const GW = 1
Const GH = 1
SCREEN SW, SH, 32, 2


Repeat 


    A# = A# + 0.5

    Lock 
    For i = 0 To SW / GW
        For j = 0 To SH / GH
            'Color 0, 127 + Sin((a+(i*Sin(a+j+120))+(j*Cos(a+i+120))) * 5 + 120) * 127, 127*3+(127 + Sin((a+(i*Sin(a+j+240))+(j*Cos(a+i+240))) * 5 + 240) * 127)/2
            r# = 127 + Sin((a+(i*Sin(a+j))+(j*Cos(a+i))) * 5) * 127
            g# = 127 + Sin((a+(i*Sin(a+j+120))+(j*Cos(a+i+120))) * 5 + 120) * 127
            b# = 127 + Sin((a+(i*Sin(a+j+240))+(j*Cos(a+i+240))) * 5 + 240) * 127
            Color r, g, b
            For g = 0 To GH
               Line i*GW, j*GH+g, i*GW+GW, j*GH+g
            Next g
        Next j
    Next i
    Unlock


DrawScreen
Forever 
Jeah komeahan tuo on! Minun silmään näytti kyllä enemmän plasmalta kuin fraktaalilta. Niin ja kun ilmeisesti taitoa löytyy niin mikäs estää osallistumasta introkisaankin, pari plasmaa ja tähtitaivas peräkkäin musalla varustettuna niin onkin käsissä jo ihan valmis tuotos ;)
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Efektit

Post by MaGetzUb »

Enhän maininnutkaan että omani olisi fraktaali. :D
Ottakaa muuten huomioon tuo resoluutio mitä ohjelmani käyttää, se on todella pieni.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Efektit

Post by Awaclus »

MaGetzUb, enpä ole vähään aikaan nähnyt yhtä hienoa efektiä. Osasyynä voi olla sekin, etten ole kaikkia testannut ja niitä muutenkin tulee harvakseltaan, mutta tuo oli joka tapauksessa älyttömän siisti.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Efektit

Post by MaGetzUb »

Worms tyylinen vesi:

Code: Select all

img_wfill = MakeImage(2, 180)
DrawToImage img_wfill
    Color 0, 0, 255
    Line 0, 0, 0, 180
    Line 1, 0, 1, 180
    For j = 0 To 20
        Color 128 - Max(0, 128 / 20 * j), 200 - Max(0, 200 / 20 * j), 255
        Dot 0, j
        Dot 1, j
    Next j    
    
DrawToScreen 


Repeat 

    SetWindow ""+FPS()
    
    a = a + 3
    
    i = 0
    While i < ScreenWidth()
        DrawImage img_wfill, i, 180+Sin(a+i*2)*10*Sin(a+i*5)
        i = i + ImageWidth(img_wfill)
    Wend 


DrawScreen
Forever 
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Efektit

Post by Timblex »

sini ja kosini kokeilujen tulos
a ja b muuttujia voi vaihtaa mutta 1-10 tulee tuollaisia kuvioita muilla(esim 1-100)
tulee kompassin tyyppisiä kuvioita :D
kommentoikaa!

Code: Select all

a=Rand(1,10) 'näitä voi muuttaa
b=Rand(1,10)
///////////////////////////
For i=0 To 360
x=200+Cos(i*a)*50 'ei ole pakko kertoa i-muuttujaa jos sitä ei kerro tulee ympyränmuotoisen latauspalkin näköinen 
y=150+Sin(i*b)*50
x2=200+Cos(i)*70 'kokeile mitä tapahtuu jos kerrot nämä
y2=150+Sin(i)*70
Line x,y,x2,y2
DrawScreen OFF 'piirretään ruutu mutta ei poisteta edellistä
Next i
For i=0 To 360
x=200+Cos(i*a)*50
y=150+Sin(i*b)*50
x2=200+Cos(i)*70
y2=150+Sin(i)*70
Color cbblack
Line x,y,x2,y2
DrawScreen OFF 'piirretään ruutu mutta ei poisteta edellistä
Next i
WaitKey 
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
Post Reply