java - 实现游戏中获得经验

标签 java android

我正在尝试实现我编写的这样的算法:

// up to 2LVL (10) => 10 = 10 - 0 - 0
// up to 2LVL (5) => 5 = 10 - 0 - 5
// up to 3LVL (20) => 20 = 20 + (0+10) - 10
// up to 3LVL (15) => 15 = 20 + (0+10) - 15
// up to 3LVL (10) => 10 = 20 + (0+10) - 20
// up to 3LVL (5) => 5 = 20 + (0+10) - 25
// up to 4LVL (40) => 40 = 40 + (10+20) - 30
// up to 4LVL (35) => 35 = 40 + (10+20) - 35
// up to 4LVL (25) => 25 = 40+ (10+20) -45
// up to 4LVL (20) => 20 = 40 +(10+20) -50
// up to 4LVL (15) => 15 = 40+ (10+20) -55

这里违反了其他值(value)观

// up to 4LVL (10) => 10 = 40+ (10+20) -60
// up to 4LVL (5) => 5 = 40+ (10+20) -65
// up to 5LVL (80) => 80 = 80 +(10+20+40) -70
// up to 5LVL (75) => 75 = 80 +(10+20+40) -75

我的实现如下所示:

    int j = dbHelper.getExpRequirementsByLvl(cc.getLv() + 1) - dbHelper.getProfile().getExp();
    int k=0;
    for (int i = 0; i < dbHelper.getProfile().getLvl()+1; i++)
        k = k+ dbHelper.getExpRequirementsByLvl(i);
    int m = j+k;

它会一直工作直到循环达到 4LVL。但为什么它不能进一步发挥作用呢?

我开始游戏并获得 0exp。我杀了一个小怪并得到 5exp。左边括号中的数字表示我们需要多少exp才能达到新的水平。右边的括号是数字,表示我们已经获得的等级需要经验。

该方法如下所示:

    public int getExpRequirementsByLvl(int lvl) {
    int expRequired=0;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res = db.rawQuery("select * from levels where lvl=" + lvl + "", null);

    if (res.moveToNext()) {
        expRequired = Integer.parseInt(res.getString(1));
    }

    return expRequired;
}

最佳答案

问题解决了,原来bug在其他地方。

关于java - 实现游戏中获得经验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59039789/

相关文章:

java - 在 java 的 if 语句中初始化变量?

java - 帕斯卡的三角形 Java 实现

android - 使用 AnnotatedString 在文本之间添加小填充/边距

android - 在应用程序类内部创建单例会导致内存泄漏吗?

java - 在 Android 中使用动态 R 字符串

java - WebSphere Web 容器线程挂起,最大线程状态处于可运行状态

java - OnClickListener Android Studio

java - 在 Netbeans+Ant 中,如何避免 wsimport 在每次构建时重建 Web 服务客户端?

android - 为 MvxFragment 设置 ViewModel

android - 在 ANDROID 中解析嵌套的 JSON