2
respostas

[Dúvida] Olá, estou com problemas na ASCII art.

Quando coloco uma ASCII art aparece um monte de "?" no lugar dos caracteres.

Meu código:

#include <stdio.h>

#include <locale.h>

#include <stdlib.h>

#include <time.h>

int main() {

setlocale(LC_ALL, "Portuguese");

printf(" Bem vindo ao jogo de adivinhação\n"); printf(" ⡆⣐⢕⢕⢕⢕⢕⢕⢕⢕⠅⢗⢕⢕⢕⢕⢕⢕⢕⠕⠕⢕⢕⢕⢕⢕⢕⢕⢕⢕ \n"); printf(" ⢐⢕⢕⢕⢕⢕⣕⢕⢕⠕⠁⢕⢕⢕⢕⢕⢕⢕⢕⠅⡄⢕⢕⢕⢕⢕⢕⢕⢕⢕ \n"); printf(" ⢕⢕⢕⢕⢕⠅⢗⢕⠕⣠⠄⣗⢕⢕⠕⢕⢕⢕⠕⢠⣿⠐⢕⢕⢕⠑⢕⢕⠵⢕ \n"); printf(" ⢕⢕⢕⢕⠁⢜⠕⢁⣴⣿⡇⢓⢕⢵⢐⢕⢕⠕⢁⣾⢿⣧⠑⢕⢕⠄⢑⢕⠅⢕ \n"); printf(" ⢕⢕⠵⢁⠔⢁⣤⣤⣶⣶⣶⡐⣕⢽⠐⢕⠕⣡⣾⣶⣶⣶⣤⡁⢓⢕⠄⢑⢅⢑ \n"); printf(" ⠍⣧⠄⣶⣾⣿⣿⣿⣿⣿⣿⣷⣔⢕⢄⢡⣾⣿⣿⣿⣿⣿⣿⣿⣦⡑⢕⢤⠱⢐ \n"); printf(" ⢠⢕⠅⣾⣿⠋⢿⣿⣿⣿⠉⣿⣿⣷⣦⣶⣽⣿⣿⠈⣿⣿⣿⣿⠏⢹⣷⣷⡅⢐ \n"); printf(" ⣔⢕⢥⢻⣿⡀⠈⠛⠛⠁⢠⣿⣿⣿⣿⣿⣿⣿⣿⡀⠈⠛⠛⠁⠄⣼⣿⣿⡇⢔ \n"); printf(" ⢕⢕⢽⢸⢟⢟⢖⢖⢤⣶⡟⢻⣿⡿⠻⣿⣿⡟⢀⣿⣦⢤⢤⢔⢞⢿⢿⣿⠁⢕ \n"); printf(" ⢕⢕⠅⣐⢕⢕⢕⢕⢕⣿⣿⡄⠛⢀⣦⠈⠛⢁⣼⣿⢗⢕⢕⢕⢕⢕⢕⡏⣘⢕ \n"); printf(" ⢕⢕⠅⢓⣕⣕⣕⣕⣵⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣷⣕⢕⢕⢕⢕⡵⢀⢕⢕ \n"); printf(" ⢑⢕⠃⡈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⢕⢕⢕ \n"); printf(" ⣆⢕⠄⢱⣄⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢁⢕⢕⠕⢁ \n"); printf(" ⣿⣦⡀⣿⣿⣷⣶⣬⣍⣛⣛⣛⡛⠿⠿⠿⠛⠛⢛⣛⣉⣭⣤⣂⢜⠕⢑⣡⣴⣿ \n");

int segundos = time(0);
srand(segundos);
int numeroGrande = rand();
int numeroSecreto = numeroGrande % 100;
int chute;
int tentativas = 1;
int dificuldade;
int numeroTentativas;
int acertou = 0;
double pontos = 1000;

printf("Escolha a dificuldade do jogo: (1) Fácil (2) Médio (3) Difícil\n\n");
scanf("%d", &dificuldade);

switch (dificuldade)
{
case 1:
    numeroTentativas = 20;
    break;

case 2:
    numeroTentativas = 15;
    break;

case 3:
    numeroTentativas = 5;
    break;

default:
    printf("Número inválido");
    break;
}

for(int i = 0; i < numeroTentativas; i++) {

    printf("\nEssa é a sua tentativa %d \n", tentativas);
    printf("Qual é o seu chute ? \n");
    scanf("\n%d", &chute);
    printf("\nSeu chute foi %d \n", chute);

    if(chute < 0){
        printf("Você não pode chutar números negativos");
        continue;
    }

    int acertou = chute == numeroSecreto;
    int maior = chute > numeroSecreto;

    if(acertou) {
        break;
    }
    else if(maior) {

        printf("Seu número é maior que o número secreto. \n");
    }
    else {
        printf("Seu número é menor que o número secreto. \n");
    }
    tentativas++;
    double pontosPerdidos = abs(chute - numeroSecreto) / 2.0;
    pontos = pontos - pontosPerdidos;


} 
printf("\nFim de jogo\n");
if (acertou) {
    printf("Você ganhou\n");
    printf("\nParabéns você acertou qual era o número secreto! \n");
    printf("Você acertou em %d tentativas \n", tentativas);
    printf("\nJogue novamante!!\n");
    printf("Seus pontos foram: %.2f \n", pontos);

} else {
    printf("Você perdeu!! Tente novamente\n");
}

}

Mensagem que aparece no terminal:

Bem vindo ao jogo de adivinhação ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? ?????????????????????????????? Escolha a dificuldade do jogo: (1) Fácil (2) Médio (3) Difícil

Obs: quando enviei a dúvida aqui bugou a parte dos printf.

2 respostas

Fala Augusto, tudo certo?

Pode ser que seja a codificação do seu terminal que esteja incompatível. Você está utilizando um sistema Windows?

Caso esteja, pode colocar o seguinte comando no seu prompt de comando?

chcp 65001

Esse comando vai alterar a codificação do seu terminal, para permitir que outros caracteres apareçam!

Estou à disposição.

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Estou fazendo no vs code windows, coloquei no terminal de lá e não mudou nada.