Ankündigung

Einklappen
Keine Ankündigung bisher.

php koordinaten system dynamisch

Einklappen

Neue Werbung 2019

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

  • php koordinaten system dynamisch

    Hallo,


    ich arbeite grade an einem php koordinatensytem, was bei der ausgabe als div ausgegeben wird, also ein div ist zb x1 y 1....


    so nun überlege ich was der beste weg um es zu dynamisch zu gestalten wäre.
    meine ideen, endweder divs um den hauptpunkt laden, die anderen dynamisch nachladen ... oder die anderen divs die außerhalb der sagen wir mal sichtweite, sind per js clearen lassen....
    habe den ersten weg schon versucht umzu setzen, jedoch bekomm ich dann die fomatierung der divs nicht gebacken


  • #2
    Ich hab keine Ahnung, was du willst.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      also du hast ein figur zb die steht auf x5 und y5 und drum herum soll solle in einem gewissen radius die felder sichtbar sein. aber um es performanter gestalten dachte ich daran es dynamisch zu gestalten.

      Kommentar


      • #4
        Aha, also eine Map für ein Spiel. Was du mit "dynamisch" meinst weiß ich aber immernoch nicht. Und das mit dem Divs außenrum dynamisch nachzuladen klingt auch sinnlos. Zeig mal, was du bisher hast.
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Code:
          $zoom = 64; //groesse der felder in Pixel
          $hoch = 5;
          $runter = 4;
          $links = 9;
          $rechts = 10;
          
          
          $sql="SELECT * From playermain WHERE player_id = ". $_SESSION['player_id'] ."";
          $erg=mysql_query($sql,$DB);
          while($row=mysql_fetch_assoc($erg))
          {
          	$cur_mapid = $row['mapnummer'];
          	$player_x = $row['position_x'];
          	$player_y = $row['position_y'];
          	$playername = $row['playername'];
          	$avatar = $row['avatar'];
          	echo "<script>cur_map = '$cur_mapid';
          		player_x = '$player_x';
          		player_y = '$player_y';
          		player_name = '$playername';
          		</script>";
          	$hurensohnz_index = '<div
          			id="gameuser"
          			class="gameuser gameuser'.$row['player_id'].'"
          			data-x="'.$row['position_x'].'"
          			data-y="'.$row['position_y'].'"
          			style="left: '.($row['position_x']*$zoom-$zoom).'px; bottom: '.($row['position_y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;  background-image: url(/img/figuren/'.$avatar.'_runter.png);">'.$row['playername'].'</div>';
          
          	$op = $player_x + $rechts;
          	$up = $player_x - $links;
          	$rp = $player_y + $hoch;
          	$lp = $player_y - $runter;
          	//echo "x max". $op."<br />";//57 x> y^
          	//echo "x min".$up."<br />";//38
          	//echo "y max".$rp."<br />";//22
          	//echo "y min".$lp."<br />";// 13
          
          	$sql="SELECT max($op)-min($up)+1 AS x, max($rp)-min($lp)+1 AS y FROM koords WHERE mapnummer= $cur_mapid;";
          	$erg=mysql_query($sql,$DB);
          	while($row=mysql_fetch_assoc($erg))
          	{
          
          		echo '<div
          			style="position: relative; width:'.($row['x']*$zoom).'px; height:'.($row['y']*$zoom).'px;"
          			id="gamesize"
          			data-zoom="'.$zoom.'"
          			data-x="'.$row['x'].'"
          			data-y="'.$row['y'].'">';
          
          
          	}
          
          	echo $hurensohnz_index;
          	$sql="SELECT koords.*, koords_bilder.bildname, koords_bilder.laufbar FROM koords LEFT JOIN koords_bilder ON koords.feldid = koords_bilder.feldid WHERE x >=  $up  AND x <=  $op  AND y >=  $lp  AND y <=  $rp  AND mapnummer =  $cur_mapid;";
          	$erg=mysql_query($sql,$DB);
          	while($row=mysql_fetch_assoc($erg))
          	{
          
          				echo '<img
          		src="img/world/'.$row['bildname'].'"
          		alt=" "
          		style="left: '.($row['x']*$zoom-$zoom).'px; bottom: '.($row['y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;"
          		data-x="'.$row['x'].'"
          		data-y="'.$row['y'].'"
          		data-bildname="'.$row['bildname'].'"
          		data-laufbar="'.$row['laufbar'].'"
          		title="x'.$row['x'].' y'.$row['y'].'"
          		id="x'.$row['x'].'y'.$row['y'].'"
          		class="gamefeld">';
          
          
          }
          }
          das halt mein versuch es dynamisch, dann nach laden zu lassen also die noch nicht sichbaren felder.
          und dynamisch mein ich halt das nicht alle felder da sind sondern, wenn sie gebraucht werden geladen werden.

          und das ist das orginal mit allen feldern da. alles natürlich von mir


          Code:
          $zoom = 64; //groesse der felder in Pixel
          
          
          //Eigener Spieler erstellen
          $sql="SELECT * From playermain WHERE `player_id` = ". $_SESSION['player_id'] .";";
          $erg=mysql_query($sql,$DB);
          while($row=mysql_fetch_assoc($erg))
          {
          	$cur_mapid = $row['mapnummer'];
          	$player_x = $row['position_x'];
          	$player_y = $row['position_y'];
          	$playername = $row['playername'];
          	$avatar = $row['avatar'];
          	echo "<script>cur_map = '$cur_mapid';
          	player_x = '$player_x';
          	player_y = '$player_y';
          	player_name = '$playername';
          	</script>";
          	$hurensohnz_index = '<div
          		id="gameuser"
          		class="gameuser gameuser'.$row['player_id'].'"
          		data-x="'.$row['position_x'].'"
          		data-y="'.$row['position_y'].'"
          		style="left: '.($row['position_x']*$zoom-$zoom).'px; bottom: '.($row['position_y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;  background-image: url(/img/figuren/'.$avatar.'_runter.png);">'.$row['playername'].'</div>';
          }
          //end Eigene Spieler erstellen
          
          
          //div fuer die spielgroesse erstellen
          $sql="SELECT max(x)-min(x)+1 AS x, max(y)-min(y)+1 AS y FROM koords WHERE mapnummer= $cur_mapid;";
          $erg=mysql_query($sql,$DB);
          while($row=mysql_fetch_assoc($erg))
          {
          	echo '<div
          		style="position: relative; width:'.($row['x']*$zoom).'px; height:'.($row['y']*$zoom).'px;"
          		id="gamesize"
          		data-zoom="'.$zoom.'"
          		data-x="'.$row['x'].'"
          		data-y="'.$row['y'].'">';
          }
          echo $hurensohnz_index;
          
          //Andere Spieler erstellen
          $sql="SELECT * From playermain WHERE player_id != ". $_SESSION['player_id'] ." AND mapnummer= $cur_mapid;";
          $erg=mysql_query($sql,$DB);
          while($row=mysql_fetch_assoc($erg))
          {
          	$player_id = $row['player_id'];
          	$player_x = $row['x'];
          	$player_y = $row['y'];
          	$playername = $row['playername'];
          	$map_id = $row['mapnummer'];
          	$avatar = $row['avatar'];
          /*	echo "<script>
          	users[$player_id]['x'] = '$player_x';
          	users[$player_id]['y'] = '$player_y';
          	users[$player_id]['name'] = '$playername';
          	users[$player_id]['mapid'] = '$map_id';
          	</script>";*/
          	echo '<div
          		id="gameuser'.$row['player_id'].'"
          		class="gameuser gameuser'.$row['player_id'].'"
          		data-x="'.$row['position_x'].'"
          		data-y="'.$row['position_y'].'"
          		style="left: '.($row['position_x']*$zoom-$zoom).'px; bottom: '.($row['position_y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px; background-image: url(/img/figuren/'.$avatar.'_runter.png);">'.$row['playername'].'</div>';
          }
          
          //felder erstellen
          echo "<script>map = new Array();
          map[$cur_mapid] = new Array();
          </script>";
          $sql="SELECT koords.*, koords_bilder.bildname, koords_bilder.laufbar FROM koords LEFT JOIN koords_bilder ON koords.feldid = koords_bilder.feldid WHERE mapnummer = $cur_mapid;";
          $erg=mysql_query($sql,$DB);
          while($row=mysql_fetch_assoc($erg))
          {
          	/*echo "<script>
          	map[".$row['mapnummer']."][".$row['x']."][".$row['y']."]['img'] = '".$row['bildname']."';
          	map[".$row['mapnummer']."][".$row['x']."][".$row['y']."]['laufbar'] = '".$row['laufbar']."';
          	</script>";*/
          	echo '<img
          		src="img/world/'.$row['bildname'].'"
          		alt=" "
          		style="left: '.($row['x']*$zoom-$zoom).'px; bottom: '.($row['y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;"
          		data-x="'.$row['x'].'"
          		data-y="'.$row['y'].'"
          		data-bildname="'.$row['bildname'].'"
          		data-laufbar="'.$row['laufbar'].'"
          		title="x'.$row['x'].' y'.$row['y'].'"
          		id="x'.$row['x'].'y'.$row['y'].'"
          		class="gamefeld">';
          }

          Kommentar


          • #6
            Wann werden sie denn gebraucht? Versteh immernoch nicht, was damit genau gemeint ist. Wenn du nen ausschnitt der Map zeichnen willst, wo der Spieler zentriert ist, musst du ja nur alle Felder von player - Z bis player + Z in x- und y-richtung zeichnen.
            Zitat von nikosch
            Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

            Kommentar


            • #7
              ja richtig stimmt und wenn die figur in eine richtung geht einfach nachladen ... so wollte ich es ja machen problem ist dann die ehm sortierung der div felder
              Code:
              	echo '<img
              		src="img/world/'.$row['bildname'].'"
              		alt=" "
              		style="left: '.($row['x']*$zoom-$zoom).'px; bottom: '.($row['y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;"
              		data-x="'.$row['x'].'"
              		data-y="'.$row['y'].'"
              		data-bildname="'.$row['bildname'].'"
              		data-laufbar="'.$row['laufbar'].'"
              		title="x'.$row['x'].' y'.$row['y'].'"
              		id="x'.$row['x'].'y'.$row['y'].'"
              		class="gamefeld">';
              raster größer halt 64px mal 64px und ja somit wenn das x zb 45 ist ja dann ist das feld nicht im fenster und man sieht es nicht

              Kommentar


              • #8
                Zitat von Schlafmuetz Beitrag anzeigen
                Code:
                $zoom = 64; //groesse der felder in Pixel
                $hoch = 5;
                $runter = 4;
                $links = 9;
                $rechts = 10;
                
                
                $sql="SELECT * From playermain WHERE player_id = ". $_SESSION['player_id'] ."";
                $erg=mysql_query($sql,$DB);
                while($row=mysql_fetch_assoc($erg))
                {
                	$cur_mapid = $row['mapnummer'];
                	$player_x = $row['position_x'];
                	$player_y = $row['position_y'];
                	$playername = $row['playername'];
                	$avatar = $row['avatar'];
                	echo "<script>cur_map = '$cur_mapid';
                		player_x = '$player_x';
                		player_y = '$player_y';
                		player_name = '$playername';
                		</script>";
                	$hurensohnz_index = '<div
                			id="gameuser"
                			class="gameuser gameuser'.$row['player_id'].'"
                			data-x="'.$row['position_x'].'"
                			data-y="'.$row['position_y'].'"
                			style="left: '.($row['position_x']*$zoom-$zoom).'px; bottom: '.($row['position_y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;  background-image: url(/img/figuren/'.$avatar.'_runter.png);">'.$row['playername'].'</div>';
                
                	$op = $player_x + $rechts;
                	$up = $player_x - $links;
                	$rp = $player_y + $hoch;
                	$lp = $player_y - $runter;
                	//echo "x max". $op."<br />";//57 x> y^
                	//echo "x min".$up."<br />";//38
                	//echo "y max".$rp."<br />";//22
                	//echo "y min".$lp."<br />";// 13
                
                	$sql="SELECT max($op)-min($up)+1 AS x, max($rp)-min($lp)+1 AS y FROM koords WHERE mapnummer= $cur_mapid;";
                	$erg=mysql_query($sql,$DB);
                	while($row=mysql_fetch_assoc($erg))
                	{
                
                		echo '<div
                			style="position: relative; width:'.($row['x']*$zoom).'px; height:'.($row['y']*$zoom).'px;"
                			id="gamesize"
                			data-zoom="'.$zoom.'"
                			data-x="'.$row['x'].'"
                			data-y="'.$row['y'].'">';
                
                
                	}
                
                	echo $hurensohnz_index;
                	$sql="SELECT koords.*, koords_bilder.bildname, koords_bilder.laufbar FROM koords LEFT JOIN koords_bilder ON koords.feldid = koords_bilder.feldid WHERE x >=  $up  AND x <=  $op  AND y >=  $lp  AND y <=  $rp  AND mapnummer =  $cur_mapid;";
                	$erg=mysql_query($sql,$DB);
                	while($row=mysql_fetch_assoc($erg))
                	{
                
                				echo '<img
                		src="img/world/'.$row['bildname'].'"
                		alt=" "
                		style="left: '.($row['x']*$zoom-$zoom).'px; bottom: '.($row['y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;"
                		data-x="'.$row['x'].'"
                		data-y="'.$row['y'].'"
                		data-bildname="'.$row['bildname'].'"
                		data-laufbar="'.$row['laufbar'].'"
                		title="x'.$row['x'].' y'.$row['y'].'"
                		id="x'.$row['x'].'y'.$row['y'].'"
                		class="gamefeld">';
                
                
                }
                }
                das halt mein versuch es dynamisch, dann nach laden zu lassen also die noch nicht sichbaren felder.
                und dynamisch mein ich halt das nicht alle felder da sind sondern, wenn sie gebraucht werden geladen werden.

                und das ist das orginal mit allen feldern da. alles natürlich von mir


                Code:
                $zoom = 64; //groesse der felder in Pixel
                
                
                //Eigener Spieler erstellen
                $sql="SELECT * From playermain WHERE `player_id` = ". $_SESSION['player_id'] .";";
                $erg=mysql_query($sql,$DB);
                while($row=mysql_fetch_assoc($erg))
                {
                	$cur_mapid = $row['mapnummer'];
                	$player_x = $row['position_x'];
                	$player_y = $row['position_y'];
                	$playername = $row['playername'];
                	$avatar = $row['avatar'];
                	echo "<script>cur_map = '$cur_mapid';
                	player_x = '$player_x';
                	player_y = '$player_y';
                	player_name = '$playername';
                	</script>";
                	$hurensohnz_index = '<div
                		id="gameuser"
                		class="gameuser gameuser'.$row['player_id'].'"
                		data-x="'.$row['position_x'].'"
                		data-y="'.$row['position_y'].'"
                		style="left: '.($row['position_x']*$zoom-$zoom).'px; bottom: '.($row['position_y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;  background-image: url(/img/figuren/'.$avatar.'_runter.png);">'.$row['playername'].'</div>';
                }
                //end Eigene Spieler erstellen
                
                
                //div fuer die spielgroesse erstellen
                $sql="SELECT max(x)-min(x)+1 AS x, max(y)-min(y)+1 AS y FROM koords WHERE mapnummer= $cur_mapid;";
                $erg=mysql_query($sql,$DB);
                while($row=mysql_fetch_assoc($erg))
                {
                	echo '<div
                		style="position: relative; width:'.($row['x']*$zoom).'px; height:'.($row['y']*$zoom).'px;"
                		id="gamesize"
                		data-zoom="'.$zoom.'"
                		data-x="'.$row['x'].'"
                		data-y="'.$row['y'].'">';
                }
                echo $hurensohnz_index;
                
                //Andere Spieler erstellen
                $sql="SELECT * From playermain WHERE player_id != ". $_SESSION['player_id'] ." AND mapnummer= $cur_mapid;";
                $erg=mysql_query($sql,$DB);
                while($row=mysql_fetch_assoc($erg))
                {
                	$player_id = $row['player_id'];
                	$player_x = $row['x'];
                	$player_y = $row['y'];
                	$playername = $row['playername'];
                	$map_id = $row['mapnummer'];
                	$avatar = $row['avatar'];
                /*	echo "<script>
                	users[$player_id]['x'] = '$player_x';
                	users[$player_id]['y'] = '$player_y';
                	users[$player_id]['name'] = '$playername';
                	users[$player_id]['mapid'] = '$map_id';
                	</script>";*/
                	echo '<div
                		id="gameuser'.$row['player_id'].'"
                		class="gameuser gameuser'.$row['player_id'].'"
                		data-x="'.$row['position_x'].'"
                		data-y="'.$row['position_y'].'"
                		style="left: '.($row['position_x']*$zoom-$zoom).'px; bottom: '.($row['position_y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px; background-image: url(/img/figuren/'.$avatar.'_runter.png);">'.$row['playername'].'</div>';
                }
                
                //felder erstellen
                echo "<script>map = new Array();
                map[$cur_mapid] = new Array();
                </script>";
                $sql="SELECT koords.*, koords_bilder.bildname, koords_bilder.laufbar FROM koords LEFT JOIN koords_bilder ON koords.feldid = koords_bilder.feldid WHERE mapnummer = $cur_mapid;";
                $erg=mysql_query($sql,$DB);
                while($row=mysql_fetch_assoc($erg))
                {
                	/*echo "<script>
                	map[".$row['mapnummer']."][".$row['x']."][".$row['y']."]['img'] = '".$row['bildname']."';
                	map[".$row['mapnummer']."][".$row['x']."][".$row['y']."]['laufbar'] = '".$row['laufbar']."';
                	</script>";*/
                	echo '<img
                		src="img/world/'.$row['bildname'].'"
                		alt=" "
                		style="left: '.($row['x']*$zoom-$zoom).'px; bottom: '.($row['y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;"
                		data-x="'.$row['x'].'"
                		data-y="'.$row['y'].'"
                		data-bildname="'.$row['bildname'].'"
                		data-laufbar="'.$row['laufbar'].'"
                		title="x'.$row['x'].' y'.$row['y'].'"
                		id="x'.$row['x'].'y'.$row['y'].'"
                		class="gamefeld">';
                }
                $hurensohnz_index?

                Btw: Müllcode
                Standards - Best Practices - AwesomePHP - Guideline für WebApps

                Kommentar


                • #9
                  naja das sone wutvariable und müllcode ist es nicht

                  Kommentar


                  • #10
                    Moin,

                    nutz bitte [php]-Tags für dienen PHP-Code.

                    Habe auch noch nicht ganz verstanden, was du machen möchtest.
                    Kannst du mal kurz das Anwendungsszenario beschreiben? Dass es um eine Figur auf der Karte geht ist klar, dass nur ein gewisser Teil der Karte im Umkreis der Figur angezeigt werden soll auch. Was folgt dann, soll die Figur sich bewegen? Dann müsste man beim Neuladen der Seite ja nur den Sichtkreis neu berechnen und entsprechend ausgeben.


                    Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
                    Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
                    Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm

                    Deine Variablenbezeichnungen für Ergebnisse aus der Datenbank solltest du nochmal überdenken, irgendwann verliert man bei den $row's den Überblick. Zudem brauchen fremde die sich den Code ansehen bei solchen Bezeichnern länger, nachzuvollziehen was die Variable denn aktuell enthalten könnte.

                    Ein weiterer Schritt in Richtung effizienten Programmierens durch strukturierten und gut lesbaren Code: http://php-de.github.io/jumpto/eva-prinzip/
                    Erst deine Informationen beschaffen und dann den Output entsprechend zusammenstellen und ausgeben.

                    wutvariable
                    Haben in Code den man irgendjemandem zeigen möchte nichts verloren.
                    Relax, you're doing fine.
                    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                    Kommentar


                    • #11
                      ja wenn die figur sich weiter bewegt,m sollte halt wieder ein stück der karte nachgeladen werden, um es perfomanter zu gestalten.

                      weil wenn man zum aller erstenmal alle bilder runterladen muss, hat man schon eine etwa längere ladezeit. deswegen dachte ich halt das man es dynamisch gestalten sollte.

                      Kommentar


                      • #12
                        PHP-Code:
                        $sql="SELECT koords.*, koords_bilder.bildname, koords_bilder.laufbar FROM koords LEFT JOIN koords_bilder ON koords.feldid = koords_bilder.feldid WHERE mapnummer = $cur_mapid;";
                        $erg=mysql_query($sql,$DB);
                        while(
                        $row=mysql_fetch_assoc($erg))
                        {
                            echo 
                        '<img
                                src="img/world/'
                        .$row['bildname'].'"
                                alt=" "
                                style="left: '
                        .($row['x']*$zoom-$zoom).'px; bottom: '.($row['y']*$zoom-$zoom).'px; width:'.$zoom.'px; height:'.$zoom.'px;"
                                data-x="'
                        .$row['x'].'"
                                data-y="'
                        .$row['y'].'"
                                data-bildname="'
                        .$row['bildname'].'"
                                data-laufbar="'
                        .$row['laufbar'].'"
                                title="x'
                        .$row['x'].' y'.$row['y'].'"
                                id="x'
                        .$row['x'].'y'.$row['y'].'"
                                class="gamefeld">'
                        ;

                        wie kann ich da ne for schleife mit rein bringen, um von 1 mit x und y anzufangen. bezüglich des styles damit ich es so sortieren kann und dann hab ich die karte auch schon dynamisch, dann wird erstmal nur der umkreis geladen und gezeigt.

                        Kommentar

                        Lädt...
                        X