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

Signaler
Messages postés
366
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
18 mars 2018
-
Messages postés
366
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
18 mars 2018
-
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,

2 réponses

Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
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
Messages postés
366
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
18 mars 2018

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.