Пример #1
0
void Game::Update()
{
	for (IGameObject *obj : _objects)
	{
		obj->Update();
	}

	DoCollisions();
}
Пример #2
0
    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());
    }
Пример #3
0
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);
}