2

ncurses を使ってゲームを作ろうとしています。ただし、メインループのタイミング部分を機能させる方法に困惑しています。移植性を維持し、速度を犠牲にせずに、メインループにフレームレートコードを追加する方法について、誰かが洞察を追加できるでしょうか。前もって感謝します!

4

2 に答える 2

4

このタイプの問題を処理する通常の方法は、最後のループ以降の期間 (デルタと呼ばれることが多い) をシステムにパラメーターとして渡すことです。これにより、経過した現実世界の時間に基づいて、ゲーム内のエンティティの進行状況を更新できます。例えば:

new_position = old_position + delta*speed

これにより、ゲーム内のエンティティは、プログラムのフレーム レートに関係なく、一定の速度で移動できます。

于 2011-05-13T14:19:21.827 に答える
1

少し時間が経った後にゲームの状態を更新する機能があると仮定すると、次に、入力のためにユーザーをポーリングできる必要があります。特に指定しない場合、ncurses は入力を求めるときにブロックします。これを防ぐには、ここで初期化関数を調べてください。特に、halfdelay() 関数は役に立つかもしれません (ある種のフレームレートを実装しています)。

このモードを使用するときは、 getch() の戻り値で ERR をチェックすることを忘れないでください。

于 2011-05-13T14:45:30.897 に答える