クラス BeMusicNoteLayout
- Object
-
- BeMusicNoteLayout
-
- すべての実装されたインタフェース:
Comparable<BeMusicNoteLayout>
public class BeMusicNoteLayout extends Object implements Comparable<BeMusicNoteLayout>
ノート配置のレイアウトを表現するクラスです。当クラスでは、レーン内の各入力デバイスのアサインを仮想的に入れ替え、入れ替え後の入力デバイスにノートが 割り当たっているように見せる役割を果たします。この機能を用いることで譜面のノートをデータ的に変更することなく ノートの入れ替えを実現することが可能になります。
-
-
フィールドの概要
フィールド 修飾子とタイプ フィールド 説明 static BeMusicNoteLayout
DP_REGULAR
ダブルプレーの正規レイアウトstatic String
PATTERN_PRIMARY_MIRROR
主レーンにおけるミラー配置パターンstatic String
PATTERN_PRIMARY_REGULAR
主レーンにおける正規配置パターンstatic String
PATTERN_SECONDARY_MIRROR
副レーンにおけるミラー配置パターンstatic String
PATTERN_SECONDARY_REGULAR
副レーンにおける正規配置パターンstatic BeMusicNoteLayout
SP_MIRROR
シングルプレーのミラーレイアウトstatic BeMusicNoteLayout
SP_REGULAR
シングルプレーの正規レイアウト
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BeMusicNoteLayout(String layout)
シングルプレー用のノートレイアウトオブジェクトを構築します。BeMusicNoteLayout(String primary, String secondary)
ノートレイアウトオブジェクトを構築します。
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 int
compareTo(BeMusicNoteLayout o)
レイアウトパターンの比較を行います。boolean
equals(Object obj)
レイアウトパターンの比較を行います。static List<String>
generateAllPatterns(BeMusicLane lane)
指定レーン用の全てのレイアウトパターンを生成します。static List<String>
generateAllRotatePatterns(BeMusicLane lane)
指定レーン用のローテートレイアウトパターンを生成します。static String
generateAnyPatterns(BeMusicLane lane)
指定レーン用のいずれかのレイアウトパターンを生成します。BeMusicDevice
get(BeMusicDevice before)
レイアウトパターンに従ってマッピングされた入力デバイスを取得します。String
getPrimaryPattern()
主レーン用レイアウトパターンを取得します。String
getSecondaryPattern()
副レーン用レイアウトパターンを取得します。int
hashCode()
boolean
isDoublePlayLayout()
このレイアウトがダブルプレー用かどうかを判定します。boolean
isFlip()
主レーンと副レーンが入れ替わった状態(FLIP)であるかを判定します。boolean
isSinglePlayLayout()
このレイアウトがシングルプレー用かどうかを判定します。String
toString()
レイアウトの文字列表現を返します。
-
-
-
フィールドの詳細
-
PATTERN_PRIMARY_REGULAR
public static final String PATTERN_PRIMARY_REGULAR
主レーンにおける正規配置パターン- 関連項目:
- 定数フィールド値
-
PATTERN_PRIMARY_MIRROR
public static final String PATTERN_PRIMARY_MIRROR
主レーンにおけるミラー配置パターン- 関連項目:
- 定数フィールド値
-
PATTERN_SECONDARY_REGULAR
public static final String PATTERN_SECONDARY_REGULAR
副レーンにおける正規配置パターン- 関連項目:
- 定数フィールド値
-
PATTERN_SECONDARY_MIRROR
public static final String PATTERN_SECONDARY_MIRROR
副レーンにおけるミラー配置パターン- 関連項目:
- 定数フィールド値
-
SP_REGULAR
public static final BeMusicNoteLayout SP_REGULAR
シングルプレーの正規レイアウト
-
SP_MIRROR
public static final BeMusicNoteLayout SP_MIRROR
シングルプレーのミラーレイアウト
-
DP_REGULAR
public static final BeMusicNoteLayout DP_REGULAR
ダブルプレーの正規レイアウト
-
-
コンストラクタの詳細
-
BeMusicNoteLayout
public BeMusicNoteLayout(String layout)
シングルプレー用のノートレイアウトオブジェクトを構築します。レイアウトは主レーンのスイッチ1~7を表す'1'~'7'の文字とスクラッチを表す'S'の文字で指定します。 レイアウトは7または8文字で指定し、スクラッチのみ省略が可能です。 スクラッチを指定する場合、スイッチとスクラッチを含めたレイアウトが行えます。スクラッチにアサインするノートは 8文字目に記述してください。
1つの入力デバイスを複数にアサインすることはできません。そのような指定があった場合は例外をスローします。
- パラメータ:
layout
- 主レーンのレイアウト文字列- 例外:
NullPointerException
- layoutがnullIllegalArgumentException
- レイアウト記述ルール違反
-
BeMusicNoteLayout
public BeMusicNoteLayout(String primary, String secondary)
ノートレイアウトオブジェクトを構築します。主レーンのレイアウトはスイッチ1~7を表す'1'~'7'の文字とスクラッチを表す'S'の文字で指定します。 副レーンのレイアウトはスイッチ1~7を表す'A'~'G'の文字とスクラッチを表す'S'の文字で指定します。
レイアウトは7または8文字で指定し、スクラッチのみ省略が可能です。 スクラッチを指定する場合、スイッチとスクラッチを含めたレイアウトが行えます。スクラッチにアサインするノートは 8文字目に記述してください。
1つのノートを複数にアサインすることはできません。そのような指定があった場合は例外をスローします。
副レーンのレイアウトを省略(null指定)するとシングルプレー用、指定するとダブルプレー用の ノートレイアウトオブジェクトとなります。主レーンに副レーンのレイアウトを指定すると両者を 入れ替えるレイアウト(FLIP)を構築することができます。ただし、シングルプレー用レイアウトで副レーンの レイアウトを指定することはできません。指定すると例外がスローされます。
- パラメータ:
primary
- 主レーンのレイアウト文字列secondary
- 副レーンのレイアウト文字列- 例外:
NullPointerException
- primaryがnullIllegalArgumentException
- 主レーンのレイアウト記述ルール違反IllegalArgumentException
- 副レーンのレイアウト記述ルール違反IllegalArgumentException
- 主レーンに副レーンのレイアウト指定時、副レーンのレイアウトが主レーンのレイアウトではない
-
-
メソッドの詳細
-
generateAnyPatterns
public static String generateAnyPatterns(BeMusicLane lane)
指定レーン用のいずれかのレイアウトパターンを生成します。当メソッドはスイッチのみの全レイアウトパターン5040種類の中から任意のレイアウトをランダムで1つ生成します。 スクラッチのレイアウト変更は行われないので注意してください。
- パラメータ:
lane
- レイアウトパターン生成対象レーン- 戻り値:
- 指定用レイアウトパターン
- 例外:
NullPointerException
- laneがnull
-
generateAllPatterns
public static List<String> generateAllPatterns(BeMusicLane lane)
指定レーン用の全てのレイアウトパターンを生成します。当メソッドはスイッチのみの全レイアウトパターン5040種類全てを生成します。 スクラッチのレイアウト変更は行われないので注意してください。
- パラメータ:
lane
- レイアウトパターン生成対象レーン- 戻り値:
- 指定レーン用の全レイアウトパターンリスト
- 例外:
NullPointerException
- laneがnull
-
generateAllRotatePatterns
public static List<String> generateAllRotatePatterns(BeMusicLane lane)
指定レーン用のローテートレイアウトパターンを生成します。ローテートレイアウトパターンとは、正規、またはミラーパターンを右方向にずらした合計12個のレイアウトパターン のことを指します。ただし、このパターンリストに正規・ミラーパターンは含まれません。 また、スクラッチのレイアウト変更は行われないので注意してください。
- パラメータ:
lane
- レイアウトパターン生成対象レーン- 戻り値:
- 指定レーン用のローテートレイアウトパターンリスト
- 例外:
NullPointerException
- laneがnull
-
equals
public boolean equals(Object obj)
レイアウトパターンの比較を行います。当メソッドでは同じレイアウトパターンを指定したかどうかを比較します。 従って、スクラッチを指定したかどうかも比較対象となります。例えば「1234567」「1234567S」はレイアウト変更結果は 全く同じになりますが、レイアウトパターンとしては異なるものとして認識されます。
-
toString
public String toString()
レイアウトの文字列表現を返します。具体的にはレイアウトパターン文字列が返されます。 ダブルプレー用レイアウトでは主レーン用と副レーン用のレイアウトパターン文字列を結合した文字列が 返されます。
-
compareTo
public int compareTo(BeMusicNoteLayout o)
レイアウトパターンの比較を行います。比較のソースとしてレイアウトオブジェクト構築時に指定されたレイアウトパターンを用います。 主レーンのレイアウトパターンが同じ場合、副レーンのレイアウトパターンで比較を行います。 このようなケースではダブルプレー用のレイアウトのほうが大きいと判定されます。
- 定義:
compareTo
インタフェース内Comparable<BeMusicNoteLayout>
- パラメータ:
o
- 比較対象レイアウト- 戻り値:
- 比較対象レイアウトと等価の場合0、小さければ負の値、大きければ正の値
- 例外:
NullPointerException
- oがnull
-
get
public final BeMusicDevice get(BeMusicDevice before)
レイアウトパターンに従ってマッピングされた入力デバイスを取得します。引数の入力デバイスはレイアウト変更前の正規の入力デバイスを指定します。戻り値ではレイアウトパターンに従って 変更された入力デバイスを返します。
シングルプレー用レイアウトで副レーンの入力デバイスを指定しても効果はありません。
- パラメータ:
before
- レイアウト変更前のノートを示す入力デバイス- 戻り値:
- レイアウト変更後のノートを示す入力デバイス
- 例外:
NullPointerException
- beforeがnull
-
getPrimaryPattern
public final String getPrimaryPattern()
主レーン用レイアウトパターンを取得します。当メソッドは、オブジェクト構築時に指定したレイアウトパターンを返します。
- 戻り値:
- 主レーン用レイアウトパターン
-
getSecondaryPattern
public final String getSecondaryPattern()
副レーン用レイアウトパターンを取得します。当メソッドは、レイアウトオブジェクト構築時に指定したレイアウトパターンを返します。シングルプレー用レイアウトでは 副レーンのレイアウトパターンがnullで返ることに注意してください。
- 戻り値:
- 副レーン用レイアウトパターン
-
isSinglePlayLayout
public final boolean isSinglePlayLayout()
このレイアウトがシングルプレー用かどうかを判定します。- 戻り値:
- このレイアウトがシングルプレー用ならtrue
-
isDoublePlayLayout
public final boolean isDoublePlayLayout()
このレイアウトがダブルプレー用かどうかを判定します。- 戻り値:
- このレイアウトがダブルプレー用ならtrue
-
isFlip
public final boolean isFlip()
主レーンと副レーンが入れ替わった状態(FLIP)であるかを判定します。当メソッドはシングルプレー用レイアウトでは必ずfalseを返します。
- 戻り値:
- このレイアウトがFLIPの場合true
-
-