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

  • Schlafmuetz
    hat ein Thema erstellt php koordinaten system dynamisch.

    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

  • Schlafmuetz
    antwortet
    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.

    Einen Kommentar schreiben:


  • Schlafmuetz
    antwortet
    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:


  • VPh
    antwortet
    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.

    Einen Kommentar schreiben:


  • Schlafmuetz
    antwortet
    naja das sone wutvariable und müllcode ist es nicht

    Einen Kommentar schreiben:


  • rkr
    antwortet
    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

    Einen Kommentar schreiben:


  • Schlafmuetz
    antwortet
    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

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    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:


  • Schlafmuetz
    antwortet
    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">';
    }

    Einen Kommentar schreiben:


  • tkausl
    antwortet
    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:


  • Schlafmuetz
    antwortet
    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:


  • tkausl
    antwortet
    Ich hab keine Ahnung, was du willst.

    Einen Kommentar schreiben:

Lädt...
X