#pragma once #include "graphics.h" #include using namespace std; //棋子位置 struct ChessPos { int row; int col; ChessPos(int r = 0, int c = 0):row{ r }, col{ c } {} }; typedef enum { CHESS_WHITE = -1,//白 CHESS_BLACK = 1//黑 }chess_kind_t; class Chess { //添加数据成员 private: IMAGE chessBlackImg;//黑棋子 IMAGE chessWhiteImg;//白棋子 int gradeSize;//棋盘大小 int margin_x;//棋盘左侧边界 int margin_y;//棋盘顶部边界 double chessSize;//棋子大小(棋盘格大小) ChessPos lastPos;//最后落子 //棋盘中棋子分布情况chessMap[行][列] vector>chessMap{}; //落子方确定 bool playerFlag;//true黑false白 //更新 void updateGameMap(ChessPos* pos); //胜负判断 bool checkWin(); public: Chess(int gradeSize, int marginX, int marginY, double chessSize); //棋盘初始化 void init(); //判断有效点击,并保存有效位置 bool clickBoard(int x, int y, ChessPos *pos); //落子 void ChessMove(ChessPos *pos, chess_kind_t kind); //获取棋盘大小 int getGradeSize(); //是否获胜 bool checkOver(); //获取指定位置棋子状态 int getChessData(ChessPos* pos); int getChessData(int row, int col); };