Plot mit Line Kollidieren
Übersicht BlitzBasic Beginners-Corner
Raiden93Betreff: Plot mit Line Kollidieren |
So, Apr 04, 2010 13:48 Antworten mit Zitat |
|
---|---|---|
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 |
So, Apr 04, 2010 13:53 Antworten mit Zitat |
|
---|---|---|
- 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 |
So, Apr 04, 2010 13:57 Antworten mit Zitat |
|
---|---|---|
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 |
So, Apr 04, 2010 14:09 Antworten mit Zitat |
|
---|---|---|
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 |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group