Plot mit Line Kollidieren

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Raiden93

Betreff: Plot mit Line Kollidieren

BeitragSo, Apr 04, 2010 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kriege ich es hin das meine Plots mit der Line kollidieren und sich die plots auf der Line stapeln?
Code: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer()
ClsColor 0,0,0

Global Counter

Type Ball
   Field Ball_X
   Field Ball_Y
   Field Grosse
   Field Speed#
   Field Farbe1
   Field Farbe2
   Field Farbe3
End Type


Repeat
   Cls
   Erstellen()
   Malen()
   
   Flip(0)
Until KeyHit (0)

Function Erstellen()
   Line 0,500,800,500
   If MouseDown (1) Then   
      info.Ball = New Ball
      info\Ball_X = MouseX()
      info\Ball_Y = MouseY()
      info\Grosse = Rnd (1,20)
       info\Speed# = Rnd# (0.5,1.0)
      info\Farbe1 = Rnd (0,255)
      info\Farbe2 = Rnd (0,255)
       info\Farbe3 = Rnd (0,255)
   End If
End Function

Function Malen()
   For info.Ball = Each Ball
      info\Ball_Y = info\Ball_Y +info\Speed#
      Color info\farbe1,info\farbe2,info\farbe3
      Plot info\Ball_X,info\Ball_Y
      If info\Ball_y > 600 Then Delete info.ball
   Next
End Function

The Shark

BeitragSo, Apr 04, 2010 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
- Array mit größe der Bildschirmbreite,gefüllt mit der höhe linie(bildschirmbreite)
- Schauen, ob plot_y größer als linie(plot_y)
- wenn ja linie(plot_y) um 1 verkleinern, Partikel löschen
- plot in ein hindergrundbild einzeichnen
Rette deine Freiheit
 

da_poller

BeitragSo, Apr 04, 2010 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
auf grund von berechnungsungenauigkeiten wird der punkt nicht immer genau auf der linie sein. daher würde ich eine line intersect funktion empfehlen(forum suche spuckt die sicher aus) und dein plot wird eine line(alte position zu neuer position).

The Shark

BeitragSo, Apr 04, 2010 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Lineintersect ist viel zu overpowered. Es reicht eine überprüfung der y-Werte, vor allem, weil die Partikel geradeaus runterkommen.

Code: [AUSKLAPPEN]

Graphics 800,600,32,2
timer=CreateTimer(60)

Global Counter
Global bgimage=CreateImage(800,600)
Dim linie(800)
For i=0 To 799
   linie(i)=499
Next

SetBuffer(ImageBuffer(bgimage))
Line 0,500,800,500

Type Ball
   Field Ball_X
   Field Ball_Y
   Field Grosse
   Field Speed#
   Field Farbe1
   Field Farbe2
   Field Farbe3
End Type

SetBuffer BackBuffer()
Repeat
   WaitTimer(timer)
   If MouseDown (1)
      Erstellen()
   EndIf
   updaten()
   
   DrawBlock bgimage,0,0
   Malen()
   
   Flip(0)
Until KeyHit (0)

Function Erstellen()   
   info.Ball = New Ball
   info\Ball_X = MouseX()
   info\Ball_Y = MouseY()
   info\Grosse = Rnd (1,20)
   info\Speed# = Rnd# (0.5,1.0)
   info\Farbe1 = Rnd (0,255)
   info\Farbe2 = Rnd (0,255)
   info\Farbe3 = Rnd (0,255)
End Function

Function updaten()
   SetBuffer ImageBuffer(bgimage)
   For info.Ball = Each Ball   
      info\Ball_Y = info\Ball_Y +info\Speed#
      If info\Ball_y > linie(info\Ball_x)
         Color info\farbe1,info\farbe2,info\farbe3
         Plot info\Ball_X,linie(info\Ball_X)
         linie(info\ball_X)=linie(info\Ball_x)-1
         Delete info.ball
      EndIf
   Next
   SetBuffer BackBuffer()
End Function

Function Malen()
   For info.Ball = Each Ball
      Color info\farbe1,info\farbe2,info\farbe3
      Plot info\Ball_X,info\Ball_Y
   Next
End Function
Rette deine Freiheit

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group