Ankündigung

Einklappen
Keine Ankündigung bisher.

Berechnung von Kostensteigerung in While Schleife

Einklappen

Neue Werbung 2019

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

  • Berechnung von Kostensteigerung in While Schleife

    Hallo zusammen,

    ich bräuchte mal einen Denkanstoß zum Thema Berechnungen in einer While Schleife.

    Ich versuche mich gerade an einem Browsergame und bin bei der Baufunktion von Gebäuden.

    Der Spieler soll in der Lage sein mehrere Gebäude auf einmal zu bauen und die Gebäude werden immer um 10% teurer.

    Ich habe es hinbekommen, dass das funktioniert mit:

    $gebanzahl= $bsp7['Kleinstadt'] //( + Wird noch erweitert durch Eingabe von Benutzer) ; //$bsp7['Kleinstadt'] = Abfrageergebnis aus der Datenbank
    $x = 0;
    $kleincost = 200;

    while ($x != $gebanzahl) {
    $y = $kleincost * 1.1; //grundwert + 10%
    $kleincost = $y; //kleincost = 220
    $x++;
    }
    }
    echo floor ($kleincost);

    Jetzt ist das Problem, dass die Kosten durch die Benutzereingabe nicht addiert werden. Das heißt bsp. 2. Gebäude kostet 220 alleine, wenn ich aber direkt 5 bauen möchte zählt er nur die endkleinkosten (welche nach den Schleifedurchgängen steht) *5.
    Ich müsste jetzt beim 1. Durchlauf die $kleinkosten addieren zum 2. Durchlauf und so weiter.

    Ist es möglich, die Zwischenwerte von $y oder $kleincost zusammen zu addieren pro schleifen durchlauf oder bin ich komplett auf dem falschen Gedankengang?

    Vielen Dank schonmal


  • #2
    ok habe es selbst hinbekommen

    musste nur noch eine neue Variable setzen

    $z = 0
    dann zwischen $y und $kleincost in der schleife:

    $z = $z + $y;

    Jetzt werden alle zusammengerechnet

    Kommentar


    • #3
      PHP-Code:
      $price $basePrice * (1.1 ** $count); 
      Beispiele:

      $basePrice = 250
      $count ist die Anzahl der bisherigen Aufgaben in der Queue.


      Die erste Aufgabe in der Queue hat $count = 0, da keine anderen Aufgaben existieren:
      PHP-Code:
      var_dump(250 * (1.1 ** 0)); 
      Ergebnis: 250


      Die zweite Aufgabe in der Queue hat $count = 1, da schon eine andere Aufgabe existiert, wenn diese hinzugefügt wird:
      PHP-Code:
      var_dump(250 * (1.1 ** 1)); 
      Ergebnis: 275 (+10% von Aufgabe 1)


      Die dritte Aufgabe in der Queue hat $count = 2, da schon zwei andere Aufgaben existieren, wenn diese hinzugefügt wird:
      PHP-Code:
      var_dump(250 * (1.1 ** 2)); 
      Ergebnis: 302.5 (+10% von Aufgabe 2, nicht +20% zu Aufgabe 1)

      Kommentar


      • #4
        EDIT: Blar war schneller.

        Du kannst das auch mit einer Fomel lösen, in diesem Fall ist es die Formel für den Zinseszins

        Mit while Schleife
        PHP-Code:
        $gebaeudeanzahl 30;
        $gebaeudekosten 100;

        $gesamtkosten null;
        $zaehler $gebaeudeanzahl;

        while ( 
        $zaehler ){
            
        $gesamtkosten $gesamtkosten $gebaeudekosten;
            
        $gebaeudekosten $gebaeudekosten 1.1;
            
        $zaehler--;
        }

        echo  
        $gebaeudeanzahl " Gebäude kosteten insgesamt " $gebaeudekosten "\n<br>"
        Mit etwas Mathematik
        PHP-Code:
        $gebaeudeanzahl 30;
        $gebaeudekosten 100;
        echo 
        $gebaeudekosten pow(1.1$gebaeudeanzahl) . "\n<br>"
        Ergibt jedes mal das selbe Ergebnis von 1744.9402268886

        Kommentar


        • #5
          Das mit dem Var_dump ist ein wenig unverständlich (dank meines Wissenstandes). Ich muss mir mal ein paar Beispiele und Erklärungen zu Var_Dump durchlesen.

          Die while schleife ist leicht zu verstehen.

          Ich danke euch


          Kommentar


          • #6
            Das liest man im Handbuch nach
            PHP-Code:
            var_dump(250 * (1.1 ** 2)); 
            ist gleichzusetzen mit
            PHP-Code:
            $result 250 * (1.1 ** 2
            var_dump
            ($result); 
            Man macht es sich halt immer einfach.

            1.1**2 ist ab PHP 7 möglich davor ist pow(1.1, 2) verwendet worden für exponentielle Mathe.

            Kommentar

            Lädt...
            X