C Шахматы - Буквы не отображаются правильно на черной части доски - PullRequest
0 голосов
/ 29 декабря 2018

Я строю шахматную игру на 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 голосов
/ 31 декабря 2018

Решено!

Ответ @ Someprogrammerdude

Сравните: Ваш printf ("% c"), letra;по сравнению с правильным printf ("% c", letra);

...