Ir ao conteúdo

Posts recomendados

Postado

Bom dia, 

Eu estava curioso e gostaria de saber se existe alguma maneira de fazer com que esse trecho do meu código inicie de uma maneira como se alguém tivesse digitando na tela,

letra a letra normalmente nesse trecho especifico do meu código. 

 

Existe algum comando especifico ou precisa de fazer de alguma maneira? 

Obrigado. 

void introducao ()
{

    puts("Bem-vindo ao Batalha Naval");
    printf("\n");
    puts("Você é um almirante que tem a missão de derrubar as embarcações inimigas\ne dar vantagem para o seu país na guerra");
    puts("Suas Embarcações");
    printf("\nSubmarino = SSS ou \nS\nS\nS");
    printf("\nHidro-Avião = H em V ou > ou <");
    printf("\nPorta-Aviões = PPP ou \nP\nP\nP");
    printf("\nDestroyer = DDD ou \nD\nD\nD");
    printf("\n");
    printf("\n");
    puts("Qual seu nome?");
    fflush(stdin);
    gets(jogador.nome);
}

 

Postado

Pode fazer um for que imprime uma letra de cada vez e espera um certo tempo. Mas enquanto a frase não terminar o programa fica "travado".

 

#include <windows.h> //para a funcao Sleep()

void introducao ()
{
    char frase2[] = "Você é um almirante que tem a missão de derrubar as embarcações inimigas\ne dar vantagem para o seu país na guerra";
    int i;

    for(i = 0; frase2[i] != '\0'; i++) {
        putchar(frase2[i]);
        Sleep(20); //delay em milisegundos
    }
    
}

 

  • Membro VIP
Postado

Olá a todos.

 

21 minutos atrás, MassakiMsk disse:

Mas enquanto a frase não terminar o programa fica "travado".

 

É possível "escutar" as teclas do teclado, por exemplo, com o comando kbhit(), da biblioteca conio.h. Daí, ao identificar alguma tecla pressionada, mudaria o tempo.

 

  • Curtir 1
Postado

@Simon Viegas Ficaria assim mais ou menos?

 

#include <windows.h>
#include <conio.h>

void introducao ()
{
    char frase2[] = "Você é um almirante que tem a missão de derrubar as embarcações inimigas\ne dar vantagem para o seu país na guerra";
    int i, delay = 20;


    for(i = 0; frase2[i] != '\0'; i++) {
        putchar(frase2[i]);
        Sleep(delay);
        if(kbhit())
            delay = 0;
    }
    getchar();
}

int main()
{
    introducao();
}

 

  • Membro VIP
Postado

Isso.

 

Ou reduzir para outro número, como 5.

 

O seu texto sai com a acentuação correta? aqui é preciso reconfigurar... usei o setlocale(LC_ALL,""). Dessa forma, configura os caracteres de acordo com o seu SO. Ficaria algo assim:
 

#include <stdio.h>
#include <windows.h> //para a funcao Sleep()
#include <conio.h> //para função kbhit()
#include <locale.h> //para função setlocale()

void introducao ()
{
    char frase2[] = "Você é um almirante que tem a missão de derrubar as embarcações inimigas\ne dar vantagem para o seu país na guerra";
    int i, delay = 20;

    for(i = 0; frase2[i] != '\0'; i++) {
        putchar(frase2[i]);
        Sleep(delay);
        if(kbhit())
            delay = 5;
    }
    getchar();
}

int main() {
    setlocale(LC_ALL,""); //configuração acentuação de acordo com o SO
    introducao();
}

 

  • Curtir 1

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!