示例#1
0
void Changer::turn_impl(
    const Abstract::Params* params,
    int bacterium_index
) {
    int n = 1;
    RepeaterParams rp(
        bacterium_index,
        n,
        remaining_pseudo_actions_,
        &LogicalChanger::turn
    );
    repeater(&rp);
    penalize(bacterium_index);
}
示例#2
0
void Changer::j_impl(
    const Abstract::Params* params,
    int bacterium_index
) {
    int instruction = params->p1;
    if ((instruction >= 0) && (instruction < instructions_)) {
        model_->setInstruction(team_, bacterium_index, instruction);
    } else {
        throw Exception("Invalid instruction in j command.");
    }
    remainingActionsDecrement(
        remaining_pseudo_actions_,
        bacterium_index
    );
    penalize(bacterium_index);
}
示例#3
0
void Changer::right_impl(
    const Abstract::Params* params,
    int bacterium_index
) {
    int n = 1;
    if (params->p1 != -1) {
        n = checkCommandsNumber(params->p1);
    }
    RepeaterParams rp(
        bacterium_index,
        n,
        remaining_pseudo_actions_,
        &LogicalChanger::right
    );
    repeater(&rp);
    penalize(bacterium_index);
}
示例#4
0
void Changer::jl_impl(
    const Abstract::Params* params,
    int bacterium_index
) {
    int mass = model_->getMass(team_, bacterium_index);
    if (mass < params->p1) {
        int instruction = params->p2;
        if ((instruction >= 0) && instruction < instructions_) {
            model_->setInstruction(team_, bacterium_index, instruction);
        } else {
            throw Exception("Invalid instruction in jl command.");
        }
    } else {
        updateInstruction(bacterium_index);
    }
    remainingActionsDecrement(
        remaining_pseudo_actions_,
        bacterium_index
    );
    penalize(bacterium_index);
}
示例#5
0
void Changer::je_impl(
    const Abstract::Params* params,
    int bacterium_index
) {
    Abstract::Point en;
    bool enemy = logical_changer_.roundEnemySearch(bacterium_index, &en);
    if (enemy) {
        int instruction = params->p1;
        if ((instruction >= 0) && instruction < instructions_) {
            model_->setInstruction(team_, bacterium_index, instruction);
        } else {
            throw Exception("Invalid instruction in je command.");
        }
    } else {
        updateInstruction(bacterium_index);
    }
    remainingActionsDecrement(
        remaining_pseudo_actions_,
        bacterium_index
    );
    penalize(bacterium_index);
}
static void test_penalize_0(CuTest *testCase) {
    stList *observedList = stList_construct3(0, free);
    stList *expectedList = stList_construct3(0, free);
    stHash *observedHash = createBlockHashFromString("a score=0\n"
                                                     "s reference.chr0 0 13 + 158545518 gcagctgaaaaca\n"
                                                     "s name.chr1      0 10 +       100 ATGT---ATGCCG\n"
                                                     "s name2.chr1     0 10 +       100 ATGT---ATGCCG\n",
                                                     observedList);
    stHash *expectedHash = createBlockHashFromString("a score=0\n"
                                                     "s reference.chr0 0 13 + 158545518 gcagctgaaaaca-----\n"
                                                     "s name.chr1      0 15 +       100 ATGT---ATGCCGNNNNN\n"
                                                     "s name2.chr1     0 10 +       100 ATGT---ATGCCG-----\n",
                                                     expectedList);
    penalize(observedHash, "name.chr1", 5);
    CuAssertTrue(testCase, hashesAreEqual(observedHash, expectedHash));
    CuAssertTrue(testCase, listsAreEqual(observedList, expectedList));
    // clean up
    stHash_destruct(observedHash);
    stHash_destruct(expectedHash);
    stList_destruct(observedList);
    stList_destruct(expectedList);
}
SimControlWidget::SimControlWidget(QWidget* parent) : QWidget(parent) {
  setupUi(this);
  simulation_ = NULL;
  connect(flipButton, SIGNAL(clicked()), this, SLOT(flip()));
  connect(penalizeButton, SIGNAL(clicked()), this, SLOT(penalize()));
}