Like Tree1Danke
  • 1 Beitrag von genodeftest
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1792
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Nimmer ist offline Mitglied
    Registriert seit
    Nov 2010
    Beiträge
    12
    Hallo zusammen,

    erst einmal; hoffentlich habe ich einen passenden Namen für den Thread gewählt. Ich war mir nicht sicher wie ich es formulieren sollte.

    Momentan programmiere ich an einem kleinen Brettspiel. Das Spielbrett hat 5x5 Felder. So weit ja sehr simpel. Allerdings habe ich ein eindimensionales Array gewählt um das Spielfeld intern darzustellen, das Einzige auf das ich bis jetzt achten musste war die Umrechnung von zweidimensionalen Indizes auf einen eindimensionalen und darauf wie ich Nachbarfelder identifiziere (beides ist ja sehr einfach und hat keine Probleme bereitet).

    Jetzt bin ich aber auf ein Problem gestossen bei dem ich nicht so richtig weiter komme.
    Ich möchte unterschiedliche Bereiche des Spielfeldes identifizieren können. Die Bereiche möchte ich anhand der Entfernung zum Zentrum des Brettes unterscheiden. Als Abstand scheint sich Manhatten-Distance anzubieten.

    Aber ich habe keine Ahnung wie ich die auf dem eindimensionalen Array berechnen soll.

    Die Struktur wieder auf zweidimensional ändern möchte ich nicht da ich mit meiner Implementierung schon relativ weit bin und die Abstände nur für ein einziges Feature brauche.

    Schonmal danke fürs Lesen
    und danke im Voraus für eure Antworten
     

  2. #2
    genodeftest ist offline Mitglied Smaragd
    Registriert seit
    Jun 2009
    Beiträge
    1.023
    Hi
    1. Warum nutzt du nicht ein 2dimensionales Array? Dafür sind höhere Programmiersprachen doch da. Oder willst du nicht gleich Assembler schreiben
    2. Es gibt einen Modulo-Operator, in deinem Fall könnte man aus dem Index i die Zeilen und Spalten so berechnen:
    Code java:
    1
    2
    
    int spalte = i%5;
    int zeile = i/5;
    Damit kannst du dann einfach genauso vorgehen wie sonst bei der Berechnung der Manhattan-Distance. Also so:
    Code java:
    1
    2
    3
    4
    
    int source, dest; // Indizes im Array für die Start- und Zielposition, gegebene Parameter
    int distanceX = Math.abs(source%5-dest%5);
    int distanceY = Math.abs(source/5-dest/5);
    int distance = distanceX + distanceY;
    Nimmer bedankt sich. 
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.

Thema nicht erledigt

Ähnliche Themen

  1. Google Distance Matrix API
    Von donmato im Forum Java
    Antworten: 2
    Letzter Beitrag: 04.04.12, 18:53
  2. Arraylist mit zweidimensionalen Array koppeln
    Von DarkPhoenixX im Forum Java
    Antworten: 2
    Letzter Beitrag: 07.02.08, 12:55
  3. Zweidimensionalen Array füllen
    Von Parder im Forum Java
    Antworten: 8
    Letzter Beitrag: 11.09.07, 10:29
  4. Antworten: 4
    Letzter Beitrag: 13.03.07, 14:17
  5. Antworten: 1
    Letzter Beitrag: 22.09.04, 19:21