Mehrere Y Koordinaten von Spielern abgleichen

Dieses Thema im Forum "Programmierung" wurde erstellt von McWizzardDev, 29. Februar 2016.

  1. McWizzardDev
    Offline

    McWizzardDev

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    58
    Guten Abend,

    Ich sitze gerade an JumpDown,
    es gibt 3 verschiedene Maps man nacheinander absolviert. Für jede Map möchte ich das die 3 am weitesten Spieler Punkte bekommen. Wie soll ich herausfinden, welche drei Spieler (Platz 1, 2, 3) am weitesten unten sind. Es gibt eine Location pro Map, die den Boden festlegt, den mal erreichen muss. Bisher mache ich das so, ich gehe jeden Spieler durch und gleiche die tiefe mit jeden anderem Spieler ab, aber ich bin mir unsicher, wie würdet ihr das machen?
    (Bitte genaue Beschreibung)

    Ps; Danke schon im voraus
     
    #1
  2. Kronos197
    Offline

    Kronos197

    Registriert seit:
    20. Dezember 2013
    Beiträge:
    153
    Ort:
    Frankfurt
    Minecraft:
    Kronos197
    Also mir fallen da 2 Methode ein....

    Die erste....
    Du könntest die Distance von jedem Spieler und der einen Location am boden erechnen lassen, glaube die methode hieß loc.getDistance(Location) und dann jeweil die drei niedrigsten herrausbekommen indem du sie durch zwei ineinander vorkommende vorschleifen duchgehst.
    Code (Text):
    1. ArrayList<Player> spieler; //Die Liste mit allen Spielern
    2. Location finish; //Die Location am boden
    3. Player place1;
    4. Player place2;
    5. Player place3;
    6. for(int i = 0; i < 3; i++)
    7. {
    8.      int minDistance = Integer.MAX_VALUE
    9.         Player bestPlayer;
    10.      for(Player player : spieler)
    11.      {
    12.  
    13.         int distance = finish.getDistance(player.getLocation());
    14.        if(minDistance > distance)
    15.        {
    16.           minDistance = distance;
    17.           bestPlayer = player;
    18.         }
    19.      }
    20.      if(place1 == null)
    21.      {
    22.         place1 = bestPlayer;
    23.         spieler.remove(bestPlayer);
    24.      }
    25.      else if(place2 == null)
    26.      {
    27.         place2 = bestPlayer;
    28.         spieler.remove(bestPlayer);
    29.      }
    30.      else if(place3 == null)
    31.      {
    32.         place3= bestPlayer;
    33.         spieler.remove(bestPlayer);
    34.      }
    35. }


    Und die zweite....
    Du geht alle Spieler durch wie oben nur, schaust du welcher die niedrigste Y-Koordinate hat.... Da muss man weniger Rechnen, jedoch ist sie nicht so genau wie die obere wenn es darum geht als erstes auf einem bestimmten punkt zu sein....

    Hier mach ich mal kein Code beispiel, da es praktisch die selbe methode wie oben nur minimal abgewandelt....

    Es kann natürlich sein das es eine viel bessere Variante gibt, und oben in meinem Beispiel einige Fehler seind, jedoch möchte ich dabei anmerken, dass ich den Code gerade direkt im editor von dem Forum geschrieben habe und es halb 12 ist ;)

    Ich hoffe ich konnte helfen :D

    LG
    Kronos197

    PS: wenn ich morgen dran denke werde ich mir den code nochmal anschauen und gegebenenfalls überarbeiten ;)
     
    #2
  3. McWizzardDev
    Offline

    McWizzardDev

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    58
    Danke für deine Hilfe, müsste mir aufjedenfall weiterhelfen, bei der oberen habe ich aber einen kleinen Hacken, wenn der eine spieler von der x koordinate weiter entfernt ist, dann ist das Ergebnis doch nicht korekt
     
    #3
  4. Kronos197
    Offline

    Kronos197

    Registriert seit:
    20. Dezember 2013
    Beiträge:
    153
    Ort:
    Frankfurt
    Minecraft:
    Kronos197
    Ja, aber ich habe es soweit verstanden, dass es einen bestimmten block gibt auf dem man landen muss und da sollte man auch die x und z coordinate berücksichtigen... Wenn net nimm einfach die 2. Variante...
    oder eine andere falls jmd. auch noch antworted ;)
     
    #4