Пример #1
0
TEST(ProcreationTests, SimpleProcreationTest)
{
    bug_list.clear();

    for (int i = 0; i < 10; i++)
    {
        // The provided code has "if (...health > REPRODUCE_HEALTH) instead of >=
        bug_list.push_back(initBug(i, i, rand() % 8, REPRODUCE_HEALTH + 2, i, i + 10));
    }
    initWorld();

    reproduceBugs();

    ASSERT_EQ(bug_list.size(), 20);
    for (int i = 10; i < bug_list.size(); i++)
    {
        auto &bug = bug_list[i];
        ASSERT_EQ(bug.x, i - 10);
        ASSERT_EQ(bug.y, i - 10);
        ASSERT_EQ(bug.dir, bug_list[i - 10].dir);
        ASSERT_EQ(bug.health, REPRODUCE_HEALTH / 2 + 1);
        ASSERT_EQ(bug.generation, i - 9);
        ASSERT_EQ(bug.age, 0);
    }
}
Пример #2
0
void timeStep() {
    time_step += 1;
    addFood();
    moveBugs();
    killDeadBugs();
    reproduceBugs();
    percent_straight = 100 * total_straight / bug_list.size() / GENE_TOTAL;
    percent_left = 100 * total_left / bug_list.size() / GENE_TOTAL;
    percent_right = 100 * total_right / bug_list.size() / GENE_TOTAL;
    percent_back = 100 * total_back / bug_list.size() / GENE_TOTAL;
}