Page 1 of 1

Simple Fountain program

Posted: Wed Apr 21, 2004 2:43 am
by DriakTravo

Code: Select all

  EndStructure
  NewList Fader.Fader()
  NewList Water.Water()
  
;- Procedures
  Procedure CreateFader(X.f,Y.f,Width.f,Height.f)
    AddElement(Fader())
    Fader()\X = X
    Fader()\Y = Y
    Fader()\Width = Width
    Fader()\Height = Height
    Fader()\Fade = 0
    Fader()\FadeDir = 0
  EndProcedure
  Procedure UpdateFader()
    If CountList(Fader()) > 0
      ResetList(Fader())
      StartDrawing(ScreenOutput())
      While NextElement(Fader())
        If Fader()\FadeDir = 0
          Fader()\Fade + 10
          If Fader()\Fade > 200
            Fader()\FadeDir = 1
          EndIf
        Else
          Fader()\Fade - 10
          If Fader()\Fade < 10
            DeleteElement(Fader())
            Continue
          EndIf
        EndIf
        Line(Fader()\X,Fader()\Y,Fader()\Width,Fader()\Height,RGB(0,0,Fader()\Fade))
      Wend
      StopDrawing()
    EndIf
  EndProcedure
  Procedure CreateWater()
    AddElement(Water())
    Water()\X = 100
    Water()\Y = 960
    Water()\XS = ((Random(PowerSide*200)+PowerSide*200)/100)+5
    Water()\YS = PowerUp
    Water()\NOH = 1
  EndProcedure
  Procedure UpdateWater()
    If CountList(Water()) > 0
      ResetList(Water())
      While NextElement(Water())
        CreateFader(Water()\X,Water()\Y,Water()\XS,Water()\YS)
        Water()\X + Water()\XS
        Water()\Y + Water()\YS
        If Water()\YS < Gravity
          Water()\YS + Force
        EndIf
        If Water()\X > 1280 Or Water()\X < 0
          DeleteElement(Water())
          Continue
        EndIf
        If Water()\Y > 960        
          DeleteElement(Water())
          Continue
        EndIf
      Wend
    EndIf
  EndProcedure

;- Main Loop
Repeat
  ClearScreen(0,0,0)
  UpdateFader()
  FlipBuffers()
  UpdateWater()
  
  If Counter = TimeDelay
    Counter = 0
    PowerUp.l = -(Random(Power)+2)
    CreateWater()
    Beep_(-(PowerUp*100),50)
  EndIf
  Counter + 1
  
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_All)
    End
  EndIf
It's fun! . . . Sorry, I haven't posted anything in a while, figure I needed to post something.

Re: Simple Fountain program

Posted: Wed Apr 21, 2004 2:44 am
by DriakTravo

Code: Select all

;_______________________
;-     Introduction     \___
;---------------------------\
;_.-._.-._.-._.-._.-._.-._.-
;>>>>> Fountian v1.00 <<<<<<
;_.-._.-._.-._.-._.-._.-._.-

;Written by Driak Travo
;Have fun changing the variables! ;)

;_______________________
;- Start Of Program Code\___
;---------------------------\

;- Init Devices
If InitMouse() = 0
  MessageRequester("Error","Error loading Mouse!")
EndIf
If InitKeyboard() = 0
  MessageRequester("Error","Error loading Keyboard!")
EndIf
If InitSprite() = 0
  MessageRequester("Error","Error loading DirectX!")
EndIf

;- Open Screen
If OpenScreen(1280,960,32,"") = 0
  End
EndIf

;- Variables
SkyColorRed = 0
SkyColorGreen = 0
SkyColorBlue = 0

Global PowerUp.l
Global PowerSide.l
Global Gravity.l
Global Force.f
Power = 25
PowerSide.l = 1
Gravity.l = 100
Force.f = 0.40
TimeDelay = 20

;- Structures
  Structure Fader
    X.f
    Y.f
    Width.f
    Height.f
    Fade.l
    FadeDir.l
  EndStructure
  Structure Water
    X.f
    Y.f
    XS.f
    YS.f
    NOH.f
  EndStructure
  NewList Fader.Fader()
  NewList Water.Water()
  
;- Procedures
  Procedure CreateFader(X.f,Y.f,Width.f,Height.f)
    AddElement(Fader())
    Fader()\X = X
    Fader()\Y = Y
    Fader()\Width = Width
    Fader()\Height = Height
    Fader()\Fade = 0
    Fader()\FadeDir = 0
  EndProcedure
  Procedure UpdateFader()
    If CountList(Fader()) > 0
      ResetList(Fader())
      StartDrawing(ScreenOutput())
      While NextElement(Fader())
        If Fader()\FadeDir = 0
          Fader()\Fade + 10
          If Fader()\Fade > 200
            Fader()\FadeDir = 1
          EndIf
        Else
          Fader()\Fade - 10
          If Fader()\Fade < 10
            DeleteElement(Fader())
            Continue
          EndIf
        EndIf
        Line(Fader()\X,Fader()\Y,Fader()\Width,Fader()\Height,RGB(0,0,Fader()\Fade))
      Wend
      StopDrawing()
    EndIf
  EndProcedure
  Procedure CreateWater()
    AddElement(Water())
    Water()\X = 100
    Water()\Y = 960
    Water()\XS = ((Random(PowerSide*200)+PowerSide*200)/100)+5
    Water()\YS = PowerUp
    Water()\NOH = 1
  EndProcedure
  Procedure UpdateWater()
    If CountList(Water()) > 0
      ResetList(Water())
      While NextElement(Water())
        CreateFader(Water()\X,Water()\Y,Water()\XS,Water()\YS)
        Water()\X + Water()\XS
        Water()\Y + Water()\YS
        If Water()\YS < Gravity
          Water()\YS + Force
        EndIf
        If Water()\X > 1280 Or Water()\X < 0
          DeleteElement(Water())
          Continue
        EndIf
        If Water()\Y > 960        
          DeleteElement(Water())
          Continue
        EndIf
      Wend
    EndIf
  EndProcedure

;- Main Loop
Repeat
  ClearScreen(0,0,0)
  UpdateFader()
  FlipBuffers()
  UpdateWater()
  
  If Counter = TimeDelay
    Counter = 0
    PowerUp.l = -(Random(Power)+2)
    CreateWater()
    Beep_(-(PowerUp*100),50)
  EndIf
  Counter + 1
  
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_All)
    End
  EndIf
ForEver
It's fun! . . . Sorry, I haven't posted anything in a while, figure I needed to post something.[/quote]

Posted: Wed Apr 21, 2004 8:18 am
by LarsG
nice effect..
I had to change the resolution abit tho, as it was somewhat odd, and my gfx-card didn't handle it..