php - 在 PHP 中计算一堆结果

标签 php mysql

我正在寻找一些见解。艺术创造力和数据是我的强项,而不是数学。

假设我正在玩一款基于网络浏览器的网络游戏风格的文本游戏。等级系统可能是无限的,但随着人们等级的上升,达到下一个等级会变得越来越难。我想要的是让它开始起来相当容易。我将设置达到 2 级所需的基本目标经验值。但这就是我的问题所在。我想知道一些可行的选择是用于设置 future 的级别。我的想法是制作一个脚本,在创建游戏时运行一次。它将以:

$base_xp = 100;

这是达到二级所需的经验值。然后对于之后的每个级别,我只希望每个级别增加之前级别的百分比。可能比以前的水平高出 3% 或 5%。脚本将运行,带有

i=1;

然后运行 ​​foreach 查找或 while 循环并在数据库中插入一个表,该表列出了每个级别,它的经验点要求目前可能达到 1,000 级。

对我来说,这似乎真的很乏味。但是手动输入也是如此

$level2 = 100;
$level3 = 205
$level4 = 310;

等等等等。可能有数千个级别。

我唯一能想到的另一件事是运行每个脚本执行的数学公式,以查看它们是否满足下一级别的要求。但是我对如何编写这样一个数学有点不好的公式有点模糊。

如有任何想法,我们将不胜感激。如果我必须提出一个明确的问题,那就是:

动态或静态创建级别列表及其 xp 要求的有效方法是什么?

如果我为它创建一个 SQL 表并将它们全部插入。我可以只查询一次并使用 APC 或其他东西存储这些要求,以便在游戏过程中更快地检索,而不是每次都查询数据库以获取具有一千或更多行的表。

最佳答案

这里有两个想法。第一条是我的评论。

您在游戏中存储了一个数字,该数字始终是您增加上限的数字。我会做一些 大于 3% 的事情,这样以后会变得非常困难。但我会说 也许 6% 是上限。我不会说这要大得多,但如果其他人能提供比这更好的数字就好了。这样,当值达到您的 CAP 时,您可以执行 CAP = CAP * x + CAP 现在您的上限增加了。没有查询..

但是,如果您想告诉某人您可以在 X 达到 50 级,或者 1000 级,10000000000,该怎么办?您可能需要一个用于这些实例的表格。在那种情况下,我会创建一个循环,它只存储到一个具有自动递增 ID 的数据库中,并存储预期的 XP。您将需要确定 XP 的数据类型,但 int 可能不够好。

$cap = 100;
for($i = 0;$i < 10000000;$i++){
    $cap = $cap * $i + $cap
    // insert data
}

然后是的。当您查询他们的当前级别然后升至下 5 个级别时,您可以保持运行的 XP 可能性。或者查询他们所有你打电话的人。有时内存会用完。

我可能会考虑只做 100 级,直到有人达到 50 级,然后再升到 200、300 级,依此类推,直到您对游戏等级上限感到满意为止。如果上限只有 200,请始终阻止此人达到 201。

关于php - 在 PHP 中计算一堆结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30108033/

相关文章:

java - 用于范围分页的数据库缓存策略

php - JSON 编码语法不正确

php - 在 PHP/MySQL 应用程序中保护敏感数据的实用方法?

php - 如何在不覆盖任何值的情况下合并两个集合

php - 如何实现一个密码的sha 512,md5和salt加密

数据库中的 PHP 计时器

php - Magento 集合过滤功能

如果没有找到与订单相关的行,mysql 选择一行

php - 在 PHP DOMDocument 中禁用 html 实体编码

php - 从 PHP 数组编写 PDO 搜索查询