; ==================================== ; Wave Effect by Eikon ; ; You are free to use all code without ; permission/credit. ; ; ==================================== Graphics 640, 480, 16, 2 AppTitle "Wave Effect by Eikon" SetBuffer BackBuffer() Image = LoadImage("terra.png") Global iWidth = ImageWidth(Image), iHeight = ImageHeight(Image) FPS = 0: Frames = 0: Time# = MilliSecs() + 1 ; FPS Counter Global gSpeed# = .05: gLimit# = 1 Global YDir#, Y#, Grav# Global uTime = MilliSecs() Type Strip Field Img Field X#, Y# Field Grav#, Dir End Type YDir = 0: Y# = 0: Grav# = 1 For X = 0 To iWidth s.Strip = New Strip s\X = X: s\Y = Y s\Grav = Grav: s\Dir = YDir Y = Y + Grav If YDir = 0 Then Grav = Grav - gSpeed If YDir = 1 Then Grav = Grav + gSpeed If Grav <= -gLimit Then YDir = 1 If Grav >= gLimit Then YDir = 0 Next While Not KeyDown(1) Frames = Frames + 1 If MilliSecs() >= Time FPS = Frames: Frames = 0: Time = Time + 1000 ; FPS Counter For s.Strip = Each Strip CopyRect s\X, 0, 1, iHeight, s\X, s\Y + 100, ImageBuffer(Image), BackBuffer() s\Y = s\Y + s\Grav If s\Dir = 0 Then s\Grav = s\Grav - gSpeed If s\Dir = 1 Then s\Grav = s\Grav + gSpeed If s\Grav <= -gLimit Then s\Dir = 1 If s\Grav >= gLimit Then s\Dir = 0 Next VMem$ = (TotalVidMem() - AvailVidMem())/1024 + "kbs" Temp$ = Mid(VMem$, 1, 1) Temp2$ = Mid(VMem$, 2, Len(VMem$)-1) VMem$ = Temp$ + "," + Temp2$ Color 255, 255, 255: Text 1, 1, "VMem: " + VMem$ Text 1, 16, "FPS: " + FPS Text 1, 32, "( Left/Right Arrow keys ) Speed: " + gSpeed Text 1, 48, "( Up/Down Arrow Keys ) Size: " + gLimit If KeyDown(203) Then gSpeed = gSpeed - .0001 uActive = 1 EndIf If KeyDown(205) Then gSpeed = gSpeed + .0001 uActive = 1 EndIf If KeyDown(200) Then gLimit = gLimit + .01 uActive = 1 EndIf If KeyDown(208) Then gLimit = gLimit - .01 uActive = 1 EndIf If uActive = 1 And MilliSecs() >= uTime + 25 Then Goto Regen Goto StepOut .Regen Delete Each Strip YDir = 0: Y# = 0: Grav# = 1 For X = 0 To iWidth s.Strip = New Strip s\X = X: s\Y = Y s\Grav = Grav: s\Dir = YDir Y = Y + Grav If YDir = 0 Then Grav = Grav - gSpeed If YDir = 1 Then Grav = Grav + gSpeed If Grav <= -gLimit Then YDir = 1 If Grav >= gLimit Then YDir = 0 Next uActive = 0 uTime = MilliSecs() .StepOut Flip False: Cls Wend End