目录
一、五子棋项目介绍
1.游戏规则
五子棋是我国古代传统的黑白棋种之一,黑白双方依次落子,任意一方在棋盘上形成横向、纵向、斜向的连续相同颜色的五颗棋子的一方胜。
2.五指棋界面显示
此次项目将不使用任何图形库进行开发,所有显示内容都是以字符形式进行显示,为了让整个五子棋项目显示的界面更加漂亮,这里我们使用VT100终端控制码进行输出。效果如下
二、 VT100简介
VT100是一个终端类型定义,VT100控制码是用来在终端扩展显示的代码。主要用来在终端上任意坐标用不同的颜色显示字符。所有的控制符是\033或\e打头(即ESC的ASCII码)用输出字符语句来输出。可以在命令行用echo命令,或者在c程序中用printf来输出VT100的控制字符。
1.VT100控制码


2.前景颜色(字体颜色)设置

3. 背景颜色设置
注意 :字体颜色可以和背景颜色一起设置,例如: \033[44;37m 表示将背景颜色设置为蓝色,字体颜色设为白色。
注意:
1.在终端上面,坐标系的原点为左上角,水平向右为x轴正方向坐标垂直向下为y轴正方向坐标
2.在输出完内容结束的时候,一定要记得使用\033[0m关闭属性,否则会影响终端正常输出
三、配置头文件
#ifndef CONFIG_HPP
#define CONFIG_HPP
#define BLACK 0x1 //黑色
#define WHITE 0x2 //白色
#define BLACK_COLOR "\033[37;40m[♀]\033[0m" //黑棋颜色配置
#define WHITE_COLOR "\033[47;30m[♀]\033[0m" //白棋颜色配置
#define LINE 21 //棋盘宽21
#define COLUMN 21 //棋盘长21
#define CHESS_BOARD_FILE "ChessBoard.txt" //棋盘文件配置
#define CHESS_BOARD_COLOR "\033[43;37m" //棋盘颜色配置
#define LINE_INTERVAL 2 //宽距
#define COLUMN_INTERVAL 4 //长距
#define X_MAX 81 //最大x坐标
#define Y_MAX 41 //最大y坐标
#define X_CENTER 41 //棋盘中心点的x坐标
#define Y_CENTER 21 //棋盘中心点的y坐标
#endif
四、棋子对象设计
1.棋子的抽象类
#ifndef CHESS_HPP
#define CHESS_HPP
#include <iostream>
#include <cstdio>
using namespace std;
class Chess
{
public:
Chess(int x,int y,char color) : x(x),y(y),color(color)
{
}
virtual ~Chess(){}
virtual void show()=0; //棋子方法的纯虚函数
int getX() const //获取棋子的x坐标
{
return x;
}
int getY() const //获取棋子的y坐标
{
return y;
}
char getColor() const //获取棋子的颜色
{
return color;
}
private:
int x; //棋子的x坐标
int y; //棋子的y坐标
char color; //棋子的颜色
};
#endif

本文档详细介绍了如何使用VT100控制码在命令行界面创建一个字符版五子棋游戏。游戏规则遵循传统五子棋,通过ASCII字符显示棋盘和棋子,并利用键盘控制。文中涵盖了棋子和棋盘对象设计、棋手类、按键控制、裁判判断以及游戏流程等关键模块的实现细节。


最低0.47元/天 解锁文章
249

被折叠的 条评论
为什么被折叠?



