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(); }