C象棋游戏-字母不能正确显示在棋盘的黑色部分

时间:2018-12-29 19:20:23

标签: c chess

我正在用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;

}

1 个答案:

答案 0 :(得分:0)

解决了!

由@Someprogrammerdude回答

比较:您的printf(“%c”),letra;与正确的printf(“%c”,letra);