c - C 国际象棋游戏 - 棋盘黑色部分的字母显示不正确
问题描述
我正在用 C 语言构建一个国际象棋游戏,但在显示黑板上的字母时遇到问题。在白板上,它按预期工作。
你可以在这里看到问题:这是我到目前为止的代码:
#include <stdio.h>
#include <stdlib.h>
// Matriz de 8 por 8 para fazer os quadrados do jogo
char xadrez[8][8] = {
{ 'T', 'C', 'B', 'Q', 'K', 'B', 'C', 'T'}, //Pretas em maiúsculas
{ 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'},
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
{ 'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'},//Brancas em minúsculas
{ 't', 'c', 'b', 'q', 'k', 'b', 'c', 't'}
};
// Função para pintar a tela e o texto dentro dos quadrados
int pintarTelaTexto() {
system("CLS");// verificar para que serve system cls
//linha - coluna e r para controle da casa central onde vamos por a letra
int lin, col, r;
for (lin=0; lin < 8; lin++) {
for (r=0; r < 3; r++) {
for (col=0; col < 8; col++) {
//char letra com problema nao aparece na casa central apa
char peca = xadrez[lin][col];
char letra = ((lin + col) % 2 == 0) ? '\xB2' : ' ';
letra = (r == 1 && peca != ' ') ? peca : letra; // operador ternário
if ((lin + col ) % 2 == 0) {
printf("\xB2\xB2%c\xB2\xB2", letra);
}
else {
// %c para inserção da letra
printf(" %c "), letra;
}
}
printf("\n");
}
}
}
int main() {
pintarTelaTexto();
getch();
return 0;
}
解决方案
解决了!
由@Someprogrammerdude 回答
比较:你的 printf(" %c "), letra; 与正确的 printf(" %c ", letra);
推荐阅读
- reactjs - 几周前开始反应原生,有人可以帮我解决这个错误:不变违规:原生模块不能为空
- c - 无法理解行或列和矩阵问题
- c++ - 为什么当两个文本文件以相同的确切顺序列出时,算法 set_intersection 只返回匹配的字符串?
- android - Kotlin 包返回 null
- ios - 为什么我不能为作为 CAAnimationGroup 一部分的图层子图层的路径设置动画,但我可以为组中的其他属性设置动画?
- html - jQuery - 悬停时淡入图像,之后淡出
- python - np.tril 不会使事情完全为 0
- javascript - 单击按钮时将文本插入另一个页面上的元素
- sed - 如何解析 sed 正则表达式语法?
- swift - 使用 UIViewControllerRepresentable 在 SwiftUI 中实现图像选择器时出现内存泄漏