For Each macht Probleme?
Übersicht

Mr HoppBetreff: For Each macht Probleme? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi
Der folgende Code sollte eigentlich alle Züge und deren einzelne Wagons durchgehen. Type wie folgt: Verkehr\Zug\Wagon. Das Problem ist nun: ein einzelner Zug lässt sich super bewegen, sobald es jedoch 2 Züge sind, stehen beide still. Code: [AUSKLAPPEN] For Verkehr\Zug=Each TZug
For Verkehr\Zug\Wagon=Each TWagon Verkehr\Zug\Wagon\x=Verkehr\Zug\Wagon\x+Cos(Verkehr\Zug\Wagon\gr#)*Verkehr\Zug\spd# Verkehr\Zug\Wagon\y=Verkehr\Zug\Wagon\y+Sin(Verkehr\Zug\Wagon\gr#)*Verkehr\Zug\spd# If Verkehr\Zug\Wagon\typ=1 Then DrawImage lok_l(Verkehr\Zug\wagon\gr),Verkehr\Zug\wagon\x,Verkehr\Zug\wagon\y If Verkehr\Zug\Wagon\typ=2 Then DrawImage wagon(Verkehr\Zug\wagon\gr),Verkehr\Zug\wagon\x,Verkehr\Zug\wagon\y If Verkehr\Zug\Wagon\typ=3 Then DrawImage lok_r(Verkehr\Zug\wagon\gr),Verkehr\Zug\wagon\x,Verkehr\Zug\wagon\y Next Next PS: Die Zeilenumbrüche sollten eigentlich net sein ![]() |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
liegt daran, dass er mit
Code: [AUSKLAPPEN] For Verkehr\Zug\Wagon=Each TWagon nicht nur die zum einen Zug sondern ALLE Wagongs durchgeht, bräuchtest also sowas ( gibts bei Blitz nicht): Code: [AUSKLAPPEN] For Verkehr\Zug\Wagon=Each Verkehr\Zug\TWagon Die einzige möglichkeit das Problem in den Griff zubekommen ist, die Types selbst zu verketten.... wurde auch schon 100 te mal geklärt. MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du meinst also, dass TWagon nich an TZug gekoppelt werden soll??? | ||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
nicht nicht soll, sondern nicht kann! Du musst wie schon gesagt die wagen manuell untereinander verketten... als denkanstoß:
Code: [AUSKLAPPEN] Type Zug Field firstwagon.wagon end Type Type wagon Field nextwagon.wagon Field lastwagon.wagon End Type Diese Felder braucht das Type für die Manuelle Verkettung, nun musst du nur noch bei der erstellung des Zugs/Wagons die Fleder ausfüllen ![]() MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mhh...........ich erkenne keinen Unterschied zu meinen Types ![]() Code: [AUSKLAPPEN] Type TVerkehr
Field Zug.TZug End Type Type TZug Field wagon.Twagon Field spd# Field spurwechsel Field spw_x Field spw_y End Type Type TWagon Field x Field y Field gr# Field typ End Type |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
also das kann man OOP nennen ^^
Es geht. Du kannst ja jeden Wagon durchgehen und schauen, ob er als Zug den Zug ... hat |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du wirst in deinem Fall leider nicht daran vorbei kommen, dir eine eigene linked list zu basteln wie oben empfohlen (ausser du willst eine fixe anzahl an wagen setzen, dann könntest du field wagen.TWagon[anzahl] nehmen mit einer fixen anzahl, da es nicht geändert werden kann).
Hab dir dazu mal einen Code geschrieben: Code: [AUSKLAPPEN] Type TVerkehr
Field Zug.TZug End Type Type TZug Field head.TWagonList Field spd# Field spurwechsel Field spw_x Field spw_y End Type Type TWagon Field x Field y Field gr# Field typ End Type Type TWagonList Field next.TWagonList field value.TWagon end type Function AddToWagonList (list.TWagonList, wagon.TWagon) temp.TWagonList = list while temp\next > 0 temp = temp\next wend t.TWagonList = new TWagonList t\value = wagon temp\next = t end function Function RemoveFromWagonList(list.TWagonList, wagon.TWagon) temp.TWagonList = list\next tprev = list while temp > 0 if temp\value = wagon tprev\next = temp\next return end tprev = temp temp = temp\next wend end function Function DrawTrain(zug.TZug) temp.TWagonList = zug\head ; geht alle Wagen in der WagenListe des Zuges durch und zeichnet sie while temp > 0 DrawWagon(temp\value) temp = temp\next wend end Function DrawTrain und DrawWagon sind dabei einfach beispielfunktionen die eine TZug bzw. eine TWagon Type entgegen nehmen. Die Add und Remove sind dazu da um von einem Zug\head etwas zu entfernen bzw. hinzuzufügen. Die Funktionen sind husch husch hier im Forum hingeschrieben worden können also eventuell fehler beinhalten. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank für die Lösung, ich denke, es wird mir weiterhelfen ![]() Allerdings möchte ich nicht nur eine Lösung haben, sondern sie auch verstehen. Und das tue ich leider noch net ![]() ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
google mal nach Linear verketteter Liste oder Linear LinkedList
du wirst unzählige Seiten dazu finden häufig mit schönen JAVA Applets die dir alles erklären. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab jetzt WIRKLICH nachgeguckt, blick's aber immer noch net... kannst du mir mal ein Beispiel geben, wie man deine Funktionen benutzt? (Vor allem, was die Parameter enthalten müssen) ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da müsste man dann wohl sagen, dass du dir ein anderes Hobby suchen solltest, das weniger Lernwille und analytisches Denken erfordert, wenn dir schon die unzähligen hervorragenden Seiten zu linear linkedlist nicht helfen, ein so einfaches Thema zu verstehen.
Aber ich werde versuchen dir ein kleines Beispiel zu machen, das dir dann auch direkt zeigen wird, dass du dir selbst noch weitere Funktionen schreiben musst (zur Erzeugung eines Zuges und so) Code: [AUSKLAPPEN] zug.TZug = new TZug WList.TWagonList = new TWagonList WList.value = new TWagon ; das ist also unsere Lok zug.list = WList ; 3 weitere Wagen hinzufügen for i = 1 to 3 AddWagonToList(zug.list,new TWagon) next ; Der Zug besteht nun also aus der Lok und 3 Wagen DrawTrain(zug) end Type TVerkehr Field Zug.TZug End Type Type TZug Field head.TWagonList Field spd# Field spurwechsel Field spw_x Field spw_y End Type Type TWagon Field x Field y Field gr# Field typ End Type Type TWagonList Field next.TWagonList field value.TWagon end type Function AddToWagonList (list.TWagonList, wagon.TWagon) temp.TWagonList = list while temp\next > 0 temp = temp\next wend t.TWagonList = new TWagonList t\value = wagon temp\next = t end function Function RemoveFromWagonList(list.TWagonList, wagon.TWagon) temp.TWagonList = list\next tprev = list while temp > 0 if temp\value = wagon tprev\next = temp\next delete temp return end tprev = temp temp = temp\next wend end function Function DrawTrain(zug.TZug) temp.TWagonList = zug\head ; geht alle Wagen in der WagenListe des Zuges durch und zeichnet sie while temp > 0 DrawWagon(temp\value) temp = temp\next wend end Function PS: Fehler beim Remove entfernt. Vorher wurde das Objekt nicht deleted. Empfohlene Funktionen die du machen könntest: AddWagonToTrain RemoveWagonFromTrain CreateTrain (für initialisierung der Liste) DestroyTrain (um die gesamte Liste mittels delete wieder freizugeben) Und natürlich alles andere was dein Zug an Funktionalität bieten sollte. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich hab mir das Beispiel jetzt noch net angeguckt, aber:
1. Danke erstmal, dass du dir nochmal die Mühe machst. ![]() 2. Zitat: Da müsste man dann wohl sagen, dass du dir ein anderes Hobby suchen solltest, das weniger Lernwille und analytisches Denken erfordert
Ich programmiere Seit 2 Jahren und habe dabei viel gelernt, ich finde es ziehmlich unfreundlich, sowas einfach so zu sagen! |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nunja, sofern du wirklich wie oben erwähnst versuchst hast dich zu informieren und die hervorragenden Pages, die man dank Google in Minuten findet, nicht geholfen haben, dann ist es nicht unfreundlich, sondern die Wahrheit. (-> Informieren = ernsthaft damit auseinandersetzen = mehrere Stunden wie bei allem neuen das man sich an wissen aneignet)
Denn die linkedlist ist die einfachste Datenstruktur die auf Basis von Types (struct) überhaupt existiert, da sie ganz einfach aus einem Verweis auf das folgende Objekt und einen Verweis auf ein Datenobjekt besteht. Dabei gehe ich natürlich davon aus, dass du Types in und auswendig kennst mit deinen 2 Jahren erfahrung. Falls nicht solltest du das baldmöglichst nachholen. (aus meiner Sicht sollte man erst types, schleifen, if etc verstehen bevor man sich überhaupt an sowas wie 2D Bilderzeichnen etc setzt, denn was nutzt es einem wenn man etwas zeichnen kann aber das Datenhandling nicht gescheit strukturieren kann?) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erstmal sorry, dass ich dieses alte Thema nochmal anspreche.
Das liegt daran, dass mir durch ein paar ziehmlich blöde äußerungen die Laune am proggen genommen wurde (ich muss das ja nicht nochmal ausführlich beschreiben, oder?). Auf jeden Fall fand ich das ziehmlich sch***e. Naja...zum eigentlichen Thema: Ich hab jetzt kapiert, wie diese Liste verlinkt wird (habe allerdings kein einziges "schönes JAVA-Applet" gefunden). Allerdings kann ich das ganze noch net so wirklich in BB umsetzen. Außerdem ist das Beispiel eine einzige Errormeldung ![]() - Da fehlen doch noch Types, oder??? - Kann mir BITTE jemand die Funktion zum erstellen eines Zuges machen? (Ich meine: was bringt mir's, zu wissen, wie man nen Waggon erstellt, obwohl ich kp hab, wie ein zug geht? ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du mußt nur wissen das es pro Struktur (Type) immer nur eine gesamt Liste gibt in BlitzBasic .
For Verkehr\Zug=Each TZug For Wagon=Each TWagon If Verkehr\Zug\Wagon=Wagon then endif next Next Nicht schön aber so in der Art , also wo ist das Problem ? BlitzMax ist da besser weil man sich eigene Listen erstellen kann . |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
google nach "linear linkedlist"
Erstes Resultat: http://www.cs.usask.ca/resourc...ction.html Ich hoffe das hilft dir das ganze ein wenig "bildlich" näher zu bringen. Und doch obige Types sind alle die nötig sind. Ein Listenelement Type und ein Listen Type. Die restlichen Types haben ja nichts mit der linked list zu tun und sind somit eigentlich mehr oder weniger deine freie Entscheidung ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen vielen Dank ![]() ![]() Und wegen fehlenden Types: "zug.list = WList" ergibt: "Type "list" not found" ..... aber naja, wie gesagt: wenn du meinst, dass das so stimmt, wird's so sein. Morgen forsche ich mal ganz genau nach^^ |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Args ne da hast du sogar recht.
sollte zug.head = WList sein da head ja die referenz auf die wagenliste ist. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also head müsste ich jetzt erst noch erstellen, oder was??? Weil "zug.head" ergibt den gleichen fehler ![]() das gleiche bei: AddToWagonList(zug.list,New TWagon) Type "list" not found ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
da müsste auch zug.head stehen.
zug.list existiert nicht, wie du der Type Definition des Zuges entnehmen kannst |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group