void Board::drawConnection(int timeout) { if(connection.empty()) return; // lighten the fields updateField(connection.front().x, connection.front().y); updateField(connection.back().x, connection.back().y); QPainter p; p.begin(this); p.setPen(QPen(QColor("red"), tiles.lineWidth())); // Path.size() will always be >= 2 Path::const_iterator pathEnd = connection.end(); Path::const_iterator pt1 = connection.begin(); Path::const_iterator pt2 = pt1; ++pt2; while(pt2 != pathEnd) { p.drawLine( midCoord(pt1->x, pt1->y), midCoord(pt2->x, pt2->y) ); ++pt1; ++pt2; } p.flush(); p.end(); QTimer::singleShot(timeout, this, SLOT(undrawConnection())); }
void Board::drawArrow(int x1, int y1, int x2, int y2) { if(trying) return; // find out number of array int num = 0; while(num < 4 && history[num].x != -2) num++; // lighten the fields // remember mark_x,mark_y int mx = mark_x, my = mark_y; mark_x = x1; mark_y = y1; updateField(x1, y1); mark_x = x2; mark_y = y2; updateField(x2, y2); // restore the mark mark_x = mx; mark_y = my; QPainter p; p.begin(this); p.setPen(QPen(QColor("red"), 6)); num = 0; while(num < 3 && history[num+1].x != -2) { p.drawLine(midCoord(history[num].x, history[num].y), midCoord(history[num+1].x, history[num+1].y)); num++; } p.flush(); p.end(); QTimer::singleShot(getDelay(), this, SLOT(undrawArrow())); }