XP calculator

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cornel van der Heiden

Cornel van der Heiden

07/08/2009 10:26:00
Quote Anchor link
Hallo allemaal,

Voor een vriend van me ging ik een XP calculator voor runescape in elkaar zetten.

Was allemaal niet zo moeilijk en uiteindelijk kwam ik tot dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$xp
= 0; //uiteindelijke xp
$i = 1; //springt steeds 1 omhoog na het uitrekenen van het vorige level
$o = 3; //gewenst level
for($i = 1; $i < $o; $i++){
    $e1 = $i / 7;
    $e2 = pow(2,$e1);
    $e3 = $i + 300;
    $e4 = $e3 * $e2;
    $e5 = floor($e4);
    $e6 = $e5 / 4;
    $e7 = floor($e6);
    $xp += $e7;
}

echo $xp;        
?>


Het zal vast niet het beste zijn wat bedacht kan worden maar goed.
Het werkt ook aardig. Nu is mijn probleem alleen: hij geeft steeds als ik een level uitreken niet een vreselijk betrouwbaar antwoord. de ene keer klopt het wel, de andere keer juist helemaal niet. Zelfs als ik het met mijn rekenmachine (grafisch) nareken, krijg ik niet het goede antwoord eruit. het scheelt elke keer ongeveer 1. En die afwijking wordt groter naarmate je grotere levels uitrekent.
Omdat de formule (die je hier kunt vinden:http://www.lunagang.nl/skills.php) met sommaties (Wikipedia:http://nl.wikipedia.org/wiki/Sommatie) werkt, gebruik ik een for loop.

Kan iemand mij vertellen wat ik verkeerd doe of over het hoofd zie?

Cornel
 
PHP hulp

PHP hulp

19/04/2024 07:40:03
 
Tim

Tim

07/08/2009 12:02:00
Quote Anchor link
De berekening gaat volgens mij niet helemaal goed.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$xp = 0;
$i = 1;
$o = 3;

for($i = 1; $i < $o; $i++){
    $e1 = $i / 7;

    $e2 = pow(2,$e1);

    $e3 = $e2 * 300;

    $e4 = $e3 + $i;

    $e5 = floor($e4);

    $xp += $e5;
}

$xp = floor($xp / 4);

echo $xp


Dat zou moeten werken... :-)
Gewijzigd op 01/01/1970 01:00:00 door Tim
 
Cornel van der Heiden

Cornel van der Heiden

07/08/2009 12:09:00
Quote Anchor link
bedankt!

Dat was het probleem ja.

Cornel
 
Jan Koehoorn

Jan Koehoorn

07/08/2009 12:40:00
Quote Anchor link
Of, gewoon met 1 regel in de for loop:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    $xp
= 0;
    $i = 1;
    $o = 3;
    
    for($i = 1; $i < $o; $i++){
        $xp += floor (pow (2, $i / 7) * 300 + $i);
    }

    
    $xp = floor($xp / 4);
    
    echo $xp;
?>


;-)
 
Lode

Lode

07/08/2009 13:13:00
Quote Anchor link
Kan nog korter zelfs :-]

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$xp
= 0;
foreach(range(1, 3) as $i){
      $xp += floor(pow(2, $i/7) * 300 + $i);
}

$xp = ($xp > 0) ? floor($xp * 0.25) : $xp;
echo $xp;
?>
Gewijzigd op 01/01/1970 01:00:00 door Lode
 
- SanThe -

- SanThe -

07/08/2009 13:30:00
Quote Anchor link
@Lode: Ook leuk met een foreach(). De vergelijking op regel 6 is overbodig.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Lode

Lode

07/08/2009 16:08:00
Quote Anchor link
Ik had het niet getest inderdaad...

Maar ik zag in die loop wel optimalisatie mogenlijk...
 
Cornel van der Heiden

Cornel van der Heiden

08/08/2009 10:00:00
Quote Anchor link
Haha, bedankt voor de reacties! Ik waardeer dat echt.

Cornel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.