void GameBlock::Move(double delta, GameObjects* Objects){ if (alive) { angle += (rand()%20 - 10); double Multiplier = 1; MoveByAngle(delta, Multiplier); int Resoult = NONE; Resoult += CollidesWith(Objects->Player); if (Resoult % 10 == LEFT) x = Objects->Player.x + Objects->Player.w + r; if (Resoult % 10 == RIGHT) x = Objects->Player.x - r; Resoult += OutOfMap(); Resoult += CollidesWith(Objects->Brick); Resoult += CollidesWith(Objects->Block); if (Resoult) { MoveByAngle(delta, -Multiplier); if (Resoult % 10 > 0) BounceVertical(); if (Resoult / 10 > 0) BounceHorizontal(); } } }
void GameBullet::Move(double delta, GameObjects* Objects){ if (alive) { MoveByAngle(delta, 1.0f); CollidesWith(Objects->Brick); OutOfMap(); } }
void GameBall::Move(double delta, GameObjects* Objects){ if (alive) { double Multiplier = 1; if (glued) Multiplier = 0; if (Objects->Player.ActiveBonus[SLOW] > 0) Multiplier /= 2; MoveByAngle(delta, Multiplier); int Resoult = NONE; Resoult += CollidesWith(Objects->Player); if (Resoult % 10 == LEFT) x = Objects->Player.x + Objects->Player.w + r; if (Resoult % 10 == RIGHT) x = Objects->Player.x - r; if (Resoult == CENTER) y = Objects->Player.y - r; Resoult += OutOfMap(); Resoult += CollidesWith(Objects->Brick); CollidesWith(Objects->Block); if (Resoult) { MoveByAngle(delta, -Multiplier); if (Resoult % 10 > 0) BounceVertical(); if (Resoult / 10 > 0) BounceHorizontal(); if (newAngle) { angle = newAngle; newAngle = 0.0f; } } } }
void GameBonus::Move(double delta, GameObjects* Objects){ if (alive) { double Multiplier = 1; if (Objects->Player.ActiveBonus[SLOW] > 0) Multiplier /= 2; MoveByAngle(delta, Multiplier); CollidesWith(Objects->Player); if (OutOfMap() == DOWN) Destroy(); } }
void HeadMotion::ScanIteration() { double pan; double tilt; if (m_currentHeadIteration >= 0 && m_currentHeadIteration <= m_numberOfRefinementPoints / 4) { pan = m_headScanPanRange / ((double) m_numberOfRefinementPoints / 4) * m_currentHeadIteration; tilt = -m_headScanPanRange / ((double) m_numberOfRefinementPoints / 4) * m_currentHeadIteration + m_headScanPanRange; } else if (m_currentHeadIteration >= m_numberOfRefinementPoints / 4 + 1 && m_currentHeadIteration <= m_numberOfRefinementPoints / 2) { pan = -m_headScanPanRange / ((double) m_numberOfRefinementPoints / 4) * (m_currentHeadIteration - m_numberOfRefinementPoints / 4) + m_headScanPanRange; tilt = m_headScanTiltDownRange / ((double) m_numberOfRefinementPoints / 4) * (m_currentHeadIteration - m_numberOfRefinementPoints / 4) - m_headScanTiltDownRange; } else if (m_currentHeadIteration >= m_numberOfRefinementPoints / 2 + 1 && m_currentHeadIteration <= (m_numberOfRefinementPoints * 3) / 4) { pan = -m_headScanPanRange / ((double) m_numberOfRefinementPoints / 4) * (m_currentHeadIteration - m_numberOfRefinementPoints / 2); tilt = m_headScanTiltDownRange / ((double) m_numberOfRefinementPoints / 4) * (m_currentHeadIteration - m_numberOfRefinementPoints / 2) - m_headScanTiltDownRange; } else if (m_currentHeadIteration >= (m_numberOfRefinementPoints * 3) / 4 + 1 && m_currentHeadIteration <= m_numberOfRefinementPoints - 1) { pan = m_headScanPanRange / ((double) m_numberOfRefinementPoints / 4) * (m_currentHeadIteration - (m_numberOfRefinementPoints * 3) / 4) - m_headScanPanRange; tilt = m_headScanPanRange / ((double) m_numberOfRefinementPoints / 4) * (m_currentHeadIteration - (m_numberOfRefinementPoints * 3) / 4); } // m_headInstance->MoveByAngle(pan, tilt); MoveByAngle(pan, tilt); // usleep(MIN_HEAD_RESPONSE_TIME); }