MCPcopy Create free account
hub / github.com/XMuli/ChineseChess / drawStarMarks

Method drawStarMarks

ChessBoard.cpp:378–412  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

376}
377
378void ChessBoard::drawStarMarks(QPainter &painter)
379{
380 // 星位标记位置:炮位(row=2,col=1/7; row=7,col=1/7) 和 兵/卒位
381 // 兵位: row=3,col=0/2/4/6/8; row=6,col=0/2/4/6/8
382 struct StarPos { int row; int col; };
383 StarPos positions[] = {
384 {2,1},{2,7},{7,1},{7,7}, // 炮位
385 {3,0},{3,2},{3,4},{3,6},{3,8}, // 黑方兵位
386 {6,0},{6,2},{6,4},{6,6},{6,8} // 红方卒位
387 };
388
389 const qreal len = m_nD * 0.15; // 标记线长度
390 const qreal gap = m_nD * 0.08; // 与交叉点的间距
391 painter.setPen(QPen(QColor(101, 67, 33), 1.5));
392
393 for (const auto& pos : positions) {
394 qreal cx = m_nOffSet + pos.col * m_nD;
395 qreal cy = m_nOffSet + pos.row * m_nD;
396
397 // 右下角标记(边界列除外右侧)
398 if (pos.col < 8) {
399 painter.drawLine(QPointF(cx+gap, cy+gap), QPointF(cx+gap+len, cy+gap));
400 painter.drawLine(QPointF(cx+gap, cy+gap), QPointF(cx+gap, cy+gap+len));
401 painter.drawLine(QPointF(cx+gap, cy-gap), QPointF(cx+gap+len, cy-gap));
402 painter.drawLine(QPointF(cx+gap, cy-gap), QPointF(cx+gap, cy-gap-len));
403 }
404 // 左侧标记(边界列除外左侧)
405 if (pos.col > 0) {
406 painter.drawLine(QPointF(cx-gap, cy+gap), QPointF(cx-gap-len, cy+gap));
407 painter.drawLine(QPointF(cx-gap, cy+gap), QPointF(cx-gap, cy+gap+len));
408 painter.drawLine(QPointF(cx-gap, cy-gap), QPointF(cx-gap-len, cy-gap));
409 painter.drawLine(QPointF(cx-gap, cy-gap), QPointF(cx-gap, cy-gap-len));
410 }
411 }
412}
413
414void ChessBoard:: drawLastStep(QPainter &painter,QVector<ChessStep*>& steps)
415{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected