まとめられそうな気がしますが、今のところ個人的にはこれでも十分。
1,0,-1のどれかを返す。それを受けとって何かするのは他に任せます。
keycheck関数をコンストラクタとよく勘違いする・・・
似た名前は避けるべきだろうけど思いつかなかった。
使うときはCheck_Z.~で使うので多少は分かりやすいかもしれない。
至る所で使い始めているから、変更は大変だなぁ;
余計なコメントと一緒に色々消していませんように、と願うばかり。
このくらいのプログラムだと著作権はないでしょうが、
コピー等責任取れないので止めてください。
////////keycheckget.h///////
#ifndef DXLIB_H
#define DXLIB_H
#include"DxLib.h"
#endif
//キーの押し下げ状態を判定するクラス
//一応実装の大部分完了
//押されるキーごとにインスタンスを作る。
//ただしキーバッファとその更新、更新状態の取得は
//staticによって全インスタンス共通。
//
class C_keycheck{
private:
static char keybuffer[256];//キーバッファ。GetHitKeyStateAll()を使用するのに必須。
public:
static void keyrenew();//キーの押し下げ状態の更新。ループに入れる必要あり。
static int keyreturn(int x);//押し下げ状態提示。引数には「DxLib」のキー指定マクロを入れる。
int keycheck(char key);//押し下げ状態「押し下げ=1」「押していない=0」「不具合=-1」を返す。
//keycheckは「C_keycheck::keycheck(keyreturn(KEY_INPUT_????))」と使う。
};
////////keycheckget.cpp///////
#ifndef KEYCHECKGET_H
#define KEYCHECKGET_H
#include"keycheckget.h"
#endif
//引数には 「C_keycheck::keyreturn(KEY_INPUT_????)」 を入れる。
//keyreturn関数は静的関数なので「.」ではなく「::」で名前空間指定。
int C_keycheck::keycheck(char key){
if( key == 1 ){
return 1;
}else{
if( key == 0 ){
return 0;
}else{
return -1;
}
}
}
//キーバッファ。GetHitKeyStateAll()を使用するのに必須。静的な配列変数
char C_keycheck::keybuffer[256];
//キーの押し下げ状態の更新。ループに入れる。静的関数。
void C_keycheck::keyrenew(){
GetHitKeyStateAll( C_keycheck::keybuffer );
}
//引数には「DxLib」で指定されているキー指定マクロを入れる。
int C_keycheck::keyreturn(int x){
if( (x>=0)&&(x<=256) ){
return keybuffer[x];
}else{return -1;}
}
ゲームの世界観が固まっているわけでもないから、後で素材変更が容易なものにしたい。
オーバーロード活躍しそう。
デストラクタはなぁ・・・無くてもリークしないらしいので何とかパターン覚えるまでは
別にかまわないですかね。。。newもdeleteも怖くて一度もやってない;
無限ループの脱出は、while(x)のxを変えて脱出する方法で行く予定。