GetHitKeyStateAllに構造体の配列を渡す。

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

GetHitKeyStateAllに構造体の配列を渡す。

#1

投稿記事 by » 15年前

GetHitKeyStateAllに構造体で作った配列を渡したいのですが上手くいきません。
// キー用
typedef struct{
    char Key;
    char pulKey;
    char trgKey;
}KEY;

KEY Key[256];

GetHitKeyStateAll(&Key.Key);
上記だとエラーが出ます。
下記だとエラーは出ないのですがうまくいってないみたいです。

構造体を渡すことはできないのでしょうか。
GetHitKeyStateAll(Key[0].Key);

circle

Re:GetHitKeyStateAllに構造体の配列を渡す。

#2

投稿記事 by circle » 15年前

GetHitKeyStateAll関数の引数には、char型のポインタしか渡せません。

もしその構造体の配列を渡すなら、自作でKEY構造体の配列を受け取れるGetHitKeyStateAll関数を、
つくるしかないでしょう。

ここの管理人Dixq様の作った GetHitKeyStateAll_2関数 を参考にされてはいかがでしょうか?

「キーがどれ位押されたか」を判定する関数
    ↓
http://dixq.net/g/41.html

Re:GetHitKeyStateAllに構造体の配列を渡す。

#3

投稿記事 by » 15年前

ご回答ありがとう御座います。
そうなんですか・・・。
上記の関数でも作りましたが自分用に変換しております。

キーが押された瞬間だけをとるtrgに値を入れたいのですが
下記がソースではずっと1が入ってしまいます。
なぜなのでしょうか・・・。
typedef struct{
         bool Flg;
    char Key;
    char pulKey;
    char trgKey;
}KEY;

Key Key[256];
char key[256];

//  キーの情報の取得
void SetKey(void){
    
    static char key[256];
    
    //  キー入力の取得
    GetHitKeyStateAll(key);
    
    for(int i=0; i<256; i++){
        
        Key.Key = key;
    
        if(Key.Key){
            if(Key.Flg == false) Key.trgKey = !Key.trgKey;
            Key.Flg = true;
        }else{
            Key.trgKey = 0;
            Key.Flg = false;
        }
    }

}

circle

Re:GetHitKeyStateAllに構造体の配列を渡す。

#4

投稿記事 by circle » 15年前

とりあえず
押したフレームだけ反応する様にいじってみた。
void SetKey(void){
    
    static char key[256];
    
    //  キー入力の取得
    GetHitKeyStateAll(key);
    
    for(int i=0; i<256; i++){
        
        Key.Key = key;
    
        if(Key.Key){
            if(Key.Flg == false){
                Key.trgKey = true;
                Key.Flg = true;
            } else {
                Key.trgKey = false;
            }
            
        }else{
            Key.trgKey = 0;
            Key.Flg = false;
        }
    }

}


なんかスマートじゃないけど・・・

Re:GetHitKeyStateAllに構造体の配列を渡す。

#5

投稿記事 by » 15年前

できました。
深夜でしたのに回答ありがとうございます。
本当に助かりました。

閉鎖

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