//GameMain.cpp GameMain.h
/プロトタイプ宣言
・変数
int BlockSpin(); //ブロックの回転処理
・関数
struct _Player
{
int x,y;
}Player[4],;
にPlayer_next[4];を追加
//回転後のブロック予定値を入れる
//ブロックの回転
int BlockSpin(){
int x,y,base;//回転後の基準値を入れる
switch(nowBlock)
{
case 1:
Player_next[0].x=Player[0].x; Player_next[0].y=Player[0].y;
Player_next[1].x=Player[1].x; Player_next[1].y=Player[1].y;
Player_next[2].x=Player[2].x; Player_next[2].y=Player[2].y;
Player_next[3].x=Player[3].x; Player_next[3].y=Player[3].y;
break;//回転処理なし
case 2:
if(Player[0].y==Player[1].y)//横1列の場合
{
x=Player[2].x;y=Player[2].y;base=2;
Player_next[0].x=x; Player_next[0].y=y-2;
Player_next[1].x=x;Player_next[1].y=y-1;
Player_next[2].x=x; Player_next[2].y=y;
Player_next[3].x=x;Player_next[3].y=y+1;
}
else//縦の場合
{
x=Player[2].x;y=Player[2].y;base=2;
Player_next[0].x=x-2; Player_next[0].y=y;
Player_next[1].x=x-1; Player_next[1].y=y;
Player_next[2].x=x; Player_next[2].y=y;
Player_next[3].x=x+1; Player_next[3].y=y;
}
break;
case 3:
if(Player[0].y==Player[1].y)//zの場合
{
x=Player[1].x;y=Player[1].y;base=1;
Player_next[0].x=x; Player_next[0].y=y-1;
Player_next[1].x=x;Player_next[1].y=y;
Player_next[2].x=x-1; Player_next[2].y=y;
Player_next[3].x=x-1;Player_next[3].y=y+1;
}
else//z縦の場合
{
x=Player[1].x;y=Player[1].y;base=1;
Player_next[0].x=x-1; Player_next[0].y=y;
Player_next[1].x=x; Player_next[1].y=y;
Player_next[2].x=x; Player_next[2].y=y+1;
Player_next[3].x=x+1; Player_next[3].y=y+1;
}
break;
case 4:
if(Player[0].y==Player[1].y)//zの場合
{
x=Player[1].x;y=Player[1].y;base=1;
Player_next[0].x=x; Player_next[0].y=y-1;
Player_next[1].x=x;Player_next[1].y=y;
Player_next[2].x=x+1; Player_next[2].y=y;
Player_next[3].x=x+1;Player_next[3].y=y+1;
}
else//z縦の場合
{
x=Player[1].x;y=Player[1].y;base=1;
Player_next[0].x=x+1; Player_next[0].y=y;
Player_next[1].x=x; Player_next[1].y=y;
Player_next[2].x=x; Player_next[2].y=y+1;
Player_next[3].x=x-1; Player_next[3].y=y+1;
}
case 5:
break;
}
//回転先にブロックがあるかどうか
int flag=0;
//現在地のブロック消去
for(int i=0;i<4;i++)
{
Block[Player[i].x][Player[i].y].num=0;
}
for(int i=0;i<4;i++){
if( (Block[Player_next[i].x][Player_next[i].y].num!=0 && i!=base) || Player_next[i].x>9 ||Player_next[i].x<0 || Player_next[i].y>19 )
{
flag=1;
}//ブロックがあればflagを1
}
//ブロックがなければブロックを入れる
if(flag==0){
for(int i=0;i<4;i++)
{
Player[i].x=Player_next[i].x;
Player[i].y=Player_next[i].y;
}
}
//ブロックセット
for(int i=0;i<4;i++)
{
Block[Player[i].x][Player[i].y].num=nowBlock;
}
return flag;
}
モチベーションが上がらない|´・ω・)


