Ir ao conteúdo

C Como imprimir um programa todo no estilo RPG


Ir à solução Resolvido por Lucca Rodrigues,

Posts recomendados

Postado

Olá, gostaria se saber se tem como imprimir um programa todo no estilo RPG (letra por letra), pois estou fazendo um jogo e acho que ficaria legal... Se sim, poderia me explicar como? Sou nova na área, estou cursando o 1° Semestre de CC. Em todo caso, obrigado.

Postado

@Frokjor na vdd, acho que eu não expliquei direito. Eu já fiz o jogo, porém quando eu coloco o programa para rodar, eu queria que ele aparecesse as informações como se tivesse alguém digitando, igual nos jogos de RPG, que aparece letra por letra. Não sei se deu para entender agora...

  • Curtir 1
Postado

@Taynara Diniz Fiz algo assim há algum tempo, inclusive com aquele efeito sonoro 8bit, sabe? Tipo uns beeps a cada caractere, com exceção dos espaços.

 

1 hora atrás, Taynara Diniz disse:

eu queria que ele aparecesse as informações como se tivesse alguém digitando, igual nos jogos de RPG

É como @arfneto disse, você pode imprimir cada letra intercalada por um delay de alguns milissegundos, e para isso, você precisaria de um laço.

Vou deixar aqui o programa que fiz, porém, para que ele reproduza o .wav, o arquivo deve estar na mesma pasta que a main, e você deve linkar a livraria -lwinmm.

Se não quer reproduzir nenhum som, apenas delete a função PlaySound() dos laços.

 

Provavelmente o caminho para linkar é algo como: settings / compiler / linker settings / other linker options.

Aqui no ambiente que uso, o CodeBlocks, costumo seguir esse caminho: Build options... / Linker settings / Other linker options.

 

Teste isso:

#include <stdio.h>
#include <windows.h>
#include <string.h>

int main()
{
    char frase1[12] = "Sua string:";
    char frase2[201];
    int leng;
    printf("Insira a string:\n");
    scanf("%200[^\n]", frase2);
    printf("\n");

    for(leng = 0; leng <= 11; leng++){
        Sleep(160);
        printf("%c", frase1[leng]);
        if(frase1[leng] != ' '){
            PlaySound(TEXT("texto.wav"), NULL, SND_FILENAME | SND_ASYNC);
        }
    }
    printf("\n");

    for(leng = 0; leng <= (int)strlen(frase2); leng++){
        Sleep(160);
        printf("%c", frase2[leng]);
        if(frase2[leng] != ' '){
            PlaySound(TEXT("texto.wav"), NULL, SND_FILENAME | SND_ASYNC);
        }
    }
    printf("\n");

    return 0;
}

Arquivo .wav:

RPG.zip

  • Curtir 1
  • Obrigado 1
Postado

criei esse agora ver se serve e me diz se está muito lonje do que imaginou

#include <stdio.h>
#include <windows.h>
#include <string.h>

int main()
{
    char frase[12] = "Sua string";
        int i;
        for(i=0;i<strlen(frase);i++){
        Beep(900,10);
        printf("%c",frase[i]);
        Sleep(400);
    }
    return 0;
}

 

  • Curtir 2
  • Solução
Postado

@Taynara Diniz Linux?

Daí não da pra usar a função PlaySound(), nem a função Beep() que o @herbertbahia usou...

Talvez possa usar o seguinte no lugar da função PlaySound() ou da Beep():

printf("\a");

É só 1 frequência, mas acho que serve para o que você quer. '\a' (BEL) é um caractere da tabela ASCII, pode ser usado pra reproduzir um som de beep.

Já a função Sleep()... Já tentou incluir a biblioteca unistd.h no lugar da windows.h? Não tenho como te dizer com toda a certeza, até porque meu sistema operacional é Windows, mas se não me engano, para microssegundos, a função seria usleep(), e para segundos, sleep().

  • Obrigado 1
Postado

@Lucca Rodrigues Certo, vou testar e dar uma pesquisada, é como eu falei lá em cima, eu ainda não conheço muitas coisas, tenho pesquisado bastante... Mas tem umas coisas que eu ainda não entendo... Eu sei o básico do basico e umas coisas que vou pesquisando e aprendendo.

  • Curtir 1
  • 2 semanas depois...
Postado

@Taynara Diniz eu recomendaria que se você resolver fazer outro rpg, o faça com gráficos, não necessariamente de bibliotecas terceirizadas,exportando imagens, você pode fazer com characteres ascii, assim olhe 

printf("%c",219);

a saída seria um quadrado.

Você pode juntar vários desses com laços e fazer uma parede, um quadrado maior e outros.

também pode colori-los, dê uma olhada na função SetConsoleTextAttribute. 

 

  • Curtir 1
Postado

@Daniel Bittencourt obrigado pela dica, estou aprendendo sobre isso na faculdade, semana passada o meu professor falou sobre a tabela ascii, eu ainda nem conhecia, estou aprendendo vetores e strings. Mas valeu mesmo pela dica, vou estudar como fazer com gráficos e tal, qualquer coisa eu tento fazer esse meu jogo 2.0 hahaha

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...