"Schlangen"-Problem
Übersicht

toni123Betreff: "Schlangen"-Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Leute,
ich hab folgendes Problem. Ich möchte ein Objekt eines bestimmten Types im Punkt 0 erstellen. Dieses Objekt wird dann um 5 verschoben (eine sichtbare verschiebung). Wenn das Objekt bei 5 ist, wird ein Neues Objekt im Punkt 0 erstellt und anschliessend bewegen sich beide bis jetzt erstellte Objekte wieder um 5. Anschliessend wird wieder ein neues Objekt am Punkt 0 erstellt und die drei bewegen sich um 5 usw. Das ganze wird sooft gemacht, bis eine bestimmte anzahl Objekte entstanden ist und sich bewegt hat. Ich habe für die bewegung mal einen Pseudocode geschrieben, bei dem Ich als Grundlage genommen habe, dass alle Objekte einen definierten Vorgänger und nachfolger haben. Dieser Code hinkt zwar ziemlich hinterher, aber ich habe bis jetzt keinen besseren Denkansatz. Pseudocode: Code: [AUSKLAPPEN] Type Element Field entity Field nachfolger End Type Beliebig viele Elemente am Punkt 0 erstellen ///Pseudo/// Pivot am Punkt 0 Function Start(objekt) bewege objekt um 0.1 Wenn EntityDistance(objekt, Pivot) = 5 Dann Bewegen(Nachfolger) End Function Function Bewegen(objekt) bewege Objekt um 0.1 bewege Vorgänger um 0.1 Wenn EntityDistance(objekt, Pivot) = 5 Dann Bewegen(Nachfolger) End Function Und ein Ansatzcode für die Types: Code: [AUSKLAPPEN] Graphics3D 1440, 900 SetBuffer BackBuffer() Local ms = MilliSecs() Global Entfernung# camera = CreateCamera() PositionEntity camera, 0, 0, -50 Global test = CreateSphere() PositionEntity test, 0, 0, 0 ;Global test2 = CreateSphere() ;PositionEntity test2, 4, 0, 0 light = CreateLight(1) Type Element Field entity End Type For i=0 To 10 Local a.Element a.Element = New Element a\entity= CreateSphere() ;PointEntity a\entity, test, 0 Next While Not KeyHit(1) MoveEntity First a.Element\entity, 0.1, 0, 0 RenderWorld Flip Wend Bei diesem Code sagt er mir allerdings "Expecting Wend" Hat jemand eine Idee wie ich mein Problem lösen könnte oder wie ich sinnvoller drangehe? Viele Grüße Toni |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] MoveEntity First a.Element\entity, 0.1, 0, 0 ... das geht so nicht. First![]() Eher so: Code: [AUSKLAPPEN] a.Element = First Element MoveEntity a\entity, 0.1, 0, 0 Bei Fehlermeldungen bitte generell den Debugger einschalten und die Fehlerhafte Zeile mit nennen - macht alles hier einfacher ![]() Da Types schon verkettete Listen sind, müsstest du nur mir Before ![]() ![]() BlitzBasic: [AUSKLAPPEN] Type Element |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
toni123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm,
das mit den Aufrufen werde ich wirklich mit Before und After machen, ich habe die Bewegung aller Teilchen jetzt einfach so gelöst, dass ich gesagt habe, jedes Objekt, dass nicht am Punkt 0 ist, soll bewegt werden. Ich bekomme allerdings mit folgendem Code die Fehlermeldung "Index Variable is not a NewType" Code: [AUSKLAPPEN] Graphics3D 1440, 900 SetBuffer BackBuffer() Local ms = MilliSecs() Global Entfernung# camera = CreateCamera() PositionEntity camera, 0, 0, -50 Global test = CreateSphere() PositionEntity test, 0, 0, 0 ;Global test2 = CreateSphere() ;PositionEntity test2, 4, 0, 0 light = CreateLight(1) Type Element Field entity End Type Local a.Element For i=0 To 10 a = New Element a\entity= CreateSphere() ;PointEntity a\entity, test, 0 Next While Not KeyHit(1) UpdateBlocks() RenderWorld Flip Wend Function UpdateBlocks() For a = Each Element If Not EntityX(a\entity) = 0 MoveEntity a\entity, 0.1, 0, 0 EndIf Next End Function |
||
![]() |
faeX |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fehlerhafte Zeile mitnennen.
Edit: Du musst das a.Element nochmal Local in deiner Funktion definieren, da das Local a.Element im Hauptprogramm nicht bis in Funktionen hineinreicht. |
||
toni123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke alter, klappt super | ||
toni123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe nun einfach immer abgefragt, ob sich das objekt im Abstand 5 zum Nullpunkt befindet, und ob der Nachfolger sich am Nullpunkt befindet, wenn der Fall vorliegt, soll der nachfolger sich bewegen und das Objekt.
Allerdings liefert er mir die Fehlermeldung "Memory Acces Violation" zurück. hat jemand eine Idee warum? Code: [AUSKLAPPEN] Graphics3D 1440, 900 SetBuffer BackBuffer() Local ms = MilliSecs() Global Entfernung# camera = CreateCamera() PositionEntity camera, 0, 0, -50 Global test = CreateSphere() PositionEntity test, 0, 0, 0 ;Global test2 = CreateSphere() ;PositionEntity test2, 4, 0, 0 light = CreateLight(1) Type Element Field entity End Type Local a.Element For i=0 To 10 a = New Element a\entity= CreateSphere() PositionEntity a\entity, 0, 0, 0 Next Local g.Element = First Element PositionEntity g\entity, 5, 0, 0 While Not KeyHit(1) UpdateBlocks() RenderWorld Flip Wend Function UpdateBlocks() Local a.Element Local b.Element = After a For a = Each Element If Int(EntityDistance (test, a\entity)) = 5 MoveEntity b\entity, 0.1, 0, 0 EndIf If Not EntityX(a\entity) = 0 MoveEntity a\entity, 0.1, 0, 0 EndIf Next End Function |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Local a.Element
Das ist nicht sinnvoll. Instanz a wird Local initialisiert mit NULL - dazu gibt es kein Objekt das danach kommen könnte.
Local b.Element = After a Ferner iterierst du in a alle Elemente durch, und gibst aber das selbe nicht existente b bei den Bewegung an (MAV)... |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
toni123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
alter, du bist super ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group