想写一个控制台运行的象棋程序
目前的思路大概是用一个二位数组画棋盘出来,然后再把棋子画上去,每次移动就更新一次棋盘。
但是遇到一个问题就是UTF-8里面一个中文字符占3个字节,所以需要一个3个位子去储存一个棋子,但是在控制台输出的时候中文字符只显示两个格子,导致排版的时候变得很奇怪
控制台的默认编码格式是ansi,你把控制台的编码格式改成
utf-8
试试
以下答案引用自GPT-3大模型,请合理使用:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // 创建棋盘 int board[8][8]; // 初始化 for (int i = 0; i < 8; ++i) for (int j = 0; j < 8; ++j) board[i][j] = 0; // 创建棋子 int player1, player2; char symbol1, symbol2; // 输入棋盘信息 scanf("%d", &player1); scanf("%d", &player2); // 获取棋子的移动方向 symbol1 = getchar(); symbol2 = getchar(); if (symbol1 == 'x' && symbol2 == 'o') player1 = 1; else if (symbol1 == 'o' && symbol2 == 'x') player2 = -1; else { printf("请输入x或o
"); getchar(); } // 移动棋子 board[player1][player2] = symbol1; // 更新棋盘 for (int i = 0; i < 8; ++i) for (int j = 0; j < 8; ++j) if (board[player1][j] == symbol1 && board[j][player2] == symbol2) board[player1][j] = 0; printf("棋盘:%d
", board[player1][player2]); return 0; }