2012-02-09 43 views
0

你好我是C程序設計新手,但我正在製作一款遊戲菜單。我在顯示的ascii藝術品中有一條魚,每0.5秒就會移動一個字符。我通過一個簡單的循環來完成這個任務,並且它會繼續穿過屏幕,然後當它到達最後時,魚被清除,然後再次重複。現在,當這個動畫正在進行時,我想提示用戶輸入,但是當我用getchar或scanf做到這一點時,例如魚循環等待,直到我按下某個東西,動畫停止,直到我按下一個鍵。請讓某人請解答我的問題?如何在循環中獲取角色而不停在循環中?

謝謝你

回答

1

你不能用任何標準輸入方法做到這一點。你將不得不使用類似ncurses的東西,或者將終端設置爲原始模式並進行一些漂亮的操作。我不知道你在使用什麼平臺,但在Linux下原始模式很困難,而在Windows下更難,所以如果可以的話,我會堅持使用一個庫。

+3

@JohnRiselvato,這是不禮貌的。 – Beta 2012-02-09 03:29:42

+0

嘿克里斯,你能詳細談談爲什麼你會用這個而不是線程嗎? – 2012-02-09 03:42:16

+1

@JohnRiselvato:最大的問題是終端不是多線程可以輕鬆共享的。即使線程使它*可能*用戶開始輸入的瞬間就會變得亂七八糟和奇怪。在最低限度你需要做一些事情,如關閉回聲。是的,線程確實可以讓工作更輕鬆。但是,如果你這樣做,他們不是必需的,坦率地說,任務線程似乎有點重量級。 – 2012-02-09 03:59:44

0

歡迎來到Threads的世界。

要理解線程,請考慮計算機的工作原理。如果您的計算機沒有線程運行,您將無法同時運行多個應用程序。線程允許程序或接口的多個部分同時運行而不依賴於彼此。

在你的情況下,你需要一個輸入線程和一個單獨的動畫線程。因此允許兩者分開運行。

+0

雖然請注意,多線程是一個高級的話題,初學者可以更好地避免,直到他們熟悉編程語言和操作系統爲止。 – Lundin 2012-02-09 08:38:39