C++ afficher lettre après lettre

Résolu
Dark_another Messages postés 366 Date d'inscription mardi 28 juin 2016 Statut Membre Dernière intervention 18 mars 2018 - 15 févr. 2017 à 21:59
Dark_another Messages postés 366 Date d'inscription mardi 28 juin 2016 Statut Membre Dernière intervention 18 mars 2018 - 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,

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 16/02/2017 à 16:49
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
0
Dark_another Messages postés 366 Date d'inscription mardi 28 juin 2016 Statut Membre Dernière intervention 18 mars 2018
16 févr. 2017 à 12:00
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.
0
Rejoignez-nous