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