前言:
眼前咱们对“象棋算法c”可能比较讲究,小伙伴们都想要知道一些“象棋算法c”的相关资讯。那么小编也在网上搜集了一些对于“象棋算法c””的相关文章,希望我们能喜欢,小伙伴们一起来学习一下吧!学习工控知识,就来工控小新
农历十月二十九
2023/12/ 11
往期推荐
2023年12月10日,每天花费一分钟练习C语言:寻找两个正序数组的中位数
2023年12月9日,每天花费一分钟练习C语言:判断这一天是这一年的第几天
每日一练
/ Daily Exercises
题目:利用C语言输出一个中国象棋棋盘
题目分析
中国象棋是一种古老而有趣的棋类游戏,它的棋盘由10行9列的格子组成,中间有一条河界分隔两方的阵营。每一方有16个棋子,分别是帅(或将)、仕(或士)、相(或象)、马、车、炮和兵(或卒)。每种棋子有不同的走法和规则,目的是将对方的帅(或将)吃掉,即将军。
如果我们想用C语言来输出一个中国象棋棋盘,我们需要考虑以下几个问题:
如何表示棋盘的格子和河界?如何表示棋子的种类和颜色?如何打印棋盘和棋子?
程序展示
#include <stdio.h>
// 定义棋盘的行数和列数
#define ROWS 10
#define COLS 9
// 定义棋子的类型
#define EMPTY '.'
#define RED_KING 'R'
#define BLACK_KING 'B'
#define RED_GUARD 'G'
#define BLACK_GUARD 'g'
#define RED_ELEPHANT 'E'
#define BLACK_ELEPHANT 'e'
#define RED_HORSE 'H'
#define BLACK_HORSE 'h'
#define RED_ROOK 'C'
#define BLACK_ROOK 'c'
#define RED_CANNON 'A'
#define BLACK_CANNON 'a'
#define RED_PAWN 'P'
#define BLACK_PAWN 'p'
// 定义一个函数,根据棋子的类型,返回对应的中文的字
char *get_chinese_char(char type)
{
switch (type)
{
case RED_KING: return "帥";
case BLACK_KING: return "將";
case RED_GUARD: return "仕";
case BLACK_GUARD: return "士";
case RED_ELEPHANT: return "相";
case BLACK_ELEPHANT: return "象";
case RED_HORSE: return "馬";
case BLACK_HORSE: return "馬";
case RED_ROOK: return "車";
case BLACK_ROOK: return "車";
case RED_CANNON: return "炮";
case BLACK_CANNON: return "炮";
case RED_PAWN: return "兵";
case BLACK_PAWN: return "卒";
default: return " ";
}
}
// 定义一个函数,打印出棋盘
void print_board(char board[ROWS][COLS])
{
// 打印出第一行的边框
printf("+");
for (int j = 0; j < COLS; j++)
{
printf("----+");
}
printf("\n");
// 遍历棋盘的每一行
for (int i = 0; i < ROWS; i++)
{
// 打印出每一行的棋子和竖线
printf("| ");
for (int j = 0; j < COLS; j++)
{
printf(" %s ", get_chinese_char(board[i][j]));
printf("|");
}
printf("\n");
// 打印出每一行的边框或河界
printf("+");
for (int K = 0; K < COLS; K++)
{
if (i == 4)
{
printf("====+");
}
else
{
printf("----+");
}
}
printf("\n");
}
}
// 定义一个函数,初始化棋盘
void init_board(char board[ROWS][COLS]) {
// 将棋盘的所有格子设为空
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
board[i][j] = EMPTY;
}
}
// 将棋子放在对应的位置
board[0][0] = board[0][8] = BLACK_ROOK;
board[0][1] = board[0][7] = BLACK_HORSE;
board[0][2] = board[0][6] = BLACK_ELEPHANT;
board[0][3] = board[0][5] = BLACK_GUARD;
board[0][4] = BLACK_KING;
board[2][1] = board[2][7] = BLACK_CANNON;
board[3][0] = board[3][2] = board[3][4] = board[3][6] = board[3][8] = BLACK_PAWN;
board[9][0] = board[9][8] = RED_ROOK;
board[9][1] = board[9][7] = RED_HORSE;
board[9][2] = board[9][6] = RED_ELEPHANT;
board[9][3] = board[9][5] = RED_GUARD;
board[9][4] = RED_KING;
board[7][1] = board[7][7] = RED_CANNON;
board[6][0] = board[6][2] = board[6][4] = board[6][6] = board[6][8] = RED_PAWN;
}
// 主函数
int main() {
// 定义一个二维数组,表示棋盘
char board[ROWS][COLS];
// 初始化棋盘
init_board(board);
// 打印出棋盘
print_board(board);
return 0;
}
程序测试
不适用素材的话只能做到下面这种程序了。
源代码获取
#软件下载通道#
我用夸克网盘分享了「20231211」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:
(链接和提取码建议复制粘贴,手动输入容易出现错误)
#支持一下#
分享整理,测试发布不易 如果您方便的话可以帮忙点一下↓↓
谢谢大家!
下期题目
编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列;每行的第一个整数大于前一行的最后一个整数
点赞加关注,学习不迷路
微信公众号|工控小新
EPLAN电气绘图、TIA博图基础 、CAD、C语言教学、单片机基础、三菱PLC ... 每日持续更新中
#头条创作挑战赛#
标签: #象棋算法c #c语言下象棋 #c语言判断某一天是这一年的第几天 #输出矩阵c语言 #用c语言编写国际象棋棋盘