while(ShellX>LeftEdge&&ShellX<LeftEdge+350&&ShellY>0&&ShellY<20*BlockY){ //ブロックが存在しうる範囲かどうか
 if(ShellXT<ShellYT){ //Xのエリアが先に変化
  if(ShellVX>0){ //右方向に突入
   if(BlockFlag[ShellAX+1][ShellAY]){ //突入した先にブロックが存在
    BlockFlag[ShellAX+1][ShellAY]=0;
    ShellVX*=(-1);
    ShellX=35*(ShellAY+1); //エリア突入時の境界線へ移動
    ShellY=ShellBY+(ShellVY/ShellVX)*(35*(ShellAY+1)-ShellBY); //エリア突入時にyが進んだ分だけ増加
    break;
   }else{ //突入してもなかったよ
    ShellAX++; //判定を次のエリアへ移行
    ShellXT+=35/ShellVX; //次のエリアへの突入時間加算
   }
  }else{ //左方向に突入
   if(BlockFlag[ShellAX-1][ShellAY]){ //突入した先にブロックが存在
    BlockFlag[ShellAX-1][ShellAY]=0;
    ShellVX*=(-1);
    ShellX=35*ShellAX; //エリア突入時の境界線へ移動
    ShellY=ShellBY+(ShellVY/ShellVX)*(35*ShellAX-ShellBX); //エリア突入時にyが進んだ分だけ増加
    break;
   }else{ //突入してもなかったよ
    ShellAX--; //判定を次のエリアへ移行
    ShellXT=35/ShellVX; //次のエリアへの突入時間加算
   }
  }