Итак, у меня есть игра, в которой пользователь имеет физический уровень, и я хотел знать, могу ли я сделать что-то подобное с фитнес-системой, приведенной ниже ..

Итак, у меня есть 20 уровней физической подготовки, все они перечислены ниже.

100 XP
200 XP
500 XP
1,000 XP
2,000 XP
3,200 XP
4,500 XP
6,500 XP
9,000 XP
12,000 XP
15,500 XP
20,000 XP
25,000 XP
32,000 XP
40,000 XP
50,000 XP
52,000 XP
70,000 XP
100,000 XP
200,000 XP

Вся эта информация хранится в базе данных, и у меня также есть столбец для каждого пользователя с именем current_fitness_xp, и я хочу как бы получить% от того, насколько они далеки от required_xp следующего уровня, так что это то, что я до сих пор ...

<?php
// Test script (Lets pretend we're level 5...)
$startXP = 2000; // Would be the current levels needed_xp
$currentXP = 2623; // Would be the current amount of xp..
$endXP = 3200; // Would be the next levels needed_xp

// it would output something near 50%

Затем я хочу поместить этот% в индикатор выполнения начальной загрузки.

0
TheGod39 7 Май 2016 в 15:35

4 ответа

Лучший ответ

% перехода игрока на следующий уровень можно рассчитать по следующей формуле:

$progress = ($currentXP - $startXP) / ($endXP - $startXP) * 100;
2
jedrzej.kurylo 7 Май 2016 в 12:45

Это довольно просто: вам просто нужно вычесть $startXP, как здесь:

<?php
$cXP = ($currentXP - $startXP);
$eXP = ($endXP - $startXP);
$percent = (100 / $eXP * $cXP);
?>

А затем вы можете просто повторить значение $percent. :)

1
Sainan 7 Май 2016 в 12:44

Сделать это можно так:

$percent = round(($currentXP - $startXP) / ($endXP - $startXP) * 100);
// $percent is 51.91666. Round-function makes it 52.

<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="<?php echo($percent); ?>"
  aria-valuemin="0" aria-valuemax="100" style="width:50%">
    <?php echo($percent); ?>
  </div>
</div>

По сути, это будет выглядеть так:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="progress">
  <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="52"
  aria-valuemin="0" aria-valuemax="100" style="width:50%">
    52%
  </div>
</div>
1
Patrick2607 7 Май 2016 в 12:45

Вы можете попробовать что-то вроде этого:

<?php
$currentXP = 2623;
$endXP = 3200;

//Calculate your percentage:
$percentage = ($currentXP / $endXP) * 100;
?>

<div class="progress">
  <div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $percentage; ?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $percentage; ?>%;">
    <?php echo $percentage; ?>%
  </div>
</div>

Очевидно, вам нужно будет получить данные XP из вашей базы данных для вашего пользователя, использующего MySQLi или PDO и т. Д.

0
Andy Holmes 7 Май 2016 в 12:49