こんにちは。プログラミングの勉強をしながら龍神録プログラミングの館を見ている初心者です。
第一章のプログラムのキーの入力を管理するところが
int Key[256];
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
else GetHitKeyStateAll_InputKey=0;
}
return 0;
}
となっています。
ですが、ゲームプログラミングの館の2.9章ではキーの入力管理の部分は
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int gpUpdateKey(){
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
for( int i=0; i<256; i++ ){
if( tmpKey != 0 ){ // i番のキーコードに対応するキーが押されていたら
Key++; // 加算
} else { // 押されていなければ
Key = 0; // 0にする
}
}
return 0;
}
と紹介されています。この二つの記述の間にどんな違いがあるのかを教えていただけないでしょうか。
龍神録の「まずは実行させてみよう」のキー入力管理部分について
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録の「まずは実行させてみよう」のキー入力管理部分について
見づらいのでcodeタグを使ってくださいね。
詳しくはフォーラムルールを。
http://dixq.net/board/board.html
1つ目と2つ目の違いですが、1つ目が引数のetHitKeyStateAll_InputKeyに対してカウントしているのに対して、2つ目が外部変数Keyに対してカウントしている程度の違いでしょう。全体の設計ルールの違いといった話ですね。
詳しくはフォーラムルールを。
http://dixq.net/board/board.html
1つ目と2つ目の違いですが、1つ目が引数のetHitKeyStateAll_InputKeyに対してカウントしているのに対して、2つ目が外部変数Keyに対してカウントしている程度の違いでしょう。全体の設計ルールの違いといった話ですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
dast
Re: 龍神録の「まずは実行させてみよう」のキー入力管理部分について
codeの件はすみません。次から気をつけます。
つまりこの二つの違いはキーの入力情報をどの箱に入れるかという認識でいいのですか?
そしてこの二つは入力に関するプログラムを書く時のルールが違うというだけでどっちを使ったからできないことが出てくるということはないのですね?
つまりこの二つの違いはキーの入力情報をどの箱に入れるかという認識でいいのですか?
そしてこの二つは入力に関するプログラムを書く時のルールが違うというだけでどっちを使ったからできないことが出てくるということはないのですね?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 龍神録の「まずは実行させてみよう」のキー入力管理部分について
どっちも簡単に書き換えて作れますから悩むようなところでは無いと言ったほうが良いでしょう。dast さんが書きました:そしてこの二つは入力に関するプログラムを書く時のルールが違うというだけでどっちを使ったからできないことが出てくるということはないのですね?
ゲームを作っている最中に生じるコード書き換えや関数化の作業のほうがよっぽど大変で手間のかかる作業です。
ただ、このGetHitKeyStateAll_2とgpUpdateKeyはすごく簡単な仕組みの関数ですので見なくても書けるぐらい理解しておくべき関数だと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 龍神録の「まずは実行させてみよう」のキー入力管理部分について
ゲームプログラミングの館のようなサンプルはあくまでサンプルとしてご覧ください。
例えば対戦ゲームなんかだと、唯一の変数に対してだけ処理が出来る関数などは作るべきではありません。
グローバル変数を使って関数を実装すると一つのinputにしか処理が出来なくなります。
GetHitKeyStateAll_2のように引数に依存した処理をさせるのが良いでしょう。
また、〇〇2といった、関数名を見てさっぱり意味が把握できないような関数名は嫌悪されるので避けた方が良いです(ぇ
※解決したら解決ボタンを押してください。今回は私が押しておきます。
例えば対戦ゲームなんかだと、唯一の変数に対してだけ処理が出来る関数などは作るべきではありません。
グローバル変数を使って関数を実装すると一つのinputにしか処理が出来なくなります。
GetHitKeyStateAll_2のように引数に依存した処理をさせるのが良いでしょう。
また、〇〇2といった、関数名を見てさっぱり意味が把握できないような関数名は嫌悪されるので避けた方が良いです(ぇ
※解決したら解決ボタンを押してください。今回は私が押しておきます。