【问题标题】:Can I update C# console output in realtime without constantly writing to it?我可以实时更新 C# 控制台输出而不不断写入它吗?
【发布时间】:2021-10-03 14:32:26
【问题描述】:

我正在创建一个简单的格斗游戏控制台应用程序,我的Player 对象上有一个health 属性,该属性在Fight 方法中更新。

我想知道是否可以在控制台中实时显示 health 变量,而无需调用多次更新控制台的方法。

这是我开始战斗并显示每个玩家的健康输出的主要方法。

 public static void StartFight(Player p1, Player p2) {
   Console.Clear();
   Title(" BATTLE ");
   Console.WriteLine($"{p1.name} Health: {p1.health} ");
   Console.WriteLine($"{p2.name} Health: {p2.health} ");

   // Loop giving each player a chance to attack
   // and block each turn until 1 dies
   while (true) {
     if (Fight(p1, p2)) {
       Title(" GAME OVER! ");
       PlayAgain();
       break;
     }

     if (Fight(p2, p1)) {
       Title(" GAME OVER! ");
       PlayAgain();
       break;
     }
   }
 }

是否可以实时写入控制台,这样我就不必继续写Console.WriteLine($"{p1.name} Health: {p1.health} ");

【问题讨论】:

  • 显示,是指在控制台中显示吗?
  • 不看你的代码很难回答。我的建议是在调用方法之前声明变量并将该变量作为参数发送给方法。这样您就可以在控制台上更新和显示该变量。
  • @ErmiyaEskandary 是的,就像 Console.WriteLine($"Health: {player.health}");并自动更新
  • @virouz98 我已经更新了帖子以更准确。

标签: c# console


【解决方案1】:

否 - 如果您正在向控制台显示,则无法在不多次调用方法来更新控制台的情况下实时更新 UI。

其他 UI 可以使用事件、绑定等方法来做到这一点。

【讨论】:

  • 哦,好吧,所以只有当我们拥有诸如 Windows 窗体、WPF、Web 之类的 UI 时才能进行实时更新……因为它们具有事件/绑定?
  • 是的,正确,因为没有任何类型的渲染循环供您挂钩或修改,也没有任何事件、绑定...
  • 知道了!非常感谢您的快速而清晰的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 2013-04-28
  • 2020-09-15
  • 1970-01-01
  • 2013-07-22
相关资源
最近更新 更多