如何获得正确的价值
How to get the right value?
本文关键字:何获得 更新时间:2023-10-16
我必须做什么才能获得正确的水平?
示例:
int gXP = globalDoHandle::PlayerStats_XP(p);
ostringstream sXP; sXP << "XP(RP): " << gXP;
ostringstream sLEVEL; sLEVEL << "Level: " << gLEVEL;
我想使用XP值以获取正确的级别。如果我得到的值24450应该给我它,然后" 10"返回我知道我可以使用这样的东西,但是游戏中的水平是8000级!
if (gXP < 800) { Rank = "1"; }
else if (gXP < 2100) { Rank = "2"; }
else if (gXP < 3800) { Rank = "3"; }
...
LEVEL: XP
Level 1: 0
Level 2: 800
Level 3: 2100
Level 4: 3800
Level 5: 6100
Level 6: 9500
Level 7: 12500
Level 8: 16000
Level 9: 19800
Level 10: 24000
Level 11: 28500
Level 12: 33400
Level 13: 38700
Level 14: 44200
Level 15: 50200
Level 16: 56400
Level 17: 63000
Level 18: 69900
Level 19: 77100
Level 20: 84700
...Level 8000: 1787576850
要完成这样的工作,您需要std::lower_bound
。std::lower_bound(l, h, v)
在范围内返回迭代器it
[l, h)
,该范围内的值是最小的验证*it > v
。
constexpr std::array<unsigned, 10> levels = { /* ... */ }; // xp needed for each level
unsigned level(unsigned xp)
{
auto it = std::lower_bound(cbegin(levels), cend(levels), xp);
return std::distance(begin(levels), it);
}
level(xp)
返回xp
相对于levels
的值。
se完整的演示在线
使用 std::array
,带有exp值。
std::array<int, 8000> exp_table = { 0, 800, 2100... };
int level=0;
for(; level < exp_table.size() && exp_table[level] < gXP; ++level);
Rank = std::to_string(level); // If this is needed?
将正确设置此level
之后。剩下的唯一的是您如何生成exp_table
。从文件中读取它。使用一些数学公式。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 如何从C++中的依赖类型中获得它所依赖的类型
- 欧拉项目#8答案是大以获得有效答案
- 如何使用C/C++在MacOSX中获得键盘布局
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何在不产生任何垃圾的情况下获得C中的像素
- 有没有一种方法可以在编译时获得作用域类名
- 如何在C++中获得"静态纯虚拟"功能?
- Python中的for循环与C++有何不同
- 如何设置一个范围来提取我想要获得的信息
- 在多次运行中获得一致的callgrind输出
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 未获得字符串中的预期输出
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- Qt:当QListView获得新条目时,如何更新QStringList
- 如何在卷曲中获得卷曲/卷曲.h?
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?