login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Balk weergeven adhv percentage

Offline GroundZero - 11/05/2012 20:40
Avatar van GroundZeroLid Beste,

Ik heb een balk van (bijvoorbeeld) 500 pixels breed. Deze weergeeft het leven van je poppetje.

Je begint met bijvoorbeeld 100HP (100% dus). Wanneer je geraakt word gaat er bijvoorbeeld 20HP van af. Je hebt dan dus een verlies van 20%.

Nu wil ik dat de breedte van de balk 80% word.

Echter weet ik niet goed hoe ik dit kan uitrekenen in PHP. Zou iemand mij dit kunnen vertellen?

Ik heb de volgende code:

  1. $userstats = getUserStatistics();


$userstats is nu een array waarbij de volgende twee waardes de HP en de HP_momenteel voorstellen:

$userstats[4]
$userstats[6]

In [4] zit de maximale HP namelijk 100.
In [6] zit de huidige HP namelijk 80, omdat we geraakt zijn is deze dus lager.

Ik wil nu in een nieuwe variabele met de naam $verschil het verschil in percentage hebben. Deze zou nu dus de waarde 80 moeten hebben.

Echter, kan het voorkomen dat we niet over hele getallen praten. Het kan zo zijn dat iemand bijvoorbeeld 4238HP heeft, en momenteel 2353HP heeft.

Dit zijn dus twee totaal andere getallen dan 100 en 80. De som moet ook dan nog kloppen.

Er is dus altijd een maximum, en een momenteel. Het momenteel kan gelijk zijn aan het maximum maar nooit hoger, wel lager.

Hopelijk kan iemand mij de juiste code geven met uitleg over hoe je dit correct uit rekend.

1 antwoord

Gesponsorde links
Offline svm - 11/05/2012 20:56
Avatar van svm PHP ver gevorderde Bedoel je zo iets?

  1. <?php
  2. $maxwidth = 200; //aantal pixels bij 100%
  3.  
  4. $currentWidth = round($maxwidth / $userstats[4] * $userstats[6]); // bereken de breedte voor 1HP * aantal HP
  5. $verschilWidth = $maxwidth - $currentWidth; //de balkbreedte voor van de verloren HP's
  6. ?>

Nu wil je een balk met het percentage opvullen, deze balk moet je maken met twee losse balkjes tegen elkaar; de eerst met breedte $currentWidth en de tweede met breedte $verschilWidth.
De totaalbreedte zal dan $maxwidth zijn.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2019 Sitemasters.be - Regels - Laadtijd: 0.202s