[英]Creating a method that will procedurally write out console text like a mini game & dynamically changing still-text
我正在为我的实习项目创建一个演示文稿,并且我想比在控制台应用程序中做一个更酷,更合适的方法。
我需要2条代码片段的帮助
该代码段以程序方式写出文本,虽然效果很好,但运行效果欠佳(占用资源)
static void SleeperText(string text, int interval) { char[] SlowPrint = text.ToCharArray(); foreach (char letter in SlowPrint) { Write(letter); Thread.Sleep(interval); }
该片段旨在作为盐的图形表示(出于演示目的),但会闪烁整个控制台。
static char RandomAsciLetter() { char charsi = (ascii[r.Next(tempstring.Length)]); return charsi; } static string RandomAsciCombo() { string stringsi = String.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}", RandomAsciLetter(), RandomAsciLetter(), RandomAsciLetter(), RandomAsciLetter(), RandomAsciLetter(), RandomAsciLetter(), RandomAsciLetter(), RandomAsciLetter(), RandomAsciLetter(), RandomAsciLetter()); return stringsi; } void Main() { do { while (!KeyAvailable) { Thread.Sleep(10); Clear(); Write("[ Esc ] to exit."); Write("\\r\\n\\r\\n\\r\\n\\r\\n"); WriteLine(String.Format("Salt:\\t{0}{1}", RandomAsciCombo(), RandomAsciCombo())); } } while (Console.ReadKey(true).Key != ConsoleKey.Escape); ReadLine(); }
运行第一个代码段的更好方法是什么,如何消除第二个代码的闪烁?
要消除闪烁,请不要清除屏幕,而要设置光标位置并在此处写入。
要删除烦人的光标位置更改,只需将其隐藏即可。
using System;
namespace ConsoleApp1
{
internal static class Program
{
private static readonly Random Random = new Random();
private static void Main(string[] args)
{
Console.CursorVisible = false;
while (true)
{
if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)
break;
Console.SetCursorPosition(10, 10);
Console.Write(GetString());
}
}
private static char GetChar()
{
return (char) Random.Next(65, 92);
}
private static string GetString()
{
return $"{GetChar()}{GetChar()}{GetChar()}{GetChar()}{GetChar()}";
}
}
}
这只是一个骨架,您可能需要一些额外的帮手...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.