簡體   English   中英

運行代碼時,控制台正在讀取用戶輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM