kostenloser Webspace werbefrei: lima-city


durchgängige Verbindungen von DIVs prüfen

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    airfield-manager

    Kostenloser Webspace von airfield-manager

    airfield-manager hat kostenlosen Webspace.

    Hallo zusammen

    Gleich vornweg mir ist egal, ob es eine Javascript oder PHP Lösung wird. Da ich vermute mit Javascript die umfangreicheren Möglichkeiten zur Verfügung zu haben ist es in diesem Bereich gepostet.

    Ich habe ein Gelände, auf dem ich verschiedene Gebäude bauen möchte. Die Gebäude dürfen aber nur funktionieren, wenn sie ans Strassennetz angeschlossen sind und das Strassennetz auch durchgehend bis zur öffentlichen tag/anbindung">Anbindung besteht.

    Das Gelände selber ist ein DIV und jedes Gebäude wie auch die Strassen sind eigene DIVs. Die Gebäude können wenn sie platziert werden sollen innerhalb des Geländes verschoben werden Rastergrösse 10x10px und die Gebäude können nicht übereinander gebaut werden. - Ist bereits gelöst.
    Wie kann ich nun aber abfragen, ob das Gebäude ans Strassennetz angeschlossen ist, welches dann auch noch durchgehend bis zum Rand des Geländes geht?

    Ich hätte eine Idee abzufragen, ob ein Gebäude überhaupt an der Strasse liegt aber dann nicht ob die Strasse durchgehend ist.

    Hoffe ich konnte mein Problem erläutern.
    Den aktuellen Stand kann man sich anschauen unter:
    http://airfieldmanager-game.de/
    Man muss eingeloggt sein. Benutzer: Test Passwort: Test160906 (Werde ich nach Lösung oder in ein par Tagen wieder ändern)
    Links im Menü auf Geländeübersicht. (Die Grafiken sind nur zum Test, man kann anhand der Bilder noch nicht untescheiden, wass es ist. Tipp: lang und schmal sind Strassen ;) )

    Ihr könnt auch neue Gebäude/Strassen kaufen zum testen. Ich könnte den einzelnen Gebäuden noch Klassen gemäss Ihrem Typ zuweisen - Dies wird sicher nötig werden für die Abfrage.

    Hui ist viel Text geworden. - Sorry.
    Hat jemand eine Idee, wie so eine Abfrage realisiert werden könnte?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. airfield-manager schrieb:
    Ich hätte eine Idee abzufragen, ob ein Gebäude überhaupt an der Strasse liegt aber dann nicht ob die Strasse durchgehend ist.
    Das ist schon einmal brauchbar. Verallgemeinere das zu einer Funktion, die prüft, ob zwei Objekte aneinander grenzen.

    Danach kannst du ausgehend von der öffentlichen Anbindung die Straßen verfolgen, um zu sehen, welche davon erreichbar sind.
    Hier etwas Pseudocode:
    var strassen // Array aller Straßen, inklusive öffentlicher Anbindung
    var gebaeude // Array aller Gebäude
    
    // Zunächst alle Straßen als "nicht erreichbar" markieren, außer die öffentliche Anbindung.
    for (var i=0; i<strassen.length; i++) {
      strassen[i].erreichbar = istOeffentlichErreichbar(strassen[i])
    }
    
    // Nun alle angrenzenden Straßen ebenfalls als erreichbar definieren
    do {
      var veraendert=false
      for (var i=0; i<strassen.length; i++) {
        if (strassen[i].erreichbar) {
          for (var j=0; j<strassen.length; j++) {
            if (!strassen[j].erreichbar && grenzenAneinander(strassen[i], strassen[j])) {
              strassen[j].erreichbar=true
              veraendert=true
            }
          }
        }
      }
    } while (veraendert) // Nach jeder neu gefundenen Straße, die ebenfalls angrenzt, muss der Vorgang wiederholt werden, da an diese noch weitere Straßen angrenzen könnten.
    
    // Und zuletzt die Gebäude
    for (var i=0; i<gebaeude.length; i++) {
      gebaeude[i].erreichbar=false
      for (var j=0; j<strassen.length; j++) {
        if (strassen[j].erreichbar && grenzenAneinander(gebaeude[i], strassen[j])) {
          gebaeude[i].erreichbar=true
          break
        }
      }
    }
    // Jetzt steht bei jedem Gebäude ein Attribut "erreichbar" auf true oder false.
    Dieser Vorgang muss dann eben nach jeder Änderung (setzen, löschen, verschieben von Straßen/Gebäuden) wiederholt werden.
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!