c - 如何用C语言将棋盘内容显示为字符串并将字符串存储在表中?

标签 c c-strings chess string-table

<分区>

如何在 C 语言中将棋盘内容显示为字符串(棋子和点或空白点的空格)并将字符串存储在表中? 我可以展示我已经做过的事情。

最佳答案

char board[][sizeof("♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜")] = {
    {"♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜"},
    {"♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟"},
    {"… … … … … … … …"},
    {"… … … … … … … …"},
    {"… … … … … … … …"},
    {"… … … … … … … …"},
    {"♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙"},
    {"♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖"}
};

棋盘上的每一 block 和点都是多字节字符

strlen("♜") == 3

strlen("…") == 3

一个移动马的例子:

♜ … ♝ ♛ ♚ ♝ ♞ ♜
♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟
… … ♞ … … … … …

#define ROWS 8
#define DOT "…"
#define MBSZ sizeof(DOT)
#define CELLS (MBSZ + 1)

char *pt1 = board[0] + (CELLS * 1); /* 1 cell */
char *pt2 = board[2] + (CELLS * 2); /* 2 cells */

memmove(pt2, pt1, MBSZ);
memmove(pt1, DOT, MBSZ);

for (int i = 0; i < ROWS; i++) {
    printf("%s\n", board[i]);
}

关于c - 如何用C语言将棋盘内容显示为字符串并将字符串存储在表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395316/

相关文章:

将文件中的数字字符串转换为 C 中的 int 数组

c++ - 在没有定义的情况下在一行中连接 C 字符串

c++ - Q : C++ - Reversing a string (sentence and word) using a class

c - 通过多个函数访问数组

c - 从 C 文件夹中读取并重命名文件

用于棋盘的 Java 2D 数组无法正常工作

javascript - JS计算待机

java - 需要帮助弄清楚基本的国际象棋移动逻辑

c - gcc:目标文件或库中的重复标识符

C 字符串段错误