Пример #1
0
void MainWindow::keyPressEvent(QKeyEvent *event)
{

    Figure newFig = *cur_figure;
    switch(event->key()){
    case Qt::Key_Up:{
        newFig.rotate();
        break;
    }
    case Qt::Key_Down: {
        newFig.setPosition(cur_figure->getPosition().x(), cur_figure->getPosition().y() + 1);
        break;
    }
    case Qt::Key_Left: {
        newFig.setPosition(cur_figure->getPosition().x() - 1, cur_figure->getPosition().y());
        break;
    }
    case Qt::Key_Right: {
        newFig.setPosition(cur_figure->getPosition().x() + 1, cur_figure->getPosition().y());
        break;
    }
    default: {
        QMainWindow::keyPressEvent(event);
    }
    }

    if (m_cup.hasPlace(newFig)) {
        delete cur_figure;
        cur_figure = new Figure(newFig);
    }
    draw();
}
Пример #2
0
void MainWindow::onTimerTick()
{
    Figure newFig = *cur_figure;
    newFig.setPosition(newFig.getPosition().x(), cur_figure->getPosition().y() + 1);
    if (m_cup.hasPlace(newFig)) {
        delete cur_figure;
        cur_figure = new Figure(newFig);
    } else {
        m_cup.putFigure(*cur_figure);
        m_score += m_cup.clearedLines() * 100 + (m_cup.clearedLines() > 0 ? 100 : 0);
        if (m_score >= NEXTLEVELSCORE) {
            m_score = 0;
            if (m_level < MAX_LEVEL)
                m_level++;
            else
                endGame();
            init();
        }
        delete cur_figure;
        cur_figure = new Figure(m_cup);
        if (m_cup.filled())
            gameOver();
    }
    draw();
}