「列挙型」の編集履歴(バックアップ)一覧はこちら
「列挙型」(2017/10/10 (火) 03:34:06) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
* 列挙型について
使用例として以下は3dテトリスのコードの一部である。
#highlight(linenumber,java){{
/**
* 列挙型<br>
* テトリスの種類を増やした場合(objectパッケージ)要変更
* @author tachibana
*
*/
public enum TetrisList {
Empty(0),
Rect(1),
T(2),
Z(3),
L(4);
//要追加
private final int tetrisNum;
// private final Tetris tetris;
TetrisList(final int tetrisNum) {
// TODO 自動生成されたコンストラクター・スタブ
this.tetrisNum= tetrisNum;
}
/**
* 対応するテトリスの番号を返す
* @return
*/
public int getTetrisNumber(){
return tetrisNum;
}
/**
*
* @param id
* @return
*/
public static TetrisList getType(final int id){
TetrisList[] types = TetrisList.values();
for (TetrisList type : types) {
if (type.getTetrisNumber() == id) {
return type;
}
}
return null;
}
}
}}
Cとちがってjavaの場合enumはintの定数ではなくオブジェクトの列挙であるので振る舞いを変えることができる。
getTypeでidに一致するオブジェクトを返す実装となっている。
enumとswitch文をうまく使えばコードを比較的キレイにかける…筈。
この場合要素数はTetrisList.values().lengthで取得できる。
itemの実装とかはうまくid割り振ってアップグレードとかダウングレードとかできるといい
----
以下例
----
* 列挙型について
使用例として以下は3dテトリスのコードの一部である。
#highlight(linenumber,java){{
/**
* 列挙型<br>
* テトリスの種類を増やした場合(objectパッケージ)要変更
* @author tachibana
*
*/
public enum TetrisList {
Empty(0),
Rect(1),
T(2),
Z(3),
L(4);
//要追加
private final int tetrisNum;
// private final Tetris tetris;
TetrisList(final int tetrisNum) {
// TODO 自動生成されたコンストラクター・スタブ
this.tetrisNum= tetrisNum;
}
/**
* 対応するテトリスの番号を返す
* @return
*/
public int getTetrisNumber(){
return tetrisNum;
}
/**
*
* @param id
* @return
*/
public static TetrisList getType(final int id){
TetrisList[] types = TetrisList.values();
for (TetrisList type : types) {
if (type.getTetrisNumber() == id) {
return type;
}
}
return null;
}
}
}}
Cとちがってjavaの場合enumはintの定数ではなくオブジェクトの列挙であるので振る舞いを変えることができる。
getTypeでidに一致するオブジェクトを返す実装となっている。
enumとswitch文をうまく使えばコードを比較的キレイにかける…筈。
この場合要素数はTetrisList.values().lengthで取得できる。
ゲームの各種アイテムの実装で必要なら列挙型のItemListつくってうまくid割り振ってアップグレードとかダウングレードとかできるといいかもしれない。
----
以下例
----