Ich brauch Hilfe beim Blasen ... erstellen ...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

garret

Betreff: Ich brauch Hilfe beim Blasen ... erstellen ...

BeitragSa, März 19, 2005 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe vieles versucht, aber es bleibt bei nur einer mickrigen Blase...
Code: [AUSKLAPPEN]

Goto types
SetBuffer BackBuffer():Graphics 640,480,16,3:AppTitle "Blasen"

Dim blase(10,2)
SeedRnd MilliSecs()

For x=0 To 10
 blase(x,0)=Rand(0,630)
 blase(x,1)=Rand(480,520)
 blase(x,2)=Rand(1,10)
Next

ClsColor 0,0,255:astart=MilliSecs():gstart=MilliSecs()
Color 255,255,255

Repeat:Cls
astop=MilliSecs()
gstop=MilliSecs()

 If astop-astart>5
  blase(1,1)=blase(1,1)-1
  astart=MilliSecs()
 EndIf
If gstop-gstart>100
 blase(1,2)=blase(1,2)+1
 gstart=MilliSecs()
EndIf
If blase(1,1)+blase(1,2)<0
 blase(1,0)=Rand(0,630)
 blase(1,1)=Rand(480,600)
 blase(1,2)=Rand(1,10)
EndIf
Oval blase(1,0)-(blase(1,2)/2),blase(1,1),blase(1,2),blase(1,2),0

Flip:Until KeyHit(1):End


.types
SetBuffer BackBuffer():Graphics 640,480,16,3:AppTitle "Blasen"

Type blase
 Field x,y,g
End Type
SeedRnd MilliSecs()

For f=1 To 10
 b.blase=New blase
 b\x=Rand(0,630)
 b\y=Rand(480,520)
 b\g=Rand(1,10)
Next

ClsColor 0,0,255:astart=MilliSecs():gstart=MilliSecs()
Color 255,255,255

Repeat:Cls
astop=MilliSecs()
gstop=MilliSecs()

For b.blase=Each blase
 If astop-astart>5
  b\y=b\y-1
  astart=MilliSecs()
 EndIf
If gstop-gstart>100
 b\g=b\g+1
 gstart=MilliSecs()
EndIf
If b\y+b\g<0
 Delete b
 b.blase=New blase
 b\x=Rand(0,630)
 b\y=Rand(480,520)
 b\g=Rand(1,10)
EndIf
Oval b\x-(b\g/2),b\y,b\g,b\g,0
Next
Flip:Until KeyHit(1):End


Ich will aber mehrere Blasen!
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)
 

sven123

BeitragSa, März 19, 2005 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm!Irgendwie raffe ich deinen Code nicht ganz warum entscheidest du dich nicht einfach für dims ode Types?

BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,0,1
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Type Blasen
Field Bx
Field By
End Type



Blase()
Flip
WaitKey()




Function Blase()
For i=0 To 50
B.Blasen=New Blasen
B\Bx=Rnd#(15,400)
B\By=Rnd#(15,600)
Oval B\Bx,B\By,20,20,1
Next
End Function


So jetzt habe ich es getestet so muss es gehen.Ich hoffe das ist in Grundzügen das was du wolltest
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken

Triton

BeitragSa, März 19, 2005 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Verschoben nach Allgemein.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, März 20, 2005 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ziemliches durcheinander in deinem Code! Confused
versuch es mal mit Functionen, das erleichtert so einiges und der Überblick bleibt im RahmenBlitzBasic: [AUSKLAPPEN]
AppTitle \"Blasen\"
Type blase
Field x#,y#,g#
End Type
SeedRnd MilliSecs ()
Graphics 640 ,480,16,3
SetBuffer BackBuffer ()
ClsColor 0 ,0,255
Color 255 ,255,255
For f = 1 To 10 ; 10 stück erstellen
createBlase ()
Next

Repeat
Cls
updateBlase ()
Flip
Until KeyHit (1)

End

Function createBlase () ; erstellt neue Blasen
b.blase = New blase
b\x = Rand (0 ,630)
b\y = Rand (480 ,520)
b\g = Rand (1 ,10)
End Function

Function updateBlase (); versetzt die Blasen
For b.blase = Each blase
b\y = b\y - b\g / 5 ; je nach Größe schneller
b\g = b\g + 0.05
Oval b\x - (b\g / 2) ,b\y,b\g,b\g,0
If b\y < 0 Then; wenn diese aus dem Bild
Delete b ; löschen
createBlase (); 1 neue
End If
Next
End Function
[BB2D | BB3D | BB+]

garret

Betreff: Blasen!

BeitragSo, März 20, 2005 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie bei Rallimen wollte ich das, alles klar.
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group