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
Ankündigung
Einklappen
Keine Ankündigung bisher.
php koordinaten system dynamisch
Einklappen
Neue Werbung 2019
Einklappen
X
-
php koordinaten system dynamisch
Stichworte: -
-
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">';
}
-
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.
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
naja das sone wutvariable und müllcode ist es nicht
Einen Kommentar schreiben:
-
Zitat von Schlafmuetz Beitrag anzeigenCode:$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">'; } }
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">'; }
Btw: Müllcode
Einen Kommentar schreiben:
-
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">';
Einen Kommentar schreiben:
-
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.
Einen Kommentar schreiben:
-
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">'; } }
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">'; }
Einen Kommentar schreiben:
-
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.
Einen Kommentar schreiben:
-
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.
Einen Kommentar schreiben:
Einen Kommentar schreiben: