예제 소스
장기로 이해하는 규칙 엔진과 평가 함수 탐색 · 파일 59개
BoardWidget.h
#pragma once
#include "Types.h"
#include <QWidget>
#include <optional>
#include <vector>
class Game;
class BoardWidget : public QWidget {
Q_OBJECT
public:
explicit BoardWidget(QWidget* parent = nullptr);
void setGame(Game* game);
void setFlipped(bool flipped);
void setInteractive(bool interactive);
void clearSelection();
QSize sizeHint() const override;
QSize minimumSizeHint() const override;
signals:
void moveCommitted();
void statusNeedsUpdate();
protected:
void paintEvent(QPaintEvent* event) override;
void mousePressEvent(QMouseEvent* event) override;
void resizeEvent(QResizeEvent* event) override;
private:
QPointF pointFor(Pos pos) const;
std::optional<Pos> posFromPoint(QPointF pt) const;
qreal pieceRadius(PieceType type) const;
void drawBoard(class QPainter& p) const;
void drawHighlights(class QPainter& p) const;
void drawPiece(class QPainter& p, Pos pos, Piece piece) const;
QFont pieceFont(qreal radius) const;
Game* game_ = nullptr;
bool flipped_ = false;
bool interactive_ = true;
std::optional<Pos> selected_;
std::vector<Pos> targets_;
qreal originX_ = 0;
qreal originY_ = 0;
qreal cellW_ = 48;
qreal cellH_ = 44;
};