プログラミングに問題があるのでしょうか。教えてください。
struct/h
ypedef struct{
int flag;
int cnt;
int power;
int point;
int score;
int num;
int mutekicnt;
int shot_mode;
int money;
int img;
int slow;
double x, y;
}ch_t;
typedef struct{
int key[PAD_MAX];
}pad_t;
typedef struct{
int down, up, left, right, shot, bom, slow, start, change;
}configpad_t;
#include "../include/GV.h"
void calc_ch(){
ch.cnt++;
ch.img = (ch.cnt % 24) / 6;
if(CheckStatePad(configpad.left) > 0)
ch.x-=3;
if(CheckStatePad(configpad.right) > 0)
ch.x+=3;
}
#include "../include/GV.h"
void first_ini(){
ch.x = FIELD_MAX_X / 2;
ch.y = FIELD_MAX_Y * 3 / 4;
configpad.down = 0;
configpad.left = 1;
configpad.right = 2;
configpad.up = 3;
configpad.bom = 4;
configpad.shot = 5;
configpad.slow = 11;
configpad.start = 13;
configpad.change = 6;
}
#include "../../../include/DxLib.h"
#include "define.h"
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
#include "function.h"
GLOBAL int img_ch[2][12];
GLOBAL ch_t ch;
GLOBAL int func_state;
GLOBAL int img_board[40];
GLOBAL configpad_t configpad;
GLOBAL void graph_main();
GLOBAL int GetHitKeyStateAll_2();
GLOBAL int CheckStateKey(unsigned char Handle);
GLOBAL void load();
GLOBAL void first_ini();
GLOBAL void calc_ch();
GLOBAL void GetHitPadStateAll();
GLOBAL int CheckStatePad(unsigned int Handle);
#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] != 0) GetHitKeyStateAll_Key[i]++;
else GetHitKeyStateAll_Key[i] = 0;
}
return 0;
}
int CheckStateKey(unsigned char Handle){
return stateKey[Handle];
}
pad_t pad;
void input_pad_or_key(int *p, int k){
*p = *p > k ? *p : k;
}
void GetHitPadStateAll(){
int i,PadInput,mul=1;
int *q[]={ &pad.key[configpad.left], &pad.key[configpad.up], &pad.key[configpad.right],
&pad.key[configpad.down], &pad.key[configpad.shot], &pad.key[configpad.bom],
&pad.key[configpad.slow], &pad.key[configpad.start], &pad.key[configpad.up],
};
unsigned char s[]={ KEY_INPUT_LEFT, KEY_INPUT_UP, KEY_INPUT_RIGHT, KEY_INPUT_DOWN, KEY_INPUT_Z,
KEY_INPUT_X, KEY_INPUT_LSHIFT, KEY_INPUT_ESCAPE, KEY_INPUT_LCONTROL,
};
PadInput = GetJoypadInputState( DX_INPUT_PAD1 );
for(i = 0; i < 16; i++){
if(PadInput & mul) pad.key[i]++;
else pad.key[i]=0;
}
for(i = 0; i < 9; i++){
input_pad_or_key(q[i], CheckStateKey(s[i]));
}
}
int CheckStatePad(unsigned int Handle){
if(Handle >= 0 && Handle < PAD_MAX){
return pad.key[Handle];
}
else{
printfDx("CheckStatePadにわたした値は不正です。\n");
return -1;
}
}
#define FIELD_MAX_X 384
#define FIELD_MAX_Y 448
#define FIELD_X 32
#define FIELD_Y 16
#define PAD_MAX 16
#include "struct.h"
#define GLOBAL_INSTANCE
#include "../include/GV.h"
int ProcessLoop(){
if(ProcessMessage() != 0) return -1;
if(ClearDrawScreen() != 0) return -1;
GetHitKeyStateAll_2();
GetHitPadStateAll();
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lmCmdLine, int nCmdShow){
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;
while(ProcessLoop() == 0){
switch(func_state){
case 0: load();
first_ini();
func_state = 100;
break;
case 100: calc_ch();
graph_main();
break;
default: printfDx("不明なfunc_state");
break;
}
if(CheckStateKey(KEY_INPUT_ESCAPE) == 1) break;
ScreenFlip();
}
DxLib_End();
return 0;
}