void SpacePage::update() { for (size_t i = 0; i < m_Bullets.size(); i++) { Bullet& b = m_Bullets.at(i); b.lifetime++; if (b.lifetime > 200) { m_Bullets[i] = m_Bullets.back(); m_Bullets.pop_back(); i--; } } Gosu::Input& i = PageManager::Instance()->input(); if (i.down(m_kbSpinLeft)) { rotateDegrees(Vector::FORWARD, 1); } else if (i.down(m_kbSpinRight)) { rotateDegrees(Vector::FORWARD, -1); } double wdt = PageManager::Instance()->graphics().width(); double hgt = PageManager::Instance()->graphics().height(); double shiftx = double(i.mouseX())-double(wdt/2); double shifty = double(i.mouseY())-double(hgt/2); double mousespeed = 0.1; if (shiftx != 0) { rotateDegrees(Vector::UP, shiftx*mousespeed); i.setMousePosition(wdt/2, hgt/2); } if (shifty != 0) { if (m_bInvertMouse) { rotateDegrees(Vector::RIGHT, shifty*mousespeed); } else { rotateDegrees(Vector::RIGHT, -shifty*mousespeed); } i.setMousePosition(wdt/2, hgt/2); } if (!m_PlayerRenderable) return; Vector dir(0, 0, 0); if (i.down(m_kbForward)) { dir += Vector::FORWARD; } else if (i.down(m_kbBackward)) { dir -= Vector::FORWARD; } if (i.down(m_kbStrafeRight)) { dir -= Vector::RIGHT; } else if (i.down(m_kbStrafeLeft)) { dir += Vector::RIGHT; } if (i.down(m_kbStrafeUp)) { dir += Vector::UP; } else if (i.down(m_kbStrafeDown)) { dir -= Vector::UP; } double speed = 1.0; if (!i.down(m_kbTurbo)) { speed = 5.0; } if (dir.x != 0 || dir.y != 0 || dir.z != 0) { dir.normalize(); m_PlayerRenderable->setPosition(m_PlayerRenderable->getPosition() + m_rotPlayer * dir * speed); PlayerPositionChanged(); } }
task main() { writeDebugStreamLine("initalizing"); initializeRobot(); writeDebugStreamLine("initalized"); #ifdef COMPETITION waitForStart(); #else while (nNxtButtonPressed != kEnterButton){} #endif rotateDegrees(45); while (nNxtButtonPressed != kRightButton){} rotateDegrees(45); while (nNxtButtonPressed != kRightButton){} if (TestHook == 1) { setPosition(tas, POS_AT_60CM, DEFAULT_DISTANCE-1.5); while (nNxtButtonPressed != kRightButton){} hookGrab(); wait1Msec(3000); moveInches(-20); hookUngrab(); while (nNxtButtonPressed != kLeftButton){} } if (TestHardware == 1) { writeDebugStreamLine("Test Hardware"); trapDoorOpen(); trapDoorClose(); servo[collector] = COLLECTOR_IDLE; setPosition (tas, POS_BALL_COLLECTING, DEFAULT_DISTANCE); wait10Msec(300); servo[collector] = COLLECTOR_IN; wait10Msec(300); servo[collector] = COLLECTOR_IDLE; setPosition(tas, POS_AT_60CM, DEFAULT_DISTANCE-1.5); wait10Msec(1000); trapDoorOpen(); wait10Msec(3000); } if (TestPositions == 1) { writeDebugStreamLine("Test Positions"); // while (nNxtButtonPressed != kRightButton){} //setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); // while (nNxtButtonPressed != kLeftButton){} // setPosition (tas, POS_AT_60CM, DEFAULT_DISTANCE); // while (nNxtButtonPressed != kRightButton){} //Test 90 //setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); // while (nNxtButtonPressed != kLeftButton){} // setPosition (tas, POS_AT_90CM, DEFAULT_DISTANCE); // while (nNxtButtonPressed != kRightButton){} // trapDoorOpen(); // while (nNxtButtonPressed != kEnterButton){} setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); while (nNxtButtonPressed != kLeftButton){} setPosition (tas, POS_AT_120CM, DEFAULT_DISTANCE); while(nNxtButtonPressed != kEnterButton){} moveInches(24); while (nNxtButtonPressed != kRightButton){} trapDoorOpen(); while(nNxtButtonPressed != kEnterButton){} moveInches(-24); while (nNxtButtonPressed != kLeftButton){} setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); while (nNxtButtonPressed != kEnterButton){} setPosition (tas, POS_AT_120CM, DEFAULT_DISTANCE); while (nNxtButtonPressed != kRightButton){} setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); while (nNxtButtonPressed != kLeftButton){} setPosition (tas, POS_AT_90CM, DEFAULT_DISTANCE+3.5); while (nNxtButtonPressed != kRightButton){} setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); while (nNxtButtonPressed != kLeftButton){} setPosition (tas, POS_AT_120CM, DEFAULT_DISTANCE); while (nNxtButtonPressed != kRightButton){} trapDoorOpen(); while (nNxtButtonPressed != kRightButton){} setPosition (tas, POS_AT_30CM, DEFAULT_DISTANCE); while (nNxtButtonPressed != kLeftButton){} //setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); //while (nNxtButtonPressed != kRightButton){} setPosition (tas, POS_AT_90CM, DEFAULT_DISTANCE); while (nNxtButtonPressed != kEnterButton){} setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); while (nNxtButtonPressed != kRightButton){} setPosition (tas, POS_AT_120CM, DEFAULT_DISTANCE); //while (nNxtButtonPressed != kLeftButton){} setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); while (nNxtButtonPressed != kEnterButton){} } #if 0 setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); wait10Msec(200); //wait 2 sec for raise //moveInches(50); moveInches(54); setPosition(tas, POS_AT_60CM, DEFAULT_DISTANCE-1.5); wait10Msec(1000); //moveInches(14); moveInches(10); trapDoorOpen(); wait10Msec(500); moveInches(-20); setPosition (tas, POS_DRIVE, DEFAULT_DISTANCE); wait10Msec(2000); #endif }
void rotateWithOrientation(int degrees, byte power) { rotateDegrees(degrees, power); updateDirection(degrees * sgn(power)); }