Nochmal ein Prob mit angehängten Types

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Hubsi

Betreff: Nochmal ein Prob mit angehängten Types

BeitragMo, Jul 05, 2004 12:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Tach beisammen.

Ich habe hier seit 3 Tagen eine Denkblokade glaub ich Confused
Ich habe einen Type für die Einheiten mit einem Feld p an welches ich den Type points angehängt habe. Dann werden in einheit\p.points koords gespeichert welche die Einheit nacheinander ablaufen soll. Mit einer Einheit funktioniert das noch, aber wenn es mehr als einen Eintrag in einheit gibt, läuft immer nur die Einheit des letzten einheit-Eintrages die Punkte ab. Nix kapisch? Dann hier mal die Codeteile:
Code: [AUSKLAPPEN]
Type points
 Field x,y
End Type

Type einheit
 Field x,y,typ,action,frame,startframe
 Field speed#,frametimer
 Field way,gun,life,doing ; doing: 1=Holz fällen
 Field name$,go,wahl
 Field p.points
End Type

; Drumherumcode

If MouseHit(1) ; Neues Ziel definieren
 For einheit.einheit=Each einheit
  If einheit\wahl ; Wenn Einheit ausgewählt
   For einheit\p=Each points ; Alle alten points der Einheit löschen
    Delete einheit\p.points
   Next
   zielx=(mx+24)/48+xscroll
   ziely=(my+24)/48+yscroll
   If map(zielx,ziely)<=400 einheit\doing=0 ; Nichts ausführen
   If map(zielx,ziely)>611 And map(zielx,ziely)<712 ; Holz fällen
    einheit\doing=1
    Select True
     Case map(zielx-1,ziely)<=400:zielx=zielx-1
     Case map(zielx+1,ziely)<=400:zielx=zielx+1
     Case map(zielx,ziely-1)<=400:ziely=ziely-1
     Case map(zielx,ziely+1)<=400:ziely=ziely+1
     Default einheit\go=False:Goto jump
    End Select
   EndIf
   If map(zielx,ziely)>400 And map(zielx,ziely)<612 ; Nicht begehbar
    einheit\doing=0
    Select True
     Case map(zielx-1,ziely)<=400:zielx=zielx-1
     Case map(zielx+1,ziely)<=400:zielx=zielx+1
     Case map(zielx,ziely-1)<=400:ziely=ziely-1
     Case map(zielx,ziely+1)<=400:ziely=ziely+1
     Default einheit\go=False:Goto jump
    End Select
   EndIf
   If zielx<0 Then zielx=0
   If ziely<0 Then ziely=0
   PathFinding(Int(einheit\x/48),Int(einheit\y/48),zielx,ziely)
   For path.path=Each path ; Die Wegpunkte für die einzelenen Einheiten
; kopieren
    einheit\p.points=New points
    einheit\p\x=path\node\x*48
    einheit\p\y=path\node\y*48
   Next
  EndIf
 Next
EndIf
.jump
Es soll also für jede Einheit die x und y-Punkte in einheit\p\x und einheit\p\y gespeichert werden. Dann laufen die einzelnen Einheiten ihre Punkte ab, wenn ein Punkt erreicht ist wird er gelöscht.

Hoffe mir kann jemand einen Tip geben, ich bin am heulen Very Happy

Edit: Jetzt geh ich erstmal arbeiten, also nicht böse sein wenn ich vor 22.30 Uhr nicht antworte Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
  • Zuletzt bearbeitet von Hubsi am Do, Jun 01, 2006 23:07, insgesamt einmal bearbeitet
 

Edlothiol

BeitragMo, Jul 05, 2004 13:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du eine Type Variable p.point hast, kann da immer nur ein einziges Objekt drin gespeichert werden. Wenn du mehrere haben willst, musst du bei dem Point noch z.B. ein Variable parent.einheit machen, die die einheit enthält zu der der Punkt gehört, und dann alle Points mit for each danach durchsuchen.

Hubsi

BeitragMo, Jul 05, 2004 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, danke. Das müßte klappen. Manchmal hat man doch echt ein Brett vorm Kopf Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group