QString Board::getState() { QString state; QString entry, tmp; Move m; /* remove any highlighting */ showMove(m,0); /* Color + Counts */ state += (char) ('A' + color1Count); state += (char) ('A' + color2Count); state += (char) ('A' + 3*color + field[order[0]]); /* Board (field values can be 0/1/2; 3 fields coded in one char */ for(int i=1;i<=60;i+=3) state+= (char) ('@' + 9*field[order[i]] + 3*field[order[i+1]] + field[order[i+2]] ); /* -> 23 chars */ return state; }
void BoardWidget::mouseMoveEvent( QMouseEvent* pEvent ) { if ((!gettingMove && !editMode) || !mbDown) return; int pos = positionOf( pEvent->x(), pEvent->y() ); if (pos == oldPos) return; oldPos = pos; if (editMode) { int f = fieldOf(pos); if (field[f] != Board::out && field[f] != editColor) { if (editColor == Board::color1) field[f] = Board::color1bright; else if (editColor == Board::color2) field[f] = Board::color2bright; else if (field[f] == Board::color1) field[f] = Board::color1bright; else if (field[f] == Board::color2) field[f] = Board::color2bright; if (renderMode) updatePieces(); update(); } return; } if (!startValid) { /* We haven't a valid move yet. Check if we are over a valid start */ startValid = isValidStart(pos, (pEvent->button() == Qt::MidButton)); qDebug() << "Start pos " << pos << " is valid: " << startValid; // actMove.print(); if (!startValid) return; startPos = oldPos = pos; showStart(actMove,1); startShown = true; QString tmp; actValue = - board.calcEvaluation(); tmp = tr("Board value: %1").arg(actValue); emit updateSpy(tmp); return; } /* restore board */ updatePosition(); startShown = false; if (isValidEnd(pos)) { // actMove.print(); board.playMove(actMove); int v = board.calcEvaluation(); board.takeBack(); QString tmp; tmp.sprintf("%+d", v-actValue); QString str = QString("%1 : %2").arg(actMove.name()).arg(tmp); emit updateSpy(str); showMove(actMove,3); setCursor(*arrow[shownDirection]); } else { QString tmp; setCursor(Qt::CrossCursor); if (pos == startPos) { showStart(actMove,1); startShown = true; tmp = tr("Board value: %1").arg(actValue); } else { if (renderMode) updatePieces(); update(); } emit updateSpy(tmp); } }