void TetrisBoard::refreshGUI(){ emit levelChanged(tetris.getLevel()); emit linesRemovedChanged(tetris.getLinesRemoved()); Vector parameters(zuckerAgent.getTheta()); std::stringstream ss; ss << parameters; QString parametersString(ss.str().c_str()); emit parametersChanged(parametersString); if(boris.getBoss()!=nullptr){ emit totalMovesChanged(static_cast<int>(boris.getBoss()->getTotalMoves())); } update(); showNextPiece(); }
int TetrixBoard::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QFrame::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: scoreChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: levelChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 2: linesRemovedChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 3: start(); break; case 4: pause(); break; case 5: showInstructions(); break; } _id -= 6; } return _id; }
//! [24] void TetrixBoard::removeFullLines() { int numFullLines = 0; for (int i = BoardHeight - 1; i >= 0; --i) { bool lineIsFull = true; for (int j = 0; j < BoardWidth; ++j) { if (shapeAt(j, i) == NoShape) { lineIsFull = false; break; } } if (lineIsFull) { //! [24] //! [25] ++numFullLines; for (int k = i; k < BoardHeight - 1; ++k) { for (int j = 0; j < BoardWidth; ++j) shapeAt(j, k) = shapeAt(j, k + 1); } //! [25] //! [26] for (int j = 0; j < BoardWidth; ++j) shapeAt(j, BoardHeight - 1) = NoShape; } //! [26] //! [27] } //! [27] //! [28] if (numFullLines > 0) { numLinesRemoved += numFullLines; score += 10 * numFullLines; emit linesRemovedChanged(numLinesRemoved); emit scoreChanged(score); timer.start(500, this); isWaitingAfterLine = true; curPiece.setShape(NoShape); update(); } //! [28] //! [29] }
//! [4] void TetrixBoard::start() { if (isPaused) return; isStarted = true; isWaitingAfterLine = false; numLinesRemoved = 0; numPiecesDropped = 0; score = 0; level = 1; clearBoard(); emit linesRemovedChanged(numLinesRemoved); emit scoreChanged(score); emit levelChanged(level); newPiece(); timer.start(timeoutTime(), this); }