게시판장기로 이해하는 규칙 엔진과 평가 함수 탐색예제 소스

예제 소스

장기로 이해하는 규칙 엔진과 평가 함수 탐색 · 파일 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;
};