Risiko map -Einheitenbewegung
Übersicht

![]() |
mas93Betreff: Risiko map -Einheitenbewegung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Leute,
Ich habe mal eine Frage und zwar: Ich habe eine map, wie bei dem Brettspiel risiko z.b.: ![]() Wie soll ich das jetzt machen. Ich will ja testen, wenn eine Einheit jetzt z.b in Land 1 steht, ob es zu Land2 laufen kann(also wenn es angrenzt an Land1) Bei einem Dimfeld mit rechtecken wäre das ja einfach, da könnte man einfach map(x+1,y) machen, da bei risiko die felder aber keine rechtecke sind, weiss ich nicht wie ich das machen soll... wäre nett wenn ihr mir helfen könntet. mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dimensioniere dein Dimfeld doch in Pixel, 1*1 Pixel große Felder also ![]() |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wie würde das in 3d gehen?
(2d lösung immer noch gesucht) mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Types wäre noch ne lösung:
Code: [AUSKLAPPEN] Type land
Field angrenzendes.land[10] End Type Das würde Speicher für 10 angrenzende länder pro land reservieren. Das geht immerhin schneller als die letzte Antwort verbraucht aber immernoch mehr speicher als gebraucht. (zb wenn ein land nur 3 angrenzende länder hat, dann müssen die anderen 7 mit ner "Null" belegt werden) Da das eig alles Const. sind kann man das auch über Select lösen: jedes land bekommt ne id. und dann kommt ne func wie: Code: [AUSKLAPPEN] Functition GetAngrenzendes(land,count)
Select land case 1;Deutschland Select count Case 0 return 2;=Frankreich Case 1 ...... ...... End Select Case 2;Frankreich ...... ...... End Select End Function Das ist aber Ein haufen schreib arbeit dafür ist es -soweit ich es überblicken kann- die schnellste und arbeitsspeichersparende variante die mir einfallt |
||
![]() |
Cardonic |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du speicherst die Länder in Types.
Jeder Type beinhaltet die nötigen Informationen (wie z.b. Position, Name, Besetzer, Anz. Einheiten usw.) In einer Liste speicherst du die angrenzenden Länder. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau dir an an wieviele andere Länder jedes Land angrenzt. Das Land mit den meisten Nachbarn ist das an dem du dich orientieren musst.
Nun erstellst du mit Dim ein 2-dimensionales Array welches die Nummern der angrenzenden Länder für jedes Land enthält. Bsp.: Es gibt 8 Länder, und land 1 grenzt an die meisten davon. Land 1 grenzt an Land 3, 5, 7 und 8, das sind 4 Nachbarn. Dim grenzen(8,4) ;Anzahl Länder, Nachbarn grenzen(1,1) = 3 grenzen(1,2)=5 grenzen(1,3)=7 grenzen(1,4=8 Das ist nicht unbedingt die sauberste Methode, aber sie funktioniert. wenn in Grenzen bei einem Feld 0 steht, ist da eben kein Nachbar. Die Koordinaten der einzelnen Länder (also die Stelle wo du die Armeen einzeichnen willst) kannst du ja in einem Separaten Array festhalten. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich dachte er will wissen wie er die Landesgrenzen genau definieren kann, z.B. auf Kollision. Wann zum Beispiel eine Einheit in ein bestimmtes Land eindringt, geht das in 2D eigentlich? Weil die Grenzen ja unregelmäßig sind kann man da ja schlecht mit Tiles arbeiten, und auch Types bringen nicht sehr viel .... | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ginge ganz exakt mit ql:imagescollide und einer gesetzten ql:maskimage, Hydrox, und sollte daher nicht das Problem sein. | ||
- Zuletzt bearbeitet von BladeRunner am Mo, Nov 26, 2007 17:00, insgesamt einmal bearbeitet
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja aber wäre es nicht ein wenig umständlich, wenn man jedes einzelne Land der Erde erst malen und als Datei abspeichern müsste? Weil genau darauf wollte ich eigentlich verzichten ...
EDIT Noch dazu ist imagescollide ziemlich langsam. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für die paar dutzend Bilder wäre es sicher zu verschmerzen. Und sorry, aber wenn du was gutes erschaffen willst musst du eben auch mal Zeit investieren. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay wenn es keine andere Lösung gibt muss ich eben in den sauren Apfel beissen ![]() |
||
![]() |
MichiMeister |
![]() Antworten mit Zitat ![]() |
---|---|---|
Definiere doch einfach ein Stringarray.
Dim Länder$(anzahl Länder) Dann weist du jedem String die Länder mit gemeinsamer Grenze zu. Länder$(0)="BCE" ; ist Land A Länder$(1)="ADFG" ; ist Land B usw. Wenn du wissen willst, ob du von Land A nach C marschieren kannst, fragst du das mit "Instr" ab. |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm, ich habe mir überlegt, dass ich es jetzt doch ganz anders mache.
Und zwar mit Hexfeldern. Nur habe ich eine Frage. Ich habe ein map array z.b.: Dim map(15,31) Wie kann ich jetzt die hexfelder zeichnen? Bei rechtecken wäre das ja einfach, aber da die Hexfelder ja immer so verschoben find, bekomm ichs einfach nicht hin... mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
KddC |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.gamedev.net/referen...cle747.asp
da is fürs erste alles was du zu diesem thema wissen musst...ist zu iso und hex tiles... ![]() kannst dir ja mal anschauen mfg |
||
Mfg Kddc
Macbook Pro 13" 2,66Ghz |
HyDr0x |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
MichiMeister hat Folgendes geschrieben: Definiere doch einfach ein Stringarray.
Ich würde es für ein echtzeit Strategiespiel benutzen, daher möchte ich wissen ob eine Einheit die Landesgrenze pixelgenau überschreitet. Dabei nützen mir Arrays nichts, imagescollide ist die einzige Möglichkeit die ich sehe. |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Machs doch so, dass du in eine Datei für jedes Land alle Nachbarn schreibst. So kannst du leicht prüfen, ob der Zug möglich ist, der Aufwand dabei ist zwar ein bisschen groß, aber für ein gutes Spiel investierst du sicher gerne Zeit ![]() //EDIT: etwa nach der Syntax Code: [AUSKLAPPEN] [Preußen]
Polen Timbuktu [Südafrika] das-land-über-südafrika Island USA ... Und ja, das Beispiel hat nichts mit den echten Ländergrenzen zu tun... |
||
Starfare: Worklog, Website (download) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group