幾個月前我剛開始學習編程,並決定做一個控制檯蛇遊戲。對於一件事情,一切都很有期待。c#控制檯蛇卡在長按鍵
如果我的蛇向上並按下箭頭並保持按下,我的蛇剛停止並停止停止一段時間後停止按下按鈕。
同樣的事情發生,如果我的蛇是正確的,我按右箭頭太長,我失去了一段時間的控制權(但蛇不停止)。它發生在每一個方面(左,右,上,下)。
我試圖將cki與另一個ConsoleKeyInfo進行比較,但它們之間有些微的延遲,但沒關係。如果我按住鍵,我的程序就會保持該位置並更新一個鍵。 (至少我認爲這是問題)
這是Console.ReadKey的「功能」,或者有什麼辦法讓這個?
請記住,我剛剛開始,所以我不知道高級的東西,但。
只要我不保持按鍵超過1秒,一切都完美無瑕。
public void LiikutaMato() //movesnake
{
if (Console.KeyAvailable)
{
ConsoleKeyInfo cki;
cki = Console.ReadKey(true); // <-- I believe this is where it gets stuck
}
輪詢率堆放在readkey輸入和你最終不得不等待它清除任何新的前堆被接受......只是猜測 – emd
按下並保持按下時,系統會(我認爲)開始向控制檯發送多個按鍵事件。如果由於這些原因而導致阻塞(例如,您的計算或控制檯重繪需要比發送每個按鍵之間的時間更長的時間)或使蛇停止(例如,因爲您沒有在關鍵點瞬間移動蛇按通常改變方向),這可能會導致你的問題。 –
只是一個建議......寫這樣的遊戲,作爲控制檯應用程序是有點矯枉過正和一點「解決方法」。您可能希望進一步提高您的通用編碼技能,因爲您將使用C#來學習XNA。 – Renan