なにが問題なのかもさっぱりわかりません。
#include "DxLib.h"
#define s 200
void PS(void);
void PM(void);
void EM(void);void PSM();
void ES(void);
void PD(void);
void ED(void);
int Colision(int ob1x,int ob1y,int ob1w,int ob1h,
int ob2x,int ob2y,int ob2w,int ob2h);
int jiki1x,jiki1y,jiki1graph;
int teki1x,teki1y,teki1Muki,teki1graph;
int tamaix[s],tamaiy[s],tamaigraph,tamaiFlag[s];
int jw,jh,tw,th;
int i;
int tamaiFlagB;
int tw1,th1;
int teki1damageFlag,teki1damageCounter,teki1damagegraph;
int etamaFlag,etamacounter;
int etamax,etamay,etamagraph,etamaw,etamah;
int jikidamageFlag,jikidamagecounter,jikidamagegraph;
int ret;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
//ChangeWindowMode(TRUE);
ChangeWindowMode(FALSE);
SetGraphMode(640,480,16);
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
//描画先画面を裏画面にする
SetDrawScreen(DX_SCREEN_BACK);
jiki1graph=LoadGraph("jiki1.bmp");
jiki1x=288;jiki1y=400;
//teki1のグラフィックをメモリにロード&表示座標をセット
teki1graph=LoadGraph("teki1.bmp");
teki1x=0;teki1y=50;
//tama1のグラフィックをメモリにロード
tamaigraph=LoadGraph("tama1.bmp");
for(i=0;i<s;i++)
{
tamaiFlag[s]=0;
}
tamaiFlagB=0;
//teki1の移動方向をセット
teki1Muki=1;
GetGraphSize(tamaigraph,&tw,&th);
jikidamagegraph=LoadGraph("gathisuke.bmp");
jikidamageFlag=0;
etamacounter=0;
teki1damagegraph=LoadGraph("ahopanman.bmp");
GetGraphSize(jiki1graph,&jw,&jh);
teki1damageFlag=0;
while(1)
{
//画面に描かれたものを一回消す
ClsDrawScreen();
{
PM();
PS();
PSM();
ED();
EM();
ES();
PD();
if(Colision(jiki1x,jiki1y,jw,jh,etamax,etamay,etamaw,etamah))
{
etamaFlag=0;
jikidamageFlag=1;
jikidamagecounter=0;
}
for(i=0;i<s;i++)
{
if(tamaiFlag[s]==1)
{
if(Colision(tamaix[s],tamaiy[s],tw,th,teki1x,teki1y,tw1,th1) == 1){
tamaiFlag[s]=0;
teki1damageFlag=1;
teki1damageCounter=0;
}
}
}
}
//裏画面の内容を表画面に表示
ScreenFlip();
//Windowsシステムからくる情報を処理
if(ProcessMessage()==-1)break;
//ESCキーが押されたらループから抜ける
if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;
}
WaitKey() ; // キーの入力待ち((7-3)『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
void PM(){
//上下左右のキー入力に対応してx,yの座標を変更する
if(CheckHitKey(KEY_INPUT_LEFT)==1)jiki1x-=10;
if(CheckHitKey(KEY_INPUT_RIGHT)==1)jiki1x+=10;
if(CheckHitKey(KEY_INPUT_UP)==1)jiki1y-=10;
if(CheckHitKey(KEY_INPUT_DOWN)==1)jiki1y+=10;
if(jiki1x<0)jiki1x=0;
if(jiki1x>640-72)jiki1x=640-72;
if(jiki1y<0)jiki1y=0;
if(jiki1y>480-70)jiki1y=480-70;
DrawGraph(jiki1x,jiki1y,jiki1graph,FALSE);
}
void PD(){
if(jikidamageFlag==1)
{
DrawGraph(jiki1x,jiki1y,jikidamagegraph,FALSE);
jikidamagecounter++;
if(jikidamagecounter==30)
{
jikidamageFlag=0;
}
}
else
{
PM();
PS();
}
}
void EM(){
{
if(teki1Muki==1)teki1x+=10;
if(teki1Muki==0)teki1x-=10;
if(teki1x>640-105)
{
teki1x=640-105;
teki1Muki=0;
}
if(teki1x<0)
{
teki1x=0;
teki1Muki=1;
}
DrawGraph(teki1x,teki1y,teki1graph,FALSE);
}
}
void ED(){
if(teki1damageFlag==1)
DrawGraph(teki1x,teki1y,teki1damagegraph,FALSE);
teki1damageCounter++;
if(teki1damageCounter==30)
{
teki1damageFlag=0;
}
}
void PS(){
//スペース
if(CheckHitKey(KEY_INPUT_SPACE))
if(tamaiFlagB==0)
{
for(i=0;i<s;i++)
{
if(tamaiFlag[s]==0)
{
//jiki1とtama1の画像サイズを得る
GetGraphSize(jiki1graph,&jw,&jh);
GetGraphSize(tamaigraph,&tw,&th);
//tama1の位置セット
tamaix[s]=(jw-tw)/2+jiki1x;
tamaiy[s]=(jh-th)/2+jiki1y;
tamaiFlag[s]=1;
break;
}
}
tamaiFlagB=1;
DrawGraph(tamaix[s],tamaiy[s],tamaigraph,FALSE);
}
else
{
tamaiFlagB=0;
}
}
void PSM()
{
//tama1移動
for(i=0;i<s;i++)
{
if(tamaiFlag[s]==1)
{
tamaiy[s]-=5;
if(tamaiy[s]<-20)
{
tamaiFlag[s]=0;
}
DrawGraph(tamaix[s],tamaiy[s],tamaigraph,FALSE);
}
}
}
void ES(){
{
GetGraphSize(teki1graph,&tw1,&th1);
etamagraph=LoadGraph("tama1.bmp");
GetGraphSize(etamagraph,&etamaw,&etamah);
etamaFlag=0;
{
ret=GetRand(100);
if(ret<2)
{
etamacounter++;
if(etamacounter==1)
{
if(etamaFlag==0)
{
etamax=teki1x+tw1/2-etamaw/2;
etamay=teki1y+th1/2-etamah/2;
etamaFlag=1;
}
etamacounter=0;
}
}
}
}
if(etamaFlag==1)
{
etamay+=15;
if(etamay>480)etamaFlag=0;
DrawGraph(etamax,etamay,etamagraph,FALSE);
}
}
int Colision(int ob1x,int ob1y,int ob1w,int ob1h,
int ob2x,int ob2y,int ob2w,int ob2h)
{
int colflg=0;
if(((ob1x>ob2x&&ob1x<ob2x+ob2w)||
(ob2x>ob1x&&ob2x<ob1x+ob1w))&&
((ob1y>ob2y&&ob1x<ob2y+ob2h)||
(ob2y>ob1y&&ob2y<ob1y+ob1h)))
{
colflg=1;
}
return(colflg);
}
長文で申し訳ありません。
どなたかわかる方がおられましたら教えていただけると幸いです