Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static bool SpeechEnd;//Diese Variable wird benötigt um das Typing abzubrechen
- static bool Speaking;//Laufzeitüberprüfung
- const int TypeSpeed = 50; //Diese Variable bestimmt den Typespeed
- private static readonly char[] SlowChars = new char[] { '!', '?', ',', '.' }; //Char die hier gespeichert sind, werden mit leichter Verzögerung angezeigt.
- public static void AnimatedText(string Text, bool speech)//Der Methodenkopf
- {
- SpeechEnd = false; //Setzt das Ende des Textes auf false weil der Text ja erst beginnt
- ThreadPool.QueueUserWorkItem(delegate //Beginnt einen externen Thread im Hintergrund. Delegate sorgt dafür dass der in geschwungener Klammer angezeigte Code fehlerfrei durchgeführt wird.
- {
- if (Speaking)//Sollte der Text schon brabbeln verhindert dies, das ein 2ter Thread gestartet wird der erneut brabbelt.
- return;
- Speaking = true;//Laufzeitüberprüfung
- for (int i = 0; i < Text.Length ; i++)//Zählschleife welche Zeichen für Zeichen ausgibt
- {
- if (!SpeechEnd)//Sollte der Nutzer durch Drücken irgendwelcher Tasten den Text überspringen wollen bricht diese Abfrage aus der for aus.
- {
- if (SlowChars.Contains(Text[i]))//Überprüft ob irgendwelche Zeichen aus Slowchars geschrieben müssen. Falls ja lässt sich das System etwas mehr Zeit.
- {
- Console.Write(Text[i]);
- Thread.Sleep(TypeSpeed * 10);
- }
- else
- {
- Console.Write(Text[i]);
- Thread.Sleep(TypeSpeed);
- }
- }
- else break;//Der Ausbruch aus der Forschleife wenn der Nutzer zu faul zum Lesen ist.
- }
- Console.WriteLine();//Nach Abschluss des Schreibens wird ein Absatz eingefügt
- Speaking = false;//Setzt das Speaking auf false um das brabbeln eines neuen Textes zu ermöglichen
- });
- Console.ReadKey(true);//Wenn eine Teste gedrückt wurde bricht das brabbeln ab
- SpeechEnd = true;//Setzt SpeechEnd auf true um die ForSchleife am weiteren Tippen zu hindern
- Console.Clear();//Wenn der Nutzer abbrechen will löscht die Konsole den gesamten Text
- Console.WriteLine(Text);//und schreibt ihn neu
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement