Plot mit Line Kollidieren
Übersicht![](/themes/Standard/arrow.png)
![](/themes/Standard/arrow.png)
![]() |
Raiden93Betreff: Plot mit Line Kollidieren |
![]() 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 |
![]() 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 |
||
da_poller |
![]() 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 |
![]() 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 |
||
Übersicht
![](/themes/Standard/arrow.png)
![](/themes/Standard/arrow.png)
Powered by phpBB © 2001 - 2006, phpBB Group