キーチェッククラス

zxc
記事: 79
登録日時: 13年前
住所: 日本の背骨(?)あたり

キーチェッククラス

投稿記事 by zxc » 13年前

  大体こんな感じです。keyreturn関数とkeycheck関数は
まとめられそうな気がしますが、今のところ個人的にはこれでも十分。
1,0,-1のどれかを返す。それを受けとって何かするのは他に任せます。

keycheck関数をコンストラクタとよく勘違いする・・・
似た名前は避けるべきだろうけど思いつかなかった。
使うときはCheck_Z.~で使うので多少は分かりやすいかもしれない。
至る所で使い始めているから、変更は大変だなぁ;

 余計なコメントと一緒に色々消していませんように、と願うばかり。
このくらいのプログラムだと著作権はないでしょうが、
コピー等責任取れないので止めてください。

CODE:

////////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_????))」と使う。
};

CODE:

////////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を変えて脱出する方法で行く予定。

アバター
バグ
記事: 130
登録日時: 14年前

Re: キーチェッククラス

投稿記事 by バグ » 13年前

私も以前同じようなクラスを作りました。
あのときは確かシングルトンクラスにしたんだったかな?

で、パーツを作って満足して、ゲーム自体は未完成で棚上げ状態なのは言うまでもありませんがw

zxc
記事: 79
登録日時: 13年前
住所: 日本の背骨(?)あたり

RE: キーチェッククラス

投稿記事 by zxc » 13年前

>>バグさん

 自分はこのクラスを作る際に、シングルトンパターンから思いついたので、
似ている箇所も多々ありますね。

 ゲーム作成の棚上げだけはなんとか回避したいです;