コード例 #1
0
ファイル: tetrisboard.cpp プロジェクト: bobbaluba/restit
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();
}
コード例 #2
0
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;
}
コード例 #3
0
//! [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
0
//! [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);
}