[英]Console is reading user input while code is running
我正在用Windows控制台中運行的C#編寫基於回合的2D冒險游戲。 這是我的游戲循環的大致概念:
while(condition) {
MethodCall1();
MethodCall2();
MethodCall3();
GetPlayerInput(Console.ReadKey());
}
游戲在while循環中運行,循環的結尾是Console.ReadKey()。 游戲的想法是打印出所有相關信息,運行敵人的AI和其他計算,然后等待用戶輸入再重新進行。 但是,我遇到了一個問題。 運行所有代碼需要花費大量時間(將地圖打印到控制台是主要的罪魁禍首,彩色打印大約需要150毫秒),並且在此期間控制台仍在讀取用戶輸入,即使似乎應該等待讀取輸入,直到完成所有代碼和打印為止。 如果按住任何鍵,即使我釋放了該鍵,它也會在代碼中循環檢測到盡可能多的按鍵。
因此,我想有兩個問題:即使控制台仍在執行代碼,控制台為何仍要讀取輸入,以及阻止這種情況發生的好方法是什么?
while (true)
{
YourMethods();
while (Console.KeyAvailable)
{
Console.ReadKey(true);
}
var key = Console.ReadKey();
Console.WriteLine(key);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.