C++ afficher lettre après lettre [Résolu]

Dark_another 367 Messages postés mardi 28 juin 2016Date d'inscription 18 mars 2018 Dernière intervention - 15 févr. 2017 à 21:59 - Dernière réponse : Dark_another 367 Messages postés mardi 28 juin 2016Date d'inscription 18 mars 2018 Dernière intervention
- 16 févr. 2017 à 12:00
Bonjour, bonsoir,

Ma question est assez compliqué à expliquer, donc je vais essayer d'être le plus clair possible :
J'ai commencé il y a peut sur un projet en console puis je me suis "pourquoi ne pas faire une sorte d'animation en mode cmd de windows 10 ?" soit afficher lettres après lettres les phrases assez rapidement mais je ne sais pas comment faire. D'où ma question. J'ai évidement cherché sur le Net mais il n'a pas vraiment quelque chose de convainquant. Merci d'avance pour l'aide

cordialement,
Afficher la suite 

2 réponses

Répondre au sujet
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention - Modifié par cptpingu le 16/02/2017 à 16:49
0
Utile
Bonjour.

Je ne vois pas trop l'utilité d'une telle fonctionnalité, mais c'est aisément faisable.
Tu affiches un seul caractère, et tu fais une petite pause (généralement un sleep), puis tu passes au suivant et tu recommences.

Ca donnera ceci (à peu près):
#include <iostream>

void my_sleep(int ms)
{
  // Le code va dépendre de la plateforme, voir explication ci-dessous
}

void display(const std::string& text)
{
  for (int i = 0; i < text.size(); ++i)
  {
    std::cout << text[i] << std::flush;
    my_sleep(100); // 100 ms entre chaque caractère, tu adaptes ce nombre selon tes goûts
  }
}

int main()
{
  display("Ma phrase !\n");
  display("Une autre phrase !\n");

  return 0;
}


Pour le code du sleep, ça va dépendre de la plateforme...

Si tu utilises du C++11 (*très* vivement recommandé), alors c'est portable pour Windows, Linux, Mac:
#include <chrono>
#include <thread>

void my_sleep(int ms)
{
  std::this_thread::sleep_for(std::chrono::milliseconds(ms));
}


Si utilises du vieux C++03 sous Linux:
#include <unistd.h>

void my_sleep(int ms)
{
  usleep(ms * 1000);
}


Si utilises du vieux C++03 sous Windows:
#include <windows.h>

void my_sleep(int ms)
{
  Sleep(ms);
}


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
Dark_another 367 Messages postés mardi 28 juin 2016Date d'inscription 18 mars 2018 Dernière intervention - 16 févr. 2017 à 12:00
0
Utile
Merci de votre réponse rapide. L'utilité était juste de rendre le programme plus "animé" et aussi de me faire apprendre ces fonctionnalités.
Commenter la réponse de Dark_another

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.