ほとんどのシステムはオリジナルなのですが、
キーコンフィグに関しては恥ずかしくもつい楽な方を取って完全に8章の流用なので、
理解が及んでいなく、ここからどのようにキーコンフィグを作るか全く分かりません。
//key.cpp
#include "../include/GV.h"
unsigned int stateKey[256];
int GetHitKeyStateAll_2(){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) stateKey[i]++;
else stateKey[i]=0;
}
return 0;
}
int CheckStateKey(unsigned char Handle){
return stateKey[Handle];
}
//パッドの入力状態を格納する変数
pad_t pad;
//引数1と引数2のうち大きい方を引数1に代入する
void input_pad_or_key(int *p, int k){
*p = *p>k ? *p : k;
}
//パッドとキーボードの両方の入力をチェックする関数
void GetHitPadStateAll(){
int i,PadInput,mul=1;
PadInput = GetJoypadInputState( DX_INPUT_PAD1 );//パッドの入力状態を取得
//PadInputには0010100100010101のような16桁のビットが入っていて、それぞれの桁がそこのボタンが押してあるかどうかを判定する。
//ここでは、PadInput & mulのような表記で、ボタンが押しているかどうかで分岐をしている。(1~2^16=0000000000000000~1111111111111111)
for(i=0;i<16;i++){
if(PadInput & mul) pad.key[i]++;
else pad.key[i]=0;
mul*=2;
}
input_pad_or_key(&pad.key[configpad.left] ,CheckStateKey(KEY_INPUT_LEFT ));
input_pad_or_key(&pad.key[configpad.up] ,CheckStateKey(KEY_INPUT_UP ));
input_pad_or_key(&pad.key[configpad.right] ,CheckStateKey(KEY_INPUT_RIGHT ));
input_pad_or_key(&pad.key[configpad.down] ,CheckStateKey(KEY_INPUT_DOWN ));
input_pad_or_key(&pad.key[configpad.esc] ,CheckStateKey(KEY_INPUT_ESCAPE ));
input_pad_or_key(&pad.key[configpad.z] ,CheckStateKey(KEY_INPUT_Z ));
input_pad_or_key(&pad.key[configpad.x] ,CheckStateKey(KEY_INPUT_X ));
input_pad_or_key(&pad.key[configpad.space] ,CheckStateKey(KEY_INPUT_SPACE ));
input_pad_or_key(&pad.key[configpad.enter] ,CheckStateKey(KEY_INPUT_RETURN ));
}
//渡されたパッドキー番号の入力状態を返す。返り値が-1なら不正
int CheckStatePad(unsigned int Handle){
if(0<=Handle && Handle<PAD_MAX){
return pad.key[Handle];
}
else{
printfDx("CheckStatePadに渡した値が不正です\n");
return -1;
}
}
//どこか一つでもキーが押されているか?押されていたら1、押されていなかったら0を返す。
int allkeycheck(){
int i,on_flag=0;
for(i=0;i<255;i++){if(stateKey[i]>0){on_flag=1;return 1;}}
return 0;}
//ini.cpp
//一番最初の初期化
void first_ini(){
ch.x=FIELD_MAX_X/4;
ch.y=FIELD_MAX_Y/4;
ch.hp=100;
configpad.down=0;
configpad.left=1;
configpad.right=2;
configpad.up=3;
configpad.esc=13;
configpad.z=5;
configpad.x=6;
configpad.space=7;
configpad.enter=8;
}
//struct.h
typedef struct{
int key[PAD_MAX];
}pad_t;
//コンフィグに関する構造体
typedef struct{
int left,up,right,down,esc,z,x,space,enter;
}configpad_t;
//GV.h
//構造体変数宣言部
GLOBAL configpad_t configpad;//コンフィグで設定したキー情報
GLOBAL ch_t ch; //キャラクタデータ宣言
どのキーを押されているか、プレイヤーに押させて入力させるのは分かるのですが、
それを何に覚えさせればいいのか・・・?
プレイヤーがジョイパッドの時は、おそらくfirst_iniのconfigpad.~の数を変えるようにすればいいんでしょうか?
キーボードの場合は・・・?
かなり初歩的ですみませんが、ぜひご教授いただけると嬉しいです。