2012-02-09 3 views
0

こんにちは私はCプログラミングを初めて使っていますが、私はゲームのメニューを作っています。私はアスキー美術の魚を展示しており、それは0.5秒ごとに1キャラクター移動します。私はこれを単純なループで達成し、それは画面を横切って進み、最後に到達すると魚はクリアされ、再び繰り返されます。このアニメーションが進行している間、私はユーザーに入力を促したいと思いますが、getcharやscanfを使用すると、たとえば魚のループが何かを押すまで待機し、キーを押すまでアニメーションが停止します。誰かが私の問題についていくつかの光を当ててくれるだろうか?ループ内で停止せずにループ内で文字を取得する方法は?

お礼

答えて

1

あなたは、標準入力のいずれかの方法でこれを行うことはできません。あなたはncursesのようなものを使うか、ターミナルをrawモードにしてかわいい操作をする必要があります。私はあなたのプラットフォームが何であるか分かりませんが、Linuxではrawモードが難しく、Windowsでは難しくなっていますので、可能であればライブラリを持っていきます。

+3

@JohnRiselvato、それは丁寧ではありません。 – Beta

+0

ちょっとクリス、スレッドの代わりにこれを使う理由についてもっと詳しく説明できますか? –

+1

@ JohnRiselvato:大きな問題は、端末が複数のスレッドが簡単に共有できるものではないということです。スレッドでは、ユーザーが入力を開始した直後にすべての文字化けや奇妙なことが起こる可能性があります。最低限、エコーを止めるようなことをする必要があります。そして、はい、スレッドは本当に仕事を楽にするでしょう。しかし、あなたはこのようにしなければならないが、率直に言えば、タスクスレッドが少し重いように見える。説明のためには –

0

Threadsへようこそ。

スレッドを理解するには、コンピュータの仕組みを考えてください。コンピュータがスレッドなしで実行された場合、複数のアプリケーションを同時に実行することはできません。スレッドは、プログラムやインタフェースの複数の部分が互いに依存することなく同時に実行できるようにします。

あなたの場合、入力用のスレッドとアニメーション用の別のスレッドが必要になります。したがって、両方を別々に実行することができます。

+0

マルチスレッドは、初心者がプログラミング言語やOSをよく知るまでは、より高度なトピックであることに注意してください。 – Lundin

関連する問題