Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP, GD, Kartengenerator

Empfohlene Antworten

hu,

da mein Ausgangspunkt PHP ist, setze ich es mal hier rein, prinzipiell geht es aber auch um das "wie" im allgemeinen.

Und zwar habe ich ein kleines Projekt in dem ich einen Kartengenerator erstellen will. Kartengenerator soll heißen z.B. für Pen&Paper Rollenspiele, oder als Ausgangsbasis für Levelgeneratoren.

Für den Anfang orientiere ich mich an anderen Beispielen, es gibt Wasser und es gibt Inseln. Das Kartenfeld ist in 6eck-Felder geteilt.

Schritt 1:Wasser und Land

Schritt 2: Wald und berge

Schritt 3: Straßen und Städte

in Schritt 1 generiere ich ein erstes Feld und färbe alle umgebenen Felder in der gleichen Farbe ein (1+6 Stück, grün für Land)

Hier schaffe ich es aber gerade "eine" Insel zu generieren, eine 2. passt nicht zum 6eck-Muster der ersten, da sie andere Ausgangskoordinaten verwendet.

Schritt 2 wird evtl. ganz ähnlich ablaufen, mit einem Filter das dies nur auf Land vorkommen kann.

Schritt 3 ist mir noch schleierhaft, verschlungene Straßen, nicht zu viele, und einige Zufallsgenerierte Städte.

Ein anderer Schritt währe ein Kartengenerator für Städte, mit Straßen und Häusern.

Hat jemand mit soetwas Erfahrung ? oder ein OpenSource Beispiel ?

danke

Schritt 3 ist mir noch schleierhaft, verschlungene Straßen, nicht zu viele, und einige Zufallsgenerierte Städte.

Wenn du eine Landmasse hast, würde ich da einfach per Zufall ein paar Punkte darauf setzen, die dann die Städte werden. Diese funktion kannst du ja n bissl aufbohren und dabei Felder an Flüssen bevorzugen, dabei aber mindestens X Felder von anderen Städten entfernt usw.

So ähnlich kannst du dann bei den Strassen vorgehen. Also erstmal die Städte als Wegpunkte festlegen. Dann von Stadt1 zu Stadt2 einen Weg finden. Dazu gibt es einen "einfachen" Algorithmus, zur Wegfindung. Mir fällt der Name grad nicht ein. Sowas solltest du dafür aber nutzen, denn du willst ja nicht unbedingt, dass der Weg einfach direkt von 1 nach 2 verläuft.

Der algorithmus geht so, dass du einen Ausgangspunkt hast, und dan die nächsten Schritte (also 1 Feld weiter) bewertest und das Kostengünstigste Feld nimmst. usw. somit würdest du den kürzesten Weg von 1 nach 2 finden. Berge, Küsten und Seen würden dabei natürlich weniger gut bewertet als Ebenen.

Auf den so generierten Wegen könntest du dann zufällig auch ein paar Punkte suchen, von wo aus du einen Weg zu einem anderen Weg suchst.

Über die Anzahl dieser zufälligen Punkte kannst du jeweils die Dichte von Städten und Strassen bestimmen.

Das ist mal mein Brainstorming zu Schritt 3.

ok danke, wenn dir noch einfällt wie diese Wegfindung funktioniert, währe gut ;)

Da jedes Feld 6 Koordinatenpunkte hat, werde ich evtl. 12 draus machen, um auch Punkte außerhalb der 'Ecken' zu haben.

Flüsse werden vermutlich genauso wie wege erstellt, da ein Feld nicht Fluss sein soll, sonder der Fluss oder weg nur eine Linie 'innerhalb' eines Feldes.

Was interessant werden könnte ist die Frage nach Kreuzungen, bzw. zu verhindern das sich wege zu oft kreuzen....

Ich glaube es war dieser A*:

A*-Algorithmus - Wikipedia

Da ist unten auch ein guter Artikel zum Verstehen des ganzen.

...sonder der Fluss oder weg nur eine Linie 'innerhalb' eines Feldes.

Dazu könntest du die ganze Karte nochmal in kleinere Bereiche aufteilen. Diese kleinen Bereiche nimmst du komplett als Weg oder Fluss. Für die eigentliche Karte fasst du dann immer 1 kleines Sechseck mit den umliegenden 6 Sechsecken zu einem Kartensechseck zusammen. Natürlich musst du da grafisch bissl runden ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.