Как сравнить два вектора, которые имеют разные и меняющиеся размеры? - PullRequest
0 голосов
/ 28 января 2019

В попытке узнать больше о c ++ я решил написать текстовую игру.Я действительно вхожу в это, и я понимаю функции гораздо лучше, чем раньше, однако я столкнулся с некоторым препятствием.

В бою я пытаюсь научить себя векторам, но их немного сложно понять.

Итак, я начал с функции, и то, что я пытаюсь сделать внутри этой функции, это иметь один вектор, основанный на ваших totalSoldiers, значение int, которое изменяется, когда вы покупаете солдат (и теряете их).И второй вектор, который представляет вражеские силы, его значение корректируется в зависимости от события.

Имея в виду эти два вектора, они будут сравнивать себя от начала до конца.Сравнение прокручивает число от 1 до 20, и после добавления числа добавляются дополнительные модификаторы.Сравнение происходит дважды, и если встречается броня этого индивидуального индекса, он добавляет один к этому элементу (эти векторы инициализируются так, что все в них равно 0), один означает, что элемент (солдат) мертв.Это сравнение выполняется для каждого элемента и повторяется до тех пор, пока один вектор не будет заполнен всеми единицами.

После этого векторы очищаются, и yourArmy, вектор, представляющий, сколько у вас солдат, изменяется, и его значения возвращаются к 0.

Я знаю, как я этого хочуработа, но я неопытен, как туда добраться.

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

Я спрашивал вокруг, но не получили ответы, которые я понимаю достаточно хорошо, чтобы привести в действие.Кроме того, большинство людей в классе со мной одинаково не уверены, как работать с векторами.

void Combat(int &totalSoldiers, int &food, int &AC, int eventNum)

{

/ * eventNum - это просто число, полученное из другой функции, которая сообщит нам, что мы сражаемся. TotalSoldiers - это сколько у вас солдат, так как вы можете купить их, чтобы добавить кпища для вашей армии - это просто модификатор для вашей армии, а также переменный ток, который просто определяет, как высоко должен перевернуться враг, чтобы поразить вас * /

int d20 = (rand() % 20) + 1; //Dice that gets rolled

int enemyDamage; //A modifier that gets added to the roll for the enemy
int enemyArmor; //A modifier that determines if the roll made for your soldiers is enough to hit.

int enemyNumber; //Determines how many enemies there are in the encounter

bool inCombat = false; //Bool that will determine when combat ends

vector<int> yourArmy; //vector I made to try and represent your army in game
yourArmy.reserve(totalSoldiers); //I'm pretty sure this is the same as setting the size

vector<int> enemyArmy; //vector for the enemy
enemyArmy.reserve(10000);//I figured 10000 was a good number to keep as the upper limits

while (!inCombat)
{
    if (1 <= eventNum && eventNum <= 50)
    {

        enemyNumber = (rand() % 40) + 12; //random enemy forces
        enemyArmy.resize(enemyNumber);

        auto it1 = yourArmy.begin();
        auto it2 = enemyArmy.begin();
        for (; (it1 != yourArmy.end()) && (it2 != enemyArmy.end()); ++it1, ++it2)
        {


        }


    }


}

Ну, я не уверен, чего ожидать, как и яне уверен, что я собираюсь делать это правильно.В основном я ищу руководство, возможно ли то, что я спрашиваю, и иду ли я в правильном направлении или даже как это сделать.: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...