PHP Kartensystem Frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Kartensystem Frage

    Hi,
    ich wollte mal fragen, also hier der Code:

    Die Klasse:

    PHP-Code:
    class MyMap {     private $map_width;     private $map_height;     private $field_width_px;     private $field_height_px;       private $window_width;     private $window_height;     private $window_topleft_x;     private $window_topleft_y;       private $fields;       private $x;     private $y;       public function setFields($fields)     {         $this->fields $fields;     }     public function setField($x$y$field)     {         if (($x 0) || ($y 0) || ($x >= $this->map_width) || ($y >= $this->map_height)) return false;         $this->fields[$x][$y] = $field;     }     public function getField($x$y)     {         if (@isset($this->fields[$x][$y])) return $this->fields[$x][$y]; else return false;     }       public function setSize($width$height)     {         $this->map_width intval($width);         $this->map_height intval($height);     }     public function setFieldSize($width_px$height_px)     {         $this->field_width_px intval($width_px);         $this->field_height_px intval($height_px);     }     public function setPosition($x$y)     {         if ($x 0$x 0;         if ($y 0$y 0;         if ($x >= $this->map_width$x $this->map_width 1;         if ($y >= $this->map_height$y $this->map_height 1;         $this->$x;         $this->$y;         $this->setWindowPosition($x - ($this->window_width >> 1), $y - ($this->window_height >> 1));     }     public function setWindowSize($width$height)     {         $this->window_width intval($width);         $this->window_height intval($height);     }     public function setWindowPosition($x$y)     {         if ($x 0$x 0;         if ($y 0$y 0;         if ($x+$this->window_width $this->map_width$x $this->map_width $this->window_width;         if ($y+$this->window_height $this->map_height$y $this->map_height $this->window_height;         $this->window_topleft_x intval($x);         $this->window_topleft_y intval($y);     }     public function getWindowHtml()     {         $code '<div id="mymapwindow">';         $window_bottomright_x = ($this->window_topleft_x + ($this->window_width-1) );         $window_bottomright_y = ($this->window_topleft_y + ($this->window_height-1) );         for($y=$this->window_topleft_y$y <= $window_bottomright_y$y++)         {             for($x=$this->window_topleft_x$x <= $window_bottomright_x$x++)             {                 $field $this->getField($x$y);                 if ($field)                 {                     $color $field['color'];                     $caption $field['caption'];                 }                 else                 {                     $color '#009933';                     $caption '';                 };                 $code .= '<div style="float: left; width: '.($this->field_width_px-1).'px; height: '.($this->field_height_px-1).'px; margin-right: 1px; margin-bottom: 1px; background-color: '.$color.'; text-align: center;" title=" '.$caption.' ">('.$x.'|'.$y.')</div>';             };             $code .= '<div style="clear:both;"></div>';         };         $code .= '</div>';         return $code;     }     public function showWindow()     {         echo $this->getWindowHtml();     }     public function getHtml()     {         $code '<div id="mymap">';         for($y=0$y $this->map_height$y++)         {             for($x=0$x $this->map_width$x++)             {                 $field $this->getField($x$y);                 if ($field)                 {                     $color $field['color'];                     $caption $field['caption'];                 }                 else                 {                     $color '#009933';                     $caption '';                 };                 $code .= '<div style="float: left; width: '.($this->field_width_px-1).'px; height: '.($this->field_height_px-1).'px; margin-right: 1px; margin-bottom: 1px; background-color: '.$color.'; text-align: center;" title=" '.$caption.' ">('.$x.'|'.$y.')</div>';             };             $code .= '<div style="clear:both;"></div>';         };         $code .= '</div>';         return $code;     }     public function show()     {         echo $this->getHtml();     } }; 
    Hier das Skript zum aufrufen der Klasse:

    PHP-Code:
    $map = new MyMap(); $map->setSize(2525); $map->setFieldSize(5030); $map->setField(1812, array("color"=>'#006699'"caption"=>'Wasser') ); $map->setField(1010, array("color"=>'#CCCCCC'"caption"=>'Berge') ); $map->setWindowSize(99); $map->setPosition(167); $map->showWindow(); 
    Nun meine Frage, wie kann ich diese Karte draggable machen, also so einstellen das man die Karte mit der Maus umherziehen kann?

    Mfg Minecrafter001

  • #2
    Du erwartest ernsthaft auf den hingerotzten Code eine Antwort? Mal davon abgesehen, dass PHP am Server läuft. Wenn du etwas im Browser bewegen möchtest, brauchst du JavaScript.

    Kommentar


    • #3
      Ja meinte ich ja mit JavaScript. Mit PHP ists ja logisch das das nicht geht ...

      Kommentar


      • #4
        Warum postest du dann PHP-Code?

        Kommentar


        • #5
          Weil ich mich frage, wie ich mittels JavaScript, diesen Auschnitt der Karte bewegen kann.

          Kommentar


          • #6
            JavaScript interessiert sich nicht für PHP-Code.

            Kommentar


            • #7
              Ja kenne mich mit JavaScript nicht so gut aus, deswegen die Frage.

              Kommentar


              • #8
                Keiner mehr da der mir helfen kann?

                Kommentar


                • #9
                  Du hast irgendeine PHP-Klasse die scheinbar etwas HTML erzeugt welches dann wohl dafür sorgt, dass da eine Karte angezeigt wird.
                  Wir wissen nicht was das für eine Klasse ist und bei der Code-Formatierung wird auch kaum jemand Lust haben, dass Teil auch nur ansatzweise zu überfliegen.

                  Wie schon gesagt wurde passiert das was du willst clientseitig und dazu ist Javascript notwendig - genauer gesagt die Map-Api, die verwendet wird. Allerdings gibt es bei allem was du bisher gepostet hast keinen Hinweis darauf, welche Map-Api hier verwendet wird.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Das ist der Link von dem ich den Code hab: Gameseal - Play your Browsergame - Der Weg zum eigenen Browsergame - Die Karte

                    Dort auch mit sortiertem Code ^^

                    Kommentar


                    • #11
                      Ok - kurz überflogen das Teil. Ich war da etwas auf dem Holzweg und dachte dahinter würde sich irgendwas auf Basis von Google-Maps oder einer ähnlichen Map eines anderen Anbieters verbergen. Es scheint sich dabei jedoch um ein rein statischen Output zu handeln ohne irgendwelche Javascriptfunktionalitäten.

                      Für das was du willst, müsstest du dich schon eingehender mit Javascript sowie AJAX-Technologien befassen - das kriegst du da jetzt nicht mal eben mit ein paar zusätzlichen Zeilen mit rein.
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        So hab das Skript mal bearbeitet, hier der momentane Stand.

                        http://www.age-of-villages.de/test/index.php

                        Muss jetzt nurnoch die anderen tiles laden lassen, also wenn man die Karte bewegt, das dann die tiles aussenrum alle nachgeladen werden, wobei das bei mir jetzt hackt, weil ich nicht genau weiss wie ich die tiles nachladen lassen soll.

                        Kommentar


                        • #13
                          Stichwort AJAX. jQuery bietet entsprechende Funktionen, die du in Verbindung mit den Draggable-Events nutzen kannst. Serverseitig brauchst du natürlich ein Script, dass dir daraufhin auch entsprechend die weiteren Tiles liefert.
                          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                          Schön - etwas Geschichte kann ja nicht schaden.
                          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                          Kommentar


                          • #14
                            So, erstmal sorry das ich so spät antworte, hatte viel zu tun in letzter Zeit ^^

                            Jo, stehe gerade auf dem Schlauch, kannst es mir vielleicht ein bisschen genauer erläutern?

                            Kommentar


                            • #15
                              Code:
                               
                              $( "#deineMap" ).draggable({
                                    stop: function() {
                              
                                    //Hier dein Code der ermittelt an welche Position die Karte verschoben wurde.
                              
                                   $.getJSON( "/deinPHPscript.php", {
                                       posX: "200",
                                       poxY: "180"
                                   })
                                  .done(function( data ) {
                                    //dein Code der die zurückgelieferten Tiles in das vorhandene Dom einhängt
                                  });
                              });
                              Nur ein grober Ansatz wie ich ihn mir vorstellen könnte ohne zu wissen ob das ein tatsächlich gangbarer Weg wär oder ob das in die Hose gehen würd. Im Detail musst du es jedenfalls selber ausarbeiten, wofür du dich eben mit jQuery und AJAX weiter auseinandersetzen musst.
                              Zuletzt geändert von Quetschi; 24.06.2014, 10:23.
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X