とても基礎すぎることですが....

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Ytemu

とても基礎すぎることですが....

#1

投稿記事 by Ytemu » 7年前

C++、もとりDXライブラリでif文を使い

もしも、Sキーが押されたらHelloと表示する、
そのあと、次の処理に進む

というプログラムを作りたいのですがSキーが押されたらHelloと表示は

コード:

if (CheckHitKey(KEY_INPUT_S) == 1) 
				DrawString(0, 40, "Hello", CR);
これにしましたが、これだとSが押されている間だけというのはわかります
根本的なところですがどうすれば一回押されたらそのあとも表示し続け、もう一度押されたら消すという
トグル式?のようにできますでしょうか?

または、そのようなものが乗っているサイトのURLでもかまいません
お願いします

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: とても基礎すぎることですが....

#2

投稿記事 by みけCAT » 7年前

Ytemu さんが書きました:どうすれば一回押されたらそのあとも表示し続け、もう一度押されたら消すという
トグル式?のようにできますでしょうか?
表示するかどうかをフラグ(変数)で管理すればいいでしょう。

例えば、以下の擬似コードのようにするといいでしょう。

コード:

表示する = false
前のフレームにSキーが押されていた = false

メインループ {
    if (Sキーが押されている) {
        if (not 前のフレームにSキーが押されていた) {
            表示する = not 表示する
        }
        前のフレームにSキーが押されていた = true
    } else {
        前のフレームにSキーが押されていた = false
    }

    if (表示する) {
        Helloと表示する()
    }
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: とても基礎すぎることですが....

#3

投稿記事 by Dixq (管理人) » 7年前

それを実現するには、DXライブラリの標準関数内だけでは無理で、ゲームプログラミングの館で紹介しているように、
キーの入力フレーム数を計算するモジュールが必要です。
館の方で計算しているので参考にしてください。
http://dixq.net/g/02_09.html

bool isShowing = false;
とでも宣言しておいて
if(Key[KEY_INPUT_Z]==1){
  isShowing = !isShowing;
}
とし、これをフラグに描画すればよいでしょう。

閉鎖

“C言語何でも質問掲示板” へ戻る