Увеличение на 10% каждый раз

0

У меня есть игра, и в этой игре у вас есть "Дом", который вы обновляете. Для меня и для вас этот дом - это не что иное, как число в базе данных. Теперь, чтобы обновить дом, вам нужны ресурсы (больше номеров в базах данных), и я хочу, чтобы стоимость увеличивалась, каждый раз, когда дом увеличивается.

Так, например,

  • Мой дом - уровень 1, он стоит 100, чтобы перейти на уровень 2
  • Я трачу 100, чтобы выровнять свой дом, но цена увеличивается на 10%
  • Итак, дом - это уровень 2, он стоит 110, чтобы перейти на уровень 3

и т.д. Это выглядит очень просто, я не знаю, как я борюсь с этим, вот как я до сих пор.

$goldcostperhouse = 100;
$goldcostperhouse2 = 100 + $goldcostperhouse / 10;
$woodcostperhouse = 100;
$woodcostperhouse2 = 100 + $woodcostperhouse / 10;
$upgradecostgold = $house * $goldcostperhouse;
$upgradecostwood = $house * $woodcostperhouse2;

Стоимость остается 100 каждый раз с этим :(

Здесь полный код

<?php
include ("header.php");
include ("connect.php");

$stats_get = mysqli_query($con,"SELECT stats.gold, stats.wood, stats.id FROM stats WHERE stats.id =     $id4");
$stats_got = mysqli_fetch_array($stats_get);
$gold10 = $stats_got['gold'];
$wood10 = $stats_got['wood'];

$buildings_get = mysqli_query($con,"SELECT buildings.house, buildings.id FROM buildings WHERE     buildings.id = $id4");
$gotbuildings = mysqli_fetch_array($buildings_get);
$house = $gotbuildings['house'];
$nextlevel = $house + 1;
$goldcostperhouse = 200;
$goldcostperhouse2 = 200 + $goldcostperhouse / 10;
$woodcostperhouse = 200;
$woodcostperhouse2 = 200 + $woodcostperhouse / 10;
$upgradecostgold = $house * $goldcostperhouse;
$upgradecostwood = $house * $woodcostperhouse2;



IF ($house <= 0){
echo "You need to buy a house, it costs 76,000 Wood and 24,000 Gold!<br>";
    IF(isset($_POST['buy'])){
    echo "You have bought the house!";
    IF($gold10 < 24000){
        echo "You don't have enough Gold!";
    }elseif($wood10 < 76000){
        echo "You don't have enough Wood!";
    }else{
    $removegold = mysqli_query($con,"UPDATE stats SET stats.gold = stats.gold - 24000 WHERE stats.id = $id4");
    $removewood = mysqli_query($con,"UPDATE stats SET stats.wood = stats.wood - 76000 WHERE stats.id = $id4");
    $givehouse = mysqli_query($con,"UPDATE buildings SET buildings.house = 1 WHERE buildings.id = $id4");
    }
}

?>
<html>
<body>

<form action="house.php" method="post">
<input type="Submit" name="buy" value="Buy"/>
</form>

<?php

}else{

echo "House level: ",number_format($house),"<br>";
echo "It will cost ",number_format($upgradecostgold)," Gold and ",number_format($upgradecostwood), " Wood to upgrade your house to level ",number_format($nextlevel),"<br>";

IF(isset($_POST['upgrade'])){
IF($gold10 < $upgradecostgold){
    echo "You do not have enough Gold!";
    }elseif($wood10 < $upgradecostwood){
    echo "You do not have enough Wood!";
    }else{
    echo "You have upgraded your house!<br>";
    $removegold = mysqli_query($con,"UPDATE stats SET stats.gold = stats.gold - $upgradecostgold WHERE stats.id = $id4");
    $removewood = mysqli_query($con,"UPDATE stats SET stats.wood = stats.wood - $upgradecostwood WHERE stats.id = $id4");
    $givehouse = mysqli_query($con,"UPDATE buildings SET buildings.house = buildings.house + 1     WHERE buildings.id = $id4");
    }

}

?>

<html>
<body>

<form action="house.php" method="post">
<input type="Submit" name="upgrade" value="Upgrade"/>
</form>

<?php

}

include("footer.php")
?>
  • 1
    Во-первых, используйте подготовленные заявления. Во-вторых, вы положили результат запроса, чтобы увидеть, что выводится?
  • 0
    математическое упрощение: $x = $x + ($x / 10) также может быть $x = $x * 1.1 . а затем для уровня: $x *= pow(1.1, $level)
Показать ещё 4 комментария
Теги:

1 ответ

3
Лучший ответ

Посмотрите, как вы рассчитываете стоимость дома:

Level 1 = 100
Level 2 = 100 * 1.1
Level 3 = 100 * 1.1 * 1.1
Level 4 = 100 * 1.1 * 1.1 * 1.1
etc.

Это можно представить формулой (где ^ - "по мощности"):

cost = 100 * (1.1 ^ (level - 1))

Затем вы можете выразить стоимость обновления в PHP как функцию уровня дома, используя pow для вычисления математической мощности:

function upgradeCost($houseLevel) {
    return intval(100 * pow(1.1, $houseLevel - 1));
}

Или вы можете просто выполнить его встроенный код:

$upgradeCost = intval(100 * pow(1.1, $houseLevel - 1));

Это даст вам последовательность 100, 110, 121, 133, 146, 161, 177, 194, 214, 235...

Обратите внимание, что я использовал intval чтобы убедиться, что стоимость является целым числом. Если вы можете иметь нецелые затраты, вы можете удалить intval.

  • 1
    Извините, могу я попросить вас объяснить это немного? Лучше, чем я, скопируйте / вставьте его :) (особенно "pow" и "function", которые я никогда не использовал)
  • 0
    Конечно, я обновил свой ответ с некоторыми объяснениями. Что касается функций, взгляните на tizag.com/phpT/phpfunctions.php .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню