Ausrichten von zusammenhängenden Gebäuden(Straßen, Pipeline)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

dominik

Betreff: Ausrichten von zusammenhängenden Gebäuden(Straßen, Pipeline)

BeitragDo, Okt 07, 2004 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ihr kennt doch sicher "Transport Tycoon" oder "Sim City" wenn man da ne straße baut dann werden erstmal alle Straßen waagrecht gezeichnet (oder senkrecht ka mehr) und dann nach ner sekunde wird jedes einzelne straßenstück ausgerichtet in die richtung wo andere straßenteile angrenzen. so das die wenn z.b links und unten ein straßenstück angrenzen eine kurve eingesetzt wird.
ich hoffe ihr versteht was ich meine. ich brauche des nämlich für ne pipline. seht bei mir dann so aus:
Code: [AUSKLAPPEN]
Function pipeline_ausrichten()
For haus.gebeude = Each gebeude
  If haus\hausart = 5 Or haus\hausart = 6 Or haus\hausart = 7 Or haus\hausart = 8 Or haus\hausart = 9 Then
    For hausa.gebeude = Each gebeude
      If haus\x - 32 = hausa\x And haus\x + 32 = hausa\x  Then haus\hausart = 1
      If haus\y - 32 = hausa\y And haus\y + 32 = hausa\y  Then haus\hausart = 5
      If haus\x - 32 = hausa\x And haus\y + 32 = hausa\y  Then haus\hausart = 6
      If haus\x - 32 = hausa\x And haus\y - 32 = hausa\y  Then haus\hausart = 7
      If haus\y - 32 = hausa\y And haus\x + 32 = hausa\x  Then haus\hausart = 8
      If haus\x + 32 = hausa\x And haus\y + 32 = hausa\y  Then haus\hausart = 9
    Next
  EndIf
Next
End Function

also es wird in der äußeren schleife erstma alle gebäude nach nem pipline stück durchsucht und wenn ein gefunden wird dann wird getestet wo an diese stück ein anderes piplinestück angrenzt.

erste möglichkeit wäre z.b. das links und rechts ein stück angenzt:
Code: [AUSKLAPPEN]
If haus\x - 32 = hausa\x And haus\x + 32 = hausa\x  Then haus\hausart = 1
steht links davon ein stück?: haus\x - 32 (tiles sind 32 pixel breit) und wenn rechts auch noch eins dranhängt: haus\x + 32 dann wird das stück zu einem waagerechten teil: Then haus\hausart = 1

nur leider wird kein einziges teil auch nur irgentwie ausgerichtet?????????
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.
 

Kekskiller

BeitragDo, Okt 07, 2004 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, dass gehst du falsch an. Du willst Pipelines zusammenbauen,
ok. Ich hätte das Pipeline-Geflecht in ein Dimfeld geschrieben, welches sagt,
ob auf der Position x,y sich eine Pipeline befindet, oder nicht. Und wenn du
eine Pipeline setzt, dann änderst du den Wert so, dass er sagt, dasseine
Pipeline gesetzt ist. Zusätzlich machst du parralel zu dem Dimfeld einen
Pipelinetyp, und fügst jedesmal, wenn du auf x,y im Dimfeld eine Pipeline
gebaut hast, auch eine neue Typepipeline ein, in welchen schließlich auch
x und y,gespeichert werden. Dann gehts du be der Ausrichtung die Pipeline-
Typen durch und fragst ab, ob bei den Positionen im Dimfeld (ausgehend
von den Typepositionen) im Umkreis auch Pipelines sind, sprich:

Code: [AUSKLAPPEN]

for p.pipeline=each pipeline
 if pipe(p\x+1,p\y)=1 then (Animation auf seite setzen)
 if pipe(p\x,p\y+1)=1 then (Animation auf seite setzen)
 if pipe(p\x-1,p\y)=1 then (Animation auf seite setzen)
 if pipe(p\x,p\y-1)=1 then (Animation auf seite setzen)


Also musst die die Positionen herum abfragen und entsprechd setzen.
Eigentlich garnicht so kompliziert, man muss nur mal drauf kommen Very Happy .

dominik

BeitragFr, Okt 08, 2004 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
mmhh... also entweder hab ich mich falsch ausgedrückt oder du hast es nicht verstanden. genaus das mach ich doch nur anstatt +1 halt +32 weil meine tiles halt 32 pix groß sind.
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.
 

getlose

BeitragFr, Okt 08, 2004 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, +/-1 ist schon richtig, sonst prüfst
du es ja erst 32 felder weiter.

dominik

BeitragFr, Okt 08, 2004 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
ich prüf aber nicht die positon des feld sonder den inhalt der dadrin gespeichet wird.
wenn ich haus\x + 32 schreib dann werden die 32 zum inhalt gerechnet und nicht zur feldposition.
es macht doch auch überahubt keinen sinn einfach nur das nächst gepeicherte feld zu kontrollieren, die felder können ja in einer völlig anderen Reihenfolge gespeichert sein als sie auf der karte gezeichnet sind.
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.

Hubsi

BeitragFr, Okt 08, 2004 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wär das alles nicht tierisch viel einfacher wenn mans in ein Array speichern würde? Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

soli

BeitragFr, Okt 08, 2004 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Na sicher ist es einfacher nichtdynamische Daten in Arrays unterzubringen.
Aber man schiesst hier immer gerne mit Kanonen auf Spatzen.
solitaire
 

Kekskiller

BeitragFr, Okt 08, 2004 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Sagte ich ja schon, aber der versteht ja keine praktikable Datenversorgung Confused .

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group