// 初期化 private void Intialize() { // field を初期化 for (int i = 0; i < FieldData.FIELD_HEIGHT; i++) { if (i == FieldData.FIELD_HEIGHT - 1) { for (int j = 0; j < FieldData.FIELD_WIDTH; j++) { field[i, j] = (int)Rotation.eFieldValue.WallBlock; } } else { for (int j = 0; j < FieldData.FIELD_WIDTH; j++) { if (j == 0 || j == FieldData.FIELD_WIDTH - 1) { field[i, j] = (int)Rotation.eFieldValue.WallBlock; } else { field[i, j] = (int)Rotation.eFieldValue.Empty; } } } } score = 0; // スコア isActive = true; // 操作可能かどうか minoAngle = MinoData.eMinoAngle.ang0; // ミノの向き _minoAngle = minoAngle; holdMino = MinoData.eMinoType.MAX; // ホールド中のミノ isHold = false; // ホールド可能かどうか makeMino = true; // 次のミノを生成 }
// 次のミノを生成する private void MakeMino() { if (makeMino == true) { Script_next.NextChanger(ref currentMino, ref nextMino); minoCreate.SetMinoData(out minoArray, currentMino); minoPosX = FieldData.RESPAWN_MINO_POS_X; minoPosY = FieldData.RESPAWN_MINO_POS_Y; Script_render.DeleteMino(); Script_render.DrawMino(minoPosX, minoPosY, ref minoArray, currentMino); minoAngle = MinoData.eMinoAngle.ang0; isGround = false; makeMino = false; } }
// 回転 private void Rotate() { // 右回転 if (Input.GetKeyDown(KeyCode.RightArrow)) { // ミノの向きを変える // 左向き(3)の時は上向き(0)にする if (minoAngle == MinoData.eMinoAngle.ang270) { minoAngle = MinoData.eMinoAngle.ang0; } else { minoAngle++; } rotation.RotatedMino(field, ref minoArray, currentMino, minoAngle, ref minoPosX, ref minoPosY, true); Script_render.DeleteMino(); Script_render.DrawMino(minoPosX, minoPosY, ref minoArray, currentMino); // TODO : 回転が失敗だった時、 minoAngleをもとに戻す処理 } // 左回転 if (Input.GetKeyDown(KeyCode.LeftArrow)) { // ミノの向きを変える // 上向き(0)の時は左向き(3)にする if (minoAngle == MinoData.eMinoAngle.ang0) { minoAngle = MinoData.eMinoAngle.ang270; } else { minoAngle--; } rotation.RotatedMino(field, ref minoArray, currentMino, minoAngle, ref minoPosX, ref minoPosY, false); Script_render.DeleteMino(); Script_render.DrawMino(minoPosX, minoPosY, ref minoArray, currentMino); // TODO : 回転が失敗だった時、 minoAngleをもとに戻す処理 } }