int IsAbleToGo(int x,int y,int muki){//進めるかを判定する
if(muki==0)//上向きなら
if(hantei[y/8-1][x/8]==1)//進めるか判定
return 1;//エラー
if(muki==1)//左向きなら
if(hantei[y/8][x/8-1]==1)
return 1;
if(muki==2)//下向きなら
if(hantei[y/8+1][x/8]==1)
return 1;
if(muki==3)//右向きなら
if(hantei[y/8][x/8+1]==1)
return 1;
return 0;//正常
}
int IsAbleToBack(int x,int y,int muki){//進めるかを判定する
if(muki==0)//上向きなら
if(hantei[y/8+1][x/8]==1)//進めるか判定
return 1;//エラー
if(muki==1)//左向きなら
if(hantei[y/8][x/8+1]==1)
return 1;
if(muki==2)//下向きなら
if(hantei[y/8-1][x/8]==1)
return 1;
if(muki==3)//右向きなら
if(hantei[y/8][x/8-1]==1)
return 1;
return 0;//正常
}
//px,py=プレイヤーの座標、cx,cy=プレイヤーのMAPDATAの位置
px = cx*8
py = cy*8
//walking_flag・・・0:止まってる 1:前に進む 2:後に進む
//muki・・・ 0:上向く 1:左 2:下 3:右
if(ch.x%8==0 && ch.y%8==0){ //座標が8で割り切れたら入力可能
if ( g_MainData.key[ KEY_INPUT_UP ] == 1 ){ //上ボタンが押されたら
walking_flag=1; //歩くフラグを立てる。
stepnum++; //歩数を増やす
itvnum++;
}
else if( g_MainData.key[ KEY_INPUT_LEFT ] == 1 ){ //左ボタンが押されたら
muki++; //左に向く
if(muki == 4)muki = 0;
walking_flag=0; //歩かないフラグを立てる
}
else if( g_MainData.key[ KEY_INPUT_DOWN ] == 1 ){ //下ボタンが押されたら
walking_flag=-1; //下に歩くフラグを立てる
stepnum++; //歩数を増やす
itvnum++;
}
else if( g_MainData.key[ KEY_INPUT_RIGHT] == 1 ){ //右ボタンが押されたら
muki--; //右向きフラグを立てる
if(muki == -1) muki = 3;
walking_flag=0; //歩かないフラグを立てる
}
else //何のボタンも押されてなかったら
walking_flag=0; //歩かないフラグを立てる
if(walking_flag==1) //もし歩くなら
if(IsAbleToGo(px,py,muki)==1)//行き先が歩けないなら
walking_flag=0; //歩かないフラグを立てる。
if(walking_flag==-1) //もし下に歩くなら
if(IsAbleToBack(px,py,muki)==1)//行き先が歩けないなら
walking_flag=0; //歩かないフラグを立てる。
}
if(walking_flag==1){ //歩くフラグが立っていたら
if (muki==0) //上向きならch.y座標を減らす
py--;
else if(muki==1) //左向きならch.x座標を減らす
px--;
else if(muki==2) //下向きならch.y座標を増やす
py++;
else if(muki==3) //右向きならch.x座標を増やす
px++;
}
if(ch.walking_flag==-1){ //下に歩くフラグが立っていたら
if (muki==0) //上向きならch.y座標を減らす
py++;
else if(muki==1) //左向きならch.x座標を減らす
px++;
else if(muki==2) //下向きならch.y座標を増やす
py--;
else if(muki==3) //右向きならch.x座標を増やす
px--;
}
if((walking_flag==1 || walking_flag == -1) && itvnum > 1 && px%8==0 && py%8==0){
int i = 15 - itvnum;
if( i < 4 ) i = 4;
if(GetRand(i)==0)
GameFrame::setGameStateinit(GAME_BATTLE);
}