首页 > 解决方案 > 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;

}

标签: cchess

解决方案


解决了!

由@Someprogrammerdude 回答

比较:你的 printf(" %c "), letra; 与正确的 printf(" %c ", letra);


推荐阅读