"Städte raten" programmieren mit Java/Swing

Hallo Xout,
Bei Deinem Problem zu erkennen ob der Benutzer daneben geklickt hat, empfiehlt es sich aus meiner Sicht die Städte in Form von Polygonen in der Map undargestellt einzubringen.
Da die im Java eingebaute Polygonklasse leider Kolisionen nicht richtig erkennt sondern nur Boxen darum verwendet und dann damit für Kollsionsermittlung weiter vverfährt, benötigt man eine bessere Polygonklasse. Vor ein paar Jahren hatte ich ein ähnliches Problem googlete nach einer besserern Klasse und wurde dann bei einem Dozenten aus Übersee fündig. Diese Klasse ermittelt von isch aus Distanzen in Pixel bezogen auf die jeweiligen Polygongrenzen.
Desweiteren habe ich da ein Panel, welches Dir vermutlich ganz gut helfen kann, Du musst nur noch damit die Städte als Polygone nachzeichnen. Hierbei könntest Du eine Deutschlandkarte mit in das Panel einlesen, damit das Nachzeichnen (die Eckpunkte bestimmen) einigermaßen funktioniert.
Falls Du Interesse haben solltest sag einfach hier nochmal bescheid, falls Du lieber selbst alles austüfteln möchtest (ich weiß ja nicht wie Deine Studienarbeitsbestimmungen sind) bewende es einfach dabei.
 
Zuletzt bearbeitet:
Moin takidoso,

ich finde mki_germo hat den wohl besten Ansatz geliefert wie er zumindest am Einfachsten umzusetzen wäre.
Ein einfaches Koordinatensystem, worauf die Karte liegt.
Die darauf dargestellten Städte kann man simplerweise einfach mit Koordinaten irgendwo abspeichern (soft- oder hardcoded).
Und per MouseListener werden halt die Koordinaten des Cursors bei Klick abgefangen und die Berechnung durchgeführt, welche bereits angesprochen wurde.

Kollisionskontrolle und solchen Kram halte ich an diesem Platz für sinnfrei.
Und Polygonen, naja ... Länge und Breite eines Ortes im Koordinatensystem sind auch nur ein Punkt.

Gruß,
Xan
 
Moin takidoso,

ich finde mki_germo hat den wohl besten Ansatz geliefert wie er zumindest am Einfachsten umzusetzen wäre.
Ein einfaches Koordinatensystem, worauf die Karte liegt.
Die darauf dargestellten Städte kann man simplerweise einfach mit Koordinaten irgendwo abspeichern (soft- oder hardcoded).
Und per MouseListener werden halt die Koordinaten des Cursors bei Klick abgefangen und die Berechnung durchgeführt, welche bereits angesprochen wurde.
Du hast recht sein Ansatz ist sehr anschaulich und geht von erdachten Stadtzentren aus.
Du müsstest nur noch die Pixelentfernung auf die Kilometer umrechnen (Dreisatz)
Natürlich brauchst Du immer ein Koordinatensystem und einen Mouselistener, ohne den gehts natürlich auch in meinem Lösungsvorschlag nicht. Wollte da nur Vorangegangenes nicht wiederholen.
Kollisionskontrolle und solchen Kram halte ich an diesem Platz für sinnfrei.
Und Polygonen, naja ... Länge und Breite eines Ortes im Koordinatensystem sind auch nur ein Punkt.
Verzeih das Wort Kollisionskontrolle/Kollsiionsermittlung. Damit meinte ich lediglich das exakt erkannt wird, dass ein vorgegebener Punkt, in Deinem Fall die Mousezeigerkoordinaten, innerhalb oder außerhalb des Polygons (der Stadt) liegt. Der Vorschlag beruht auf Deinem in den vorangegengenen Schreiben angedachten Vorgehen. Ich bildete mir ein, dass Du offenbar vorgehabt hattest die Stadtausdehnung mitzuberücksichtigen, und diese Idee finde ich nach wie vor sehr reizvoll. Natürlch ist das einbetten der Städte dadurch auch mühevoller, da du jede Stadt, die in Deinem Spiel erratbar sein soll, individuell nachempfunden werden müsste, so man sehr genau sein wollte.

Aber mal eine ganz andere Frage, wie ermittelst Du die Stadtzentren für Dein Spiel, verwendest Du das Prinzip Pi mal Daumen, oder verwendest Du geographische Daten?
Falls letzteres, woher bekommt man die? ' Wäre glatt an einer solchen Datenquelle interessiert.
 
Zuletzt bearbeitet:
Moin wiedermal takidoso,

die von Dir angesprochene "Ausdehnung" der Städte zu berücksichtigen ist wohl ein immenser Aufwand, der höchstwahrscheinlich nicht einmal geographisch für jede einzelne Stadt aufgezeichnet wird. Und wenn doch, wird man diese weniger im Internet finden.

Aber um Deine Frage bezüglich der geographischen Koordinaten zu beantworten,
bietet Wikipedia bei Suchanfragen auf Städte jedesmal die geographische Länge und Breite auf der rechten oberen Seite dar.
Ansonsten gäbe es noch "kleine" Listen im Internet.
Es gibt aber sicherlich auch Bücher (ich kenne nur welche aus der Seefahrt mit Hafenstädten) wo diese Angaben im Detail für alle Länder der Welt aufgelistet sind.
Und wer viel Spaß am Zusammensuchen solcher Informationen hat, dem empfehle ich google earth ;-)

Gruß,
Xan
 
Zuletzt bearbeitet:
Hallo zusammen,

ich wollte mich bei Euch noch für Eure großartige Hilfestellung bedanken. ABER ich habe es leider in der kürze der Zeit nicht geschafft das Projekt zum Abschluß zu bringen, und bin daher kurzfristig auf ein anderes Thema umgestiegen, welches sich auch ohne Probleme selbständig realisieren ließ. Es wurde ein PLAF-Demo incl. Synth.
Dennoch sind die Tipps in diesem Thread sehr hilfreich, daher werde ich das Spiel in meiner Freizeit programmieren.

Gruß,
xout
 
Zurück