Ankündigung

Einklappen
Keine Ankündigung bisher.

Schleifenchaos. Automatische Entfernungsberechnung.

Einklappen

Neue Werbung 2019

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

  • Schleifenchaos. Automatische Entfernungsberechnung.

    Hey,

    ich bin ein richtiger Neuling in der Welt solcher Programmiersprachen.
    Als kleine Übung und weil ich es gut gebrauchen könnte, habe ich mich entschieden eine Seite zu schreiben, in der man sieht wo auf einer 3 Dimensionalen Karte die 6(+-) vom Benutzer ausgewählten Punkte nur 16 Einheiten entfernt sind. (Klingt Sinnlos; ist für ein Spiel )

    So weit bin ich bis jetzt:
    PHP-Code:
    <?php
    $x1 
    $_POST["x1"];
    $y1 $_POST["y1"];
    $z1 $_POST["z1"];
    $x2 $_POST["x2"];
    $y2 $_POST["y2"];
    $z2 $_POST["z2"];
    $x3 $_POST["x3"];
    $y3 $_POST["y3"];
    $z3 $_POST["z3"];
    $x4 $_POST["x4"];
    $y4 $_POST["y4"];
    $z4 $_POST["z4"];
    $x5 $_POST["x5"];
    $y5 $_POST["y5"];
    $z5 $_POST["z5"];
    $x6 $_POST["x6"];
    $y6 $_POST["y6"];
    $z6 $_POST["z6"];
    #Definiert die Koordinaten der Html Seite als Php Variablen

    #Sucht in jede richtung (x,y,z) den kleinsten und groessten Wert, um ein kleineres Gebiet zu haben
    #Anfang kleinstes x!
    if($x1 <= $x2 $x1 <= $x3 $x1 <= $x4 $x1 <= $x5 $x5 <= $x6)
        {
        
    $sx $x1;
        }
        else{}
    if(
    $x2 <= $x1 $x2 <= $x3 $x2 <= $x4 $x2 <= $x5 $x5 <= $x6)
        {
        
    $sx $x2;
        }
        else{}

    if(
    $x3 <= $x1 $x3 <= $x2 $x3 <= $x4 $x3 <= $x5 $x5 <= $x6)
        {
        
    $sx $x3;
        }
        else{}

    if(
    $x4 <= $x1 $x4 <= $x2 $x4 <= $x3 $x4 <= $x5 $x5 <= $x6)
        {
        
    $sx $x4;
        }
        else{}


    if(
    $x5 <= $x1 $x5 <= $x2 $x5 <= $x3 $x5 <= $x4 $x5 <= $x6)
        {
        
    $sx $x5;
        }
        else{}

    if(
    $x6 <= $x1 $x6 <= $x2 $x6 <= $x3 $x6 <= $x4 $x6 <= $x5)
        {
        
    $sx $x6;
        }
        else{}
    #Ende kleinstes x!
    #Anfang größtes x!
    if($x1 >= $x2 $x1 >= $x3 $x1 >= $x4 $x1 >= $x5 $x5 >= $x6)
        {
        
    $bx $x1;
        }
        else{}
    if(
    $x2 >= $x1 $x2 >= $x3 $x2 >= $x4 $x2 >= $x5 $x5 >= $x6)
        {
        
    $bx $x2;
        }
        else{}

    if(
    $x3 >= $x1 $x3 >= $x2 $x3 >= $x4 $x3 >= $x5 $x5 >= $x6)
        {
        
    $bx $x3;
        }
        else{}

    if(
    $x4 >= $x1 $x4 >= $x2 $x4 >= $x3 $x4 >= $x5 $x5 >= $x6)
        {
        
    $bx $x4;
        }
        else{}


    if(
    $x5 >= $x1 $x5 >= $x2 $x5 >= $x3 $x5 >= $x4 $x5 >= $x6)
        {
        
    $bx $x5;
        }
        else{}

    if(
    $x6 >= $x1 $x6 >= $x2 $x6 >= $x3 $x6 >= $x4 $x6 >= $x5)
        {
        
    $bx $x6;
        }
        else{}
    #Ende größtes x
    #Anfang kleinstes y
    if($y1 <= $y2 $y1 <= $y3 $y1 <= $y4 $y1 <= $y5 $y5 <= $y6)
        {
        
    $sy $y1;
        }
        else{}
    if(
    $y2 <= $y1 $y2 <= $y3 $y2 <= $y4 $y2 <= $y5 $y5 <= $y6)
        {
        
    $sy $y2;
        }
        else{}

    if(
    $y3 <= $y1 $y3 <= $y2 $y3 <= $y4 $y3 <= $y5 $y5 <= $y6)
        {
        
    $sy $y3;
        }
        else{}

    if(
    $y4 <= $y1 $y4 <= $y2 $y4 <= $y3 $y4 <= $y5 $y5 <= $y6)
        {
        
    $sy $y4;
        }
        else{}


    if(
    $y5 <= $y1 $y5 <= $y2 $y5 <= $y3 $y5 <= $y4 $y5 <= $y6)
        {
        
    $sy $y5;
        }
        else{}

    if(
    $y6 <= $y1 $y6 <= $y2 $y6 <= $y3 $y6 <= $y4 $y6 <= $y5)
        {
        
    $sy $y6;
        }
        else{}
    #Ende
    #Anfang
    if($y1 >= $y2 $y1 >= $y3 $y1 >= $y4 $y1 >= $y5 $y5 >= $y6)
        {
        
    $by $y1;
        }
        else{}
    if(
    $y2 >= $y1 $y2 >= $y3 $y2 >= $y4 $y2 >= $y5 $y5 >= $y6)
        {
        
    $by $y2;
        }
        else{}

    if(
    $y3 >= $y1 $y3 >= $y2 $y3 >= $y4 $y3 >= $y5 $y5 >= $y6)
        {
        
    $by $y3;
        }
        else{}

    if(
    $y4 >= $y1 $y4 >= $y2 $y4 >= $y3 $y4 >= $y5 $y5 >= $y6)
        {
        
    $by $y4;
        }
        else{}


    if(
    $y5 >= $y1 $y5 >= $y2 $y5 >= $y3 $y5 >= $y4 $y5 >= $y6)
        {
        
    $by $y5;
        }
        else{}

    if(
    $y6 >= $y1 $y6 >= $y2 $y6 >= $y3 $y6 >= $y4 $y6 >= $y5)
        {
        
    $by $y6;
        }
        else{}
    #ende
    #Anfang kleinstes z
    if($z1 <= $z2 $z1 <= $z3 $z1 <= $z4 $z1 <= $z5 $z5 <= $z6)
        {
        
    $sz $z1;
        }
        else{}
    if(
    $z2 <= $z1 $z2 <= $z3 $z2 <= $z4 $z2 <= $z5 $z5 <= $z6)
        {
        
    $sz $z2;
        }
        else{}

    if(
    $z3 <= $z1 $z3 <= $z2 $z3 <= $z4 $z3 <= $z5 $z5 <= $z6)
        {
        
    $sz $z3;
        }
        else{}

    if(
    $z4 <= $z1 $z4 <= $z2 $z4 <= $z3 $z4 <= $z5 $z5 <= $z6)
        {
        
    $sz $z4;
        }
        else{}


    if(
    $z5 <= $z1 $z5 <= $z2 $z5 <= $z3 $z5 <= $z4 $z5 <= $z6)
        {
        
    $sz $z5;
        }
        else{}

    if(
    $z6 <= $z1 $z6 <= $z2 $z6 <= $z3 $z6 <= $z4 $z6 <= $z5)
        {
        
    $sz $z6;
        }
        else{}
    #Ende
    #Anfang
    if($z1 >= $z2 $z1 >= $z3 $z1 >= $z4 $z1 >= $z5 $z5 >= $z6)
        {
        
    $bz $z1;
        }
        else{}
    if(
    $z2 >= $z1 $z2 >= $z3 $z2 >= $z4 $z2 >= $z5 $z5 >= $z6)
        {
        
    $bz $z2;
        }
        else{}

    if(
    $z3 >= $z1 $z3 >= $z2 $z3 >= $z4 $z3 >= $z5 $z5 >= $z6)
        {
        
    $bz $z3;
        }
        else{}

    if(
    $z4 >= $z1 $z4 >= $z2 $z4 >= $z3 $z4 >= $z5 $z5 >= $z6)
        {
        
    $bz $z4;
        }
        else{}


    if(
    $z5 >= $z1 $z5 >= $z2 $z5 >= $z3 $z5 >= $z4 $z5 >= $z6)
        {
        
    $bz $z5;
        }
        else{}

    if(
    $z6 >= $z1 $z6 >= $z2 $z6 >= $z3 $z6 >= $z4 $z6 >= $z5)
        {
        
    $bz $z6;
        }
        else{}
    #ende
    #Verzweifelter "Schleifenversuch"
    while($sy == $bx)
        {
        while(
    $sy == $by)
            {
            while(
    $sx == $bx)
                {
                echo 
    "$sx";
                
    $sx++
                }
            }
        }
    #Ausgabe zum Testen
    echo "$sx";
    echo 
    "$bx";
    echo 
    "$sy";
    echo 
    "$by";
    echo 
    "$sz";
    echo 
    "$bz";
    ?>
    Gibt es einen sinnvolleren/kürzeren weg die kleinsten/größten Werte rauszusuchen?
    Wegen dem Streckenmessen hab ich mir schon Gedanken gemacht. Ich hatte vor erstmal die kleinsten Werte in jede Richtung zu übernehmen, die entfernung zu jedem Punkt zu berechnen (mit dem Satz des Pythagoras, hab ich schon geschafft) und dann x (bspw.) um 0.1 Einheiten zu erhöhen. Das solange bis der Testwert beim höchsten x Wert ist. Dann erhöht sich der z Wert um 0.1 und dann geht der x Wert wieder in kleinen Schritten durch. Und so weiter. Wenn z durch ist, soll sich dann y um 1 erhöhen und dann wieder x und z von vorne, bis y auch beim höchsten Wert angekommen ist.
    Das Problem ist nicht wirklich das rechnen, sondern eher das Schleifensystem.
    Solltet ihr sonstige Verbesserungsvorschläge für die Seite haben, her damit

    Schonmal danke für die Hilfe.


    (Um den Sinn zu erklären:
    Es gibt in einem Spiel so besondere Punkte, die wenn du sich ihnen bis auf 16 Blöcke näherst, Dinge erzeugt werden. Mit diesem Programm möchte ich Punkt für Punkt testen, wo 6 von diesen Punkten aktiv sind (also im 16 Block radius)

    WWtom


  • #2
    Ich würde dir zuerst mal das Stichwort "Arrays" geben, die kannst du sowohl für HTML-Formulare als auch innerhalb von PHP für deine Daten verwenden.
    http://php-de.github.io/jumpto/form/ Siehe Mehrdimensionale Elementtypen

    Dazu seien hier noch for-Schleifen und die PHP-eigenen Array Funktionen genannt.
    mysql ist veraltet Mails senden: Ohne Probleme und ohne mail()
    PHP-Code:
    echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>'

    Kommentar

    Lädt...
    X