void Game::Update() { for (IGameObject *obj : _objects) { obj->Update(); } DoCollisions(); }
void BacteroidsState::Update(const GameTime &gameTime) { static float spawn_rate = 0.1f; static float num_spawn = 1.0f; spawn_rate = std::log(10.0f + gameTime.GetTotalSeconds() * 0.1f) * 0.5f; num_spawn += spawn_rate * gameTime.GetDeltaSeconds(); while (num_spawn >= 1.0f) { SpawnBacter(); num_spawn -= 1.0f; } m_soundPlayer.UpdateTime(gameTime); UpdatePlayer(gameTime); DoCollisions(); for (size_t_32 i = 0; i < m_objects.Size(); i++) { m_objects[i]->Update(gameTime, PLAY_AREA); // TODO: Spontaneous splitting is very much a hack I says. Fix pls. Solution CES? if (m_objects[i]->GetType() == Bacter::TYPE) { Bacter *bacter = (Bacter*)m_objects[i]; if (bacter->WantsToSplit() && m_objects.CanObtainBacter()) SplitBacter(bacter); } } for (size_t_32 i = 0; i < m_objects.Size(); ) { if (!m_objects[i]->IsAlive()) { m_objects.Remove(i); continue; } i++; } m_damageFade.Update(gameTime.GetDeltaSeconds()); }
void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QRectF rec = boundingRect(); QBrush Brush(Qt::gray); // Basic collition detection if(scene()->collidingItems(this).isEmpty()) { // No Colision! Brush.setColor(Qt::green); } else { // Colision! Brush.setColor(Qt::red); // Set new position DoCollisions(); } painter->fillRect(rec,Brush); painter->drawRect(rec); }