問題タブ [kbhit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
483 参照

c++ - c ++ tron Playerのライトサイクルは一方向に移動します

プレーヤーがボタンを押して別の方向に移動するまで、プレーヤーのライトサイクルを停止せずに一方向に移動させようとしています。kbhit でこれを行う方法がわからないので、アドバイスをお願いします。ありがとう。

0 投票する
2 に答える
824 参照

c - C 遅延無限ループでの kbhit() の異常な動作

私は kbhit() でいくつかのことをテストしており、遅延無限ループで奇妙な動作を発見しました。このコード サンプルでは、​​毎秒 30 回実行するようにループを遅らせています。

問題は、ループ内の最初の if ステートメントは正常に機能しますが、2 番目の if ステートメントはほとんど機能しないことです。この例で「a」キーを押したままにすると、HELLO が無期限に出力されます。「b」キーを押したままにすると、HI が表示されることはほとんどありません。

この動作が発生するのはなぜですか?

0 投票する
1 に答える
55 参照

c - 入力を最大 X 時間待ってから、プログラムを続行しますか?

こんにちは、Cでゲームを作っています。

0.1秒ごとに印刷されるフレームが必要です。その間、ユーザーは getch() を使用して入力する場合としない場合があります。

そのようなプログラムを書くにはどうすればよいですか? これが私が皆さんに提供できるものです。

コードをきれいで明確に保つことを本当に願っています

0 投票する
1 に答える
7588 参照

c - while ループでの kbhit() の使用

これがプログラムです。

kbhit()キーが押されるまでループを実行していたCでプログラムを作成しています。"<--->"ここでは、キーが押されるか、画面の最後のピクセルに到達するまで、矢印が前方に移動し続けます。

私が望むのは、プログラム'd'が押されるたびに h を 1 ずつ増やし、押されるたびに1 ずつ減らさなければならないということです'a'。つまり h++;h--; 文字が押されるまで別のループを実行します。アイデアは、キーが押されるまでヘビが特定の方向に動き続けるスネーク ゲームに似ています。助けてください!

0 投票する
1 に答える
182 参照

c - 端末ゲームでリアルタイムのフィードバックを表示できますか?

C で単純な端末ベースのダンジョン スタイルのゲームを作成しようとしていますが、ユーザーが影響を与えるさまざまなプロセスについてリアルタイムのフィードバックをユーザーに提供したいと考えています。

何年も前に kbhit() を使用したことを覚えていますが、プログラムの実行中に CPU が 100% になったことも覚えています。これは絶対に避けたいです。そして、私は今Linuxで働いています。

テキストベースのアドベンチャー ゲームのダンジョンにいるとしましょう。ダンジョンは封印されています。部屋の空気はこれだけです。そこに長くいるほど、酸素が少なくなります。部屋の酸素レベルをリアルタイムで報告しながら、同時にユーザーからのコマンドを受け入れたいです。

これを行う方法はありますか?

編集:私が持っていた1つのアイデアは、2つのターミナルウィンドウを使用することでした。コマンドは 1 つの端末で取得され、それらのコマンドの結果はテキスト ファイルに書き込まれます。もう一方の端末には、リアルタイムのものを実行するプログラムが実行されており、レートなどの更新について同じテキスト ファイルを定期的にチェックします。理想的には、これを 1 つのウィンドウで実行したいと考えています。

0 投票する
2 に答える
2909 参照

c++ - gotoXY と kbhit を使用して C++ でカーソルを移動する

c++で以下のコードでターミナル内のシンボル「A」の位置を移動したいのですが、ターミナルが閉じてしまい、forループに入らないようです。どこが間違っているのかわかりません。あなたが私を助けてくれれば、私は感謝します:

'w' で上に移動 's' で下に移動 'a' と 'd' で左右に移動

0 投票する
3 に答える
729 参照

c++ - C++ でタイム カウンターを実行し、ユーザー入力を同時に許可するループを作成する方法 (非ブロック ユーザー入力)

だから、私がやろうとしているのは、ユーザーが設定された時間(たとえば、10分(または1分))の間、文字列に何でもすべてを入力できるようにする関数をC ++で作成することです(そして、それらのすべてのものを保持しますところで、私は NaNoWriMo の参加者や一般的な作者が書くようにプッシュするのを助けるゲームを設計しようとしているので、すべてを維持することが不可欠です)そして、それ以上入力を追加することを許可しません. これは最初は簡単に思えましたが、5 時間の Google 検索でそうではないことが証明されました。

まず、時間がなくなるまで繰り返し追加できると考えました。観察:

しかし、ユーザーがEnterキーを押すまで、ループは条件を再度チェックしないことに気付きました。面倒。私の賢いキャラクターのアイデアと同じです。ユーザーが別の文字を入力するのにどれだけ時間がかかっても、入力されたすべての文字 (または過去 1 秒ごと) で更新されるループが必要でした。

それで、「まあ、すべてのスペースで停止して時間を更新するだけで十分に機能するはずですよね?」

これは、C++ が文字列の解析や、取得した入力の読み取りにうまく対応していないことに気付き始めたときです。スペースを見つけるのはかなり簡単なので、各文字を追加することを考えましたが、それでもユーザーを待ちます。

欲求不満で、ユーザー入力を取得しながらプログラムを同時に実行して、時間がなくなるようにする方法があるかどうか疑問に思いました(time(null)、時間経過、 time(null)を使用し、2つの変数を減算して経過秒数を取得します) .

結局のところ、あります!(この原理を使用するすべてのコンピューター プログラムとゲームを考えると、あるに違いないことはわかってましたが、私はプログラミングにかなり慣れていません (先週の水曜日に関数を学びました)。 .)

私が最初に遭遇した関数は curses と ncurses でしたが、それは私がやりたいことの実行可能なオプションではないことがすぐにわかりました (それはかなり面白いことをするので)。

次に、キーボードでキーが押されたときに認識する kbhit に出くわしました。このブログは有望なようで、おそらく私がやりたいことですが、どの言語で書かれているのかわかりません。. . 私が知っているのは、私の C++ IDE ではうまく動作しないということだけです。C ++でうまく機能させる方法がわかりません。

だから、私が望むことの繰り返し:

タイム カウンターと (文字列への) ユーザー入力の同時実行を含むが、時間がなくなると終了する (文字列へのユーザー入力を停止する) ループ。(ncurses のように、プログラムの残りの部分におかしなことをする必要はありません。)

さらに: 私は Windows 8 (私の存在の悩みの種) を実行しており、Code::Blocks を IDE として使用しています。

または、あなたがそれを持っているなら、どこかでこの質問はすでに答えられています. それは実際には素晴らしいことです。見つけられなかったのはばかげていると思うだけです。

(途中で見た場所をいくつか。

プログラム実行中のユーザー入力

スペースまたはタブが押されるまで、標準入力から入力を読み取るにはどうすればよいですか?

Enter キーが押されるのを待たずに、標準入力から文字をキャプチャします) 。

(私が作成しようとしているゲーム (まだそれほど遠くありません。昨夜から始めました)、興味がある方のために: https://github.com/Rowan-Law/Dungeon-Crawl/blob /master/Source%20Code )

0 投票する
5 に答える
53484 参照

c++ - Linux で kbhit() と getch() を使用する

Windows では、ループを中断せずに入力を探す次のコードがあります。

ただし、conio.hLinux でこれとまったく同じことを実現する最も簡単な方法は何ですか?