计算小型游戏的健康值

时间:2020-05-14 19:54:41

标签: c++ visual-c++ game-development

我是一名C ++学生,他以我所掌握的有限知识(今天才刚刚学习课程)来制作RPG游戏,并且我已经掌握了大部分细节。不过,一件事情一直让我发痒,这是事实,当我让自己的团队改变党员的健康价值观时,这个数字经常会变成负面的数字。基本的减法应该是使我发疯的一团糟!

某些上下文:“玩家”是进行攻击的人,而“玩家”是进行攻击的人。这些也可以治愈。

预期结果:player2.health-= player.att1.damage-player2.armor

如果player2.health = 15,player.att1.damage = 3,player2.health应该为12

相反,它可以达到-858993450 HP的新低点

代码:

void pvp(Party &player, Party &player2) {
    int select, flinch = 2;
    if (player.effect.flinch)
        flinch = rand() % 2;
    moveshow(player);
    cin >> select;
    switch (select) {
    case 1: {
        srand(time(NULL));
        string re;
        int t = rand() % 100 + 1;
        int r = rand() % player.att1.hitcount + 1;
        if (r == 1)
            re = " time";
        else
            re = " times";
        if (t < (player.att1.accuracy - player.att1.blindness + player.att1.deadeye) & flinch != 1) {
            if (player.att1.damage < 0) {
                cout << player.name << player.att1.action << player2.name << r << re << ", healing " << abs(player.att1.damage * r) << " health.\n";
            }
            else if (player.att1.damage == 0) {
                cout << player.name << player.att1.action << player2.name << r << re << endl;
            }
            else
                cout << player.name << player.att1.action << player2.name << r << re << ", dealing " << player.att1.damage * r << " damage.\n";
            player2.health -= (player.att1.damage * r) - player2.armor;
            cout << player2.name << ": " << player2.health << " HP\n";
            pvpinflict(player, player2, select);
            player.att1.pp--;
        }
        else if (flinch == 1)
            cout << player.name << " flinched and couldn't move!\n";
        else {
            cout << player.name << " missed!\n";
            player.att1.pp--;
        }

        break;
    }
    case 2: {
        srand(time(NULL));
        string re;
        int t = rand() % 100 + 1;
        int r = rand() % player.att2.hitcount + 1;
        if (r == 1)
            re = " time";
        else
            re = " times";
        if (t < (player.att2.accuracy - player.att2.blindness + player.att2.deadeye) & flinch != 1) {
            if (player.att2.damage < 0) {
                cout << player.name << player.att2.action << player2.name << r << re << ", healing " << abs(player.att2.damage * r) << " health.\n";
            }
            else if (player.att2.damage == 0) {
                cout << player.name << player.att2.action << player2.name << r << re << endl;
            }
            else
                cout << player.name << player.att2.action << player2.name << r << re << ", dealing " << player.att2.damage * r << " damage.\n";
            player2.health -= (player.att2.damage * r) - player2.armor;
            cout << player2.name << ": " << player2.health << " HP\n";
            pvpinflict(player, player2, select);
            player.att2.pp--;
        }
        else if (flinch == 1)
            cout << player.name << " flinched and couldn't move!\n";
        else {
            cout << player.name << " missed!\n";
            player.att2.pp--;
        }

        break;
    }
    case 3: {
        srand(time(NULL));
        string re;
        int t = rand() % 100 + 1;
        int r = rand() % player.att3.hitcount + 1;
        if (r == 1)
            re = " time";
        else
            re = " times";
        if (t < (player.att3.accuracy - player.att3.blindness + player.att3.deadeye) & flinch != 1) {
            if (player.att3.damage < 0) {
                cout << player.name << player.att3.action << player2.name << r << re << ", healing " << abs(player.att3.damage * r) << " health.\n";
            }
            else if (player.att3.damage == 0) {
                cout << player.name << player.att3.action << player2.name << r << re << endl;
            }
            else
                cout << player.name << player.att3.action << player2.name << r << re << ", dealing " << player.att3.damage * r << " damage.\n";
            player2.health -= (player.att3.damage * r) - player2.armor;
            cout << player2.name << ": " << player2.health << " HP\n";
            pvpinflict(player, player2, select);
            player.att3.pp--;
        }
        else if (flinch == 1)
            cout << player.name << " flinched and couldn't move!\n";
        else {
            cout << player.name << " missed!\n";
            player.att3.pp--;
        }

        break;
    }
    }
}```

0 个答案:

没有答案
相关问题