的をクリックしたらランダムで指定された座標に的が移動するようにしたいのですが、
まずは前段階として、的をクリックしたら、という判定はないことにしてクリックをしたら的が移動するようにしたいと思っております。
プログラムはこちらです。
#include "DxLib.h"
int MouseInput;
int menu=0,playmusic=1,Key[256],White;
int back1/*menu*/,back2/*play1*/,mato1;
int Sound1/*menu*/,Sound2/*play1*/;
/***********色の定義*********/
/*******************************************************
ステージ1
*******************************************************/
void Start1(void){
MouseInput = GetMouseInput(); //マウスの入力状況を取得
static int x=250,y=130,x1=0,y1=0,x2=0,y2=0;
static int count=0,move=0;
White = GetColor( 255 , 255 , 255 );
/*******************************************
的をクリックしたら、点を加算、的を移動させる
*******************************************/
if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0){
count++;
}else{
count=0;
}
if(move==1){ //xとx1、yとy1、それぞれ大きい値からひく
if( x1 > x){ //x1(ランダムの値)が現在の座標より大きければ
x2=x1-x; //ランダムの値(大)から現在の座標(小)を引き、x2変数へ
}else if( x1 < x){ //x1(ランダムの値)が現在の座標より小さければ
x2=x-x1; //現在の座標(小)からランダムの値(大)を引き、x2変数へ
}
if( y1 > y){ //y1(ランダムの値)が現在の座標より大きければ
y2=y1-y; //ランダムの値(大)から現在の座標(小)を引き、y2変数へ
}else if( y1 < y){ //y1(ランダムの値)が現在の座標より小さければ
y2=y-y1; //現在の座標(小)からランダムの値(大)を引き、y2変数へ
}
move=2; //move 2の処理に移動
}
if(move==2){ //ランダムで選んだ値が現在の座標より+かーか調べイン・デクリメント
if(y1 > y){ //ランダムで選んだ値が現在の座標より大きけければ。
if(y2 >= 0){ //y2が0より大きい間、1を引き続ける
y--; //インデクリメント
}
}else if(y1 < y){ //ランダムで選んだ値が現在の座標より小さければ。
if(y2 <= 0){ //y2が0未満の間1を足し続ける
y++; //インクリメント
}
}
if(x1 > x){ //ラダムで選んだ値が現在の座標より大きければ。
if(x2 >= 0){ //x2が0より大きい間、1を引き続ける
x--;
}
}else if(x1 < x){ //ランダムで選んだ値が現在の値より小さければ。
if( x2 <= 0){ //x2が0未満の間1を足し続ける。
x++;
}
}
if(x1==x && y1==y){ //ランダムのx,y座標と現在の座標が等しくなったら!
move = 3;
x2=0; //移動処理が終わったので、差を調べる変数を初期化
y2=0; //上に同じ
}
}
if(move==3){ //次のフレームで使うランダムな値をあえて予め計算ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
x1=GetRand(500);
y1=GetRand(340);
move=0;
}
/************
BGM 再生処理
************/
if(playmusic==0){//playmusicが0ならば音楽を再生(playmusicを2で初期化)
StopSoundMem( Sound1 ) ;
playmusic=2;
}
if(playmusic==2)
PlaySoundMem( Sound2 , DX_PLAYTYPE_LOOP );//バックグラウンド再生
DrawGraph( 0 , 0 , back1 , FALSE ) ;
DrawGraph( x , y , mato1 , TRUE ) ;
playmusic=3;
DrawFormatString( 100, 100, White , "count=%d" , count );//文字列表示
}
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
else GetHitKeyStateAll_InputKey[i]=0;
}
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
SetMouseDispFlag( TRUE ) ;
/*******色の定義*******************/
White = GetColor( 255 , 255 , 255 );
/*******画像のメモリ読み込み*******/
back1 = LoadGraph( "image/back(play).png" ) ;
back2 = LoadGraph( "image/back(menu).png" ) ;
mato1 = LoadGraph( "image/mato(play1).png") ;
/*******音声のメモリ読み込み*******/
Sound1 = LoadSoundMem( "Sound/backmusic/menu(music).wav" );
Sound2 = LoadSoundMem( "Sound/backmusic/play(music).wav" );
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
if(menu==0){ //(menuが0の時)メニュー画面(トップ)
if(playmusic == 1){
PlaySoundMem( Sound1 , DX_PLAYTYPE_LOOP );//バックグラウンド再生
}
DrawGraph( 0 , 0 , back2 , FALSE ) ;
DrawString(100,100,"スペースキーでゲームスタート\n",White);
playmusic=0;
}
if(Key[KEY_INPUT_SPACE]==1 || menu==1){ //スペースキーが押された時、またはmenuが1の時(
Start1();
menu=1;
}
ScreenFlip();
}
DxLib_End();
return 0;
}
・クリックしても的が動かない(プログラムを多少改編する前は動いたが、すこしずつ 上にあがって行って画面外に消えてしまった)
ご教示いただけると幸いです。