#include <iostream>
#include <string>
#include <windows.h>
#include <conio.h>
using namespace std;
// 棋盘尺寸
const int BOARD_ROWS = 10;
const int BOARD_COLS = 9;
// 棋子类型枚举
enum PieceType {
EMPTY = 0,
R_SHUAI = 1, R_SHI = 2, R_XIANG = 3, R_MA = 4,
R_CHE = 5, R_PAO = 6, R_BING = 7,
B_JIANG = -1, B_SHI = -2, B_XIANG = -3, B_MA = -4,
B_CHE = -5, B_PAO = -6, B_ZU = -7
};
// 控制台颜色常量
const int COLOR_RED = 12; // 红方棋子:亮红色
const int COLOR_BLACK = 11; // 黑方棋子:亮青色
const int COLOR_WHITE = 15; // 边框与坐标:亮白色
const int COLOR_YELLOW = 14; // 标题与提示:亮黄色
const int COLOR_GREEN = 10; // 楚河汉界:亮绿色
// 游戏状态常量
const int STATE_SELECT_PIECE = 0; // 选择棋子状态
const int STATE_SELECT_TARGET = 1; // 选择目标状态
// ==================== 控制台辅助函数【新增,解决闪烁】 ====================
void GotoXY(int x, int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
// ==================== 棋子类 ====================
class Piece {
public:
int type, row, col;
Piece(int t = EMPTY, int r = 0, int c = 0) : type(t), row(r), col(c) {}
};
// ==================== 棋盘类 ====================
class Board {
private:
Piece board[BOARD_ROWS][BOARD_COLS];
public:
Board() { initBoard(); }
};
// ==================== 规则验证类 ====================
class RuleChecker {
private:
Board &board;
public:
RuleChecker(Board &b) : board(b) {}
};
// ==================== 游戏控制类 ====================
class Game {
private:
Board board;
RuleChecker rules;
bool redTurn;
bool gameOver;
string winner;
int cursorRow, cursorCol;
int fromRow, fromCol;
int state;
public:
Game() : board(), rules(board), redTurn(true), gameOver(false),
cursorRow(0), cursorCol(4), fromRow(-1), fromCol(-1),
state(STATE_SELECT_PIECE) {}
};
// ==================== 主函数 ====================
int main() {
system("chcp 936");
system("cls");
system("mode con cols=80 lines=35");
}