Ankündigung

Einklappen
Keine Ankündigung bisher.

Gewinner anzeigen mit 2 Punkte Differenz

Einklappen

Neue Werbung 2019

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

  • Gewinner anzeigen mit 2 Punkte Differenz


    Hallo, ich bin der Neue.

    Ich habe ein Problem.
    Ich habe ein Zähler mit einer If-else Schleife,
    In der Schleife möchte aber das der Spieler gewonnen hat der immer 2 Punkte mehr hat, wie der andere.
    Es muss immer eine Differenz von 2 zwischen den beiden sein.

    Was für ein Skript muss ich schreibe?
    PHP-Code:
    $A 12
    $B 10
    if ( 
    $A == > $B ) { 
    $gewinner $A}; 
    Else {  
    $gewinner $B}; 
    Echo 
    „Der Gewinner Ist Spieler „ $gewinner 
    Hier mein Gedanke!
    $A hat 11 Punkte und $B hat 10 Punkte,
    A$ muss noch ein Punkt bekommen um Sieger zu werden.

    Wen aber $B noch einen Punkt bekommet, dann haben beide 11 Punkte,
    jetzt muss einer von den beiden 2 Punkte bekommen um zu gewinnen?

    Für eure Hilfe wäre ich sehr Dankbar.

    Mit freundlichen Grüßen,
    Robby

  • #2
    Du brauchst die Differenz und die muss 2 sein.

    Am Besten geht das mit Arrays. Erstens kannst du sortieren, zweitens kannst du mehr als nur 2 Spieler haben und drittens kannst du die Namen der Spieler als Key im Array ablegen..
    Wenn du Punkte aufsteigend sortierst hast du eine Reihe
    1 2 3 4 5
    dann musst du nur den Vorletzten Wert vom letzten Wert subtrahieren und das Ergebnis muss 2 ergeben, damit ein Gewinner feststeht.
    bei 1 2 3 5
    wäre es dann 5-3 = 2
    In PHP umgesetzt
    PHP-Code:
    <?php
    $spieler
    ['hans'] = 3;
    $spieler['gretel'] = 7;
    $spieler['alibaba'] = 4;
    $spieler['aladin'] = 5;

    asort($spieler);

    if (
    end($spieler) - prev($spieler) == 2){
        
    end($spieler);
        echo 
    'Gewonnen hat 'key($spieler);
        
    reset($spieler);
        echo 
    ' verloren hat leider ' key($spieler);
    }

    ?>
    ergibt
    Code:
    Gewonnen hat gretel verloren hat leider hans
    Die Funktionen im Handbuch dazu:
    http://php.net/manual/de/function.asort.php
    http://php.net/manual/de/function.end.php
    http://php.net/manual/de/function.reset.php

    Kommentar


    • #3
      protestix Kann deinen Code absolut nicht nachvollziehen. Weder verstehe ich, warum du mit end() und prev() Array-Zeiger hin- und herschiebst, noch stimmt das Ergebnis. In deinem Code vergleichst du die SpielerInnen mit der höchsten und zweithöchsten Punktezahl und gibst dann den mit der niedrigsten als Verlierer aus. Abgesehen davon, dass das Programm bei Gleichstand irgendwen als Verlierer tituliert klappt es auch schon nicht wenn Hans z.B. 6 Punkte hat. In dem Fall gäbe es gar keine Ausgabe, obwohl es mit gretel und alibaba eindeutige Gewinner und Verlierer geben müsste.

      Zur Problemstellung: Was ist das Problem an einem Vergleich $A >= $B + 2 ? Den Tipp mit Arrays würde ich mir von protestix aber auf jeden Fall anschauen - in deinem Beispiel ist ja Punktezahl und Gewinnername beides $A.

      Achja, und if-Schleifen gibt es nicht.

      Kommentar


      • #4
        Ich würde es mal so probieren:

        PHP-Code:
        $A 12
        $B 10;

        $Diff $A $B;

        if ( 
        $Diff >= 

           
        $gewinner $A
        }else{  
           
        $gewinner $B;
        }

        echo 
        "Der Gewinner Ist Spieler ".$gewinner

        Kommentar


        • #5
          Danke für die Vielen Tipps.
          PHP-Code:
          $A 12
          $B 10;

          $Diff $A $B;

          if ( 
          $Diff >= 

             
          $gewinner $A
          }else{  
             
          $gewinner $B;
          }

          echo 
          "Der Gewinner Ist Spieler ".$gewinner
          Aber das ist nicht was ich mir denke.
          wen
          $A = 11; Punkte
          und
          $B = 12; Punkte

          Dann ist das Ergebnis $B hat gewonnwn aber mit 1 Punkt vorsprang,
          aber das geht nicht, weil es müssen immer 2 Punkte Differenz sein?

          Kommentar


          • #6
            Hallo Robby,

            dann brauchst du noch eine ELSEIF oder SWITCH
            Hier die Variante mit dynamischen Spielernamen:

            PHP-Code:
            <?php
            $spieler
            ['A'] = 11
            $spieler['B'] = 12;

            switch (
            array_values($spieler)[0] - array_values($spieler)[1]) {
                case 
            2:
                    
            $gewinner array_keys($spieler)[0];
                    break;
                case -
            2:
                    
            $gewinner array_keys($spieler)[1];
                    break;
                default:
                    
            $gewinner "KEINER";
                    break;
            }

            echo 
            "Der Gewinner ist " $gewinner;
            sorry, shift-taste kaputt

            Kommentar


            • #7
              Super Danke,
              das ist es.
              Danke

              Geht das auch ohne Array?

              Kommentar


              • #8
                Ja, aber das bekommst du doch hin.

                Kommentar


                • #9
                  Nein, leider nicht

                  Kommentar


                  • #10
                    Dann lerne.
                    Es steht in diesem Faden alles was du brauchst.
                    Den Link zum Handbuch bekommst du noch für die switch Anweisung.

                    Kommentar


                    • #11
                      Danke protestix,

                      <?php
                      $spielerA= 16;
                      $spielerB= 17;

                      switch ($spielerA - $spielerB) {
                      case 2:
                      $gewinner = $spielerA;
                      break;
                      case -2:
                      $gewinner = $spielerB;
                      break;
                      default:
                      $gewinner = "KEINER";
                      break;
                      }

                      echo "Der Gewinner ist " . $gewinner;
                      ?>

                      Nur wer bereit ist zu helfen, darf auch kritisieren.
                      Abraham Lincoln (1809-1865)

                      Kommentar

                      Lädt...
                      X