Ilotulitus

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Ilotulitus

Post by KilledWhale »

Tässä olisi oma pienimuotoinen ilotulitukseni, jonka askartelin pari päivää sitten.

Code: Select all

SCREEN 640,480,16,0
FrameLimit 40
Type pp
  Field x As Float
  Field y As Float
  Field a As Float
  Field l 
  Field s As Float
  Field k
  Field r As Float
  Field g As Float
  Field b As Float
EndType
Repeat
If Timer()-alku>lauk Then
p.pp = New(pp)
p\x=Rand(ScreenWidth())
p\y=ScreenHeight()//alareunaan
p\a=Rand(70,110)
p\l=Timer()+Rand(2000,4000)
p\s=Rnd(2.1,4.4)
p\r=Rand(100,200)+50
p\g=Rand(100,200)+50
p\b=Rand(100,200)+50
alku=Timer()
lauk=Rand(1,1250)
EndIf
For p.pp = Each pp
p\x=p\x+Cos(p\a)*p\s
p\y=(p\y-Sin(p\a)*p\s)+gravity
If p\r>0 Or p\g>0 Or p\b>0 Then 
  If p\k=1 Then
    p\r=p\r-PI
    p\g=p\g-PI
    p\b=p\b-PI
  Else
    p\r=p\r-1
    p\g=p\g-1
    p\b=p\b-1
  EndIf 
EndIf
If p\k=0 Then
If Timer()-p\l > 0 Or p\x<0 Or p\x>ScreenWidth() Or p\y<0 Then
  num=Rnd(10,20)
  For i=0 To (360/(num))
    ap.pp = New(pp)
    ap\x=p\x
    ap\y=p\y
    ap\a=i*num
    ap\l=Timer()+Rand(2000,3000)
    ap\s=Rnd(0.2,2.0)
    ap\k=1
    ap\r=p\r
    ap\g=p\g
    ap\b=p\b
  Next i
  Delete p
EndIf
ElseIf Timer()-p\l>0 And p\k=1 Then
Delete p
EndIf
For i=1 To 5
Color (p\r-(i*2))*((p\r-(i*2))>=0),(p\g-(i*2))*((p\g-(i*2))>=0),(p\b-(i*2))*(p\b-(i*2)>=0)
Box p\x+Cos(180+p\a)*i,p\y-Sin(180+p\a)*i,2,2
Next i
Next p
DrawScreen
Forever
Lisätkää toki omat ilotulitukenne mukaan ja kommentoikaa.
EDIT:

parantelin koodia vähän

CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Joxi
Newcomer
Posts: 23
Joined: Sun Aug 26, 2007 5:40 pm
Location: Kuopio
Contact:

Re: Ilotulitus

Post by Joxi »

Tässä minun tekemä pieni ilotulitus. Näyttää aikapaljon Killen ilotulitukselta paitsi että Killen on hienompi.

Code: Select all

FrameLimit 50
pam = LoadSound("media/cannon.wav")
SCREEN 640,480,16,cbfullscreen 
Type ilotulitus
   Field X As Float
   Field Y As Float 
   Field kulma As Float   
   Field aika
   Field säde As Float 
   Field väri As Float 
   Field väri2 As Float
   Field väri3 As Float 
   Field kaava As Float 
   Field aika_max
EndType 
sw = ScreenWidth()
sh = ScreenHeight()
Repeat 
aika + 1 
If aika > aika_max  Then  
 aika_max = Rand(30,70)
 i.ilotulitus = New (ilotulitus)
   i\aika_max = Rand (30,150)
   i\Y = sh+10
   i\X =Rand (10,sw-10)
   i\kulma = Rand(70,100)
   i\väri = Rand(0,255) : If i\väri < 235 Then  i\väri + 20
   i\väri2 = Rand(0,255) : If i\väri2 < 235 Then i\väri2 + 20
   i\väri3 = Rand (0,255) : If i\väri3 < 235 Then i\väri3 + 20   
   i\kaava =Rnd(4.343,-2.6345)
   aika = 0
EndIf 
For i.ilotulitus = Each ilotulitus 
 i\aika + 1
   If i\aika > i\aika_max Then  
   If i\aika > i\aika_max And i\aika < i\aika_max + 2 Then PlaySound pam
    For a = 0 To 360 Step 15
       i\säde + 0.1
         If i\väri > 1 Then i\väri - 0.12
         If i\väri2 > 1 Then  i\väri2 - 0.12
       If i\väri3 > 1 Then i\väri3 - 0.12
       Color i\väri,i\väri2,i\väri3
      Box i\X+Cos(a)*Sin(a*i\kaava)*i\säde,i\Y-Sin(a)*Cos(a*5.3453)*i\säde,2,2,1
    Next a 
  EndIf  
  If i\aika_max >= 35 Then i\kulma = i\kulma + 0.2 Else i\kulma = i\kulma -0.2 
    If i\aika < i\aika_max Then
       i\X = i\X + Cos(i\kulma)*3.5
       i\Y = i\Y - Sin(i\kulma)*3.5 
       Color i\väri,i\väri2,i\väri3  
     Line i\X,i\Y,i\x+Cos(i\kulma)*4,i\Y-Sin(i\kulma)*4
    EndIf 
  If i\väri < 0 Then  Delete i : Exit 
Next i
DrawScreen 1
Forever 
Image
Vouldenhaul
Active Member
Posts: 211
Joined: Tue Aug 28, 2007 3:48 pm

Re: Ilotulitus

Post by Vouldenhaul »

Toi ilotulitus oli muuten ihan hieno, mut värimaailma turhan ankee. Harmaita sävyjä liikaa.
Some stories can't be told by words...
Some legends are meant to die...
Some bloodlines must come to an end...


Metal Gear Solid 4: Guns of the Patriots
Sneaking Out 12.06.2008
Post Reply