列挙型

列挙型について

使用例として以下は3dテトリスのコードの一部である。
  1. /**
  2.  * 列挙型<br>
  3.  * テトリスの種類を増やした場合(objectパッケージ)要変更
  4.  * @author tachibana
  5.  *
  6.  */
  7. public enum TetrisList {
  8. Empty(0),
  9. Rect(1),
  10. T(2),
  11. Z(3),
  12. L(4);
  13. //要追加
  14. private final int tetrisNum;
  15. // private final Tetris tetris;
  16.  
  17. TetrisList(final int tetrisNum) {
  18. // TODO 自動生成されたコンストラクター・スタブ
  19. this.tetrisNum= tetrisNum;
  20. }
  21.  
  22. /**
  23. * 対応するテトリスの番号を返す
  24. * @return
  25. */
  26. public int getTetrisNumber(){
  27. return tetrisNum;
  28. }
  29. /**
  30. *
  31. * @param id
  32. * @return
  33. */
  34. public static TetrisList getType(final int id){
  35. TetrisList[] types = TetrisList.values();
  36. for (TetrisList type : types) {
  37. if (type.getTetrisNumber() == id) {
  38. return type;
  39. }
  40. }
  41. return null;
  42. }
  43. }
  44.  
Cとちがってjavaの場合enumはintの定数ではなくオブジェクトの列挙であるので振る舞いを変えることができる。
getTypeでidに一致するオブジェクトを返す実装となっている。
enumとswitch文をうまく使えばコードを比較的キレイにかける…筈。
この場合要素数はTetrisList.values().lengthで取得できる。
ゲームの各種アイテムの実装で必要なら列挙型のItemListつくってうまくid割り振ってアップグレードとかダウングレードとかできるといいかもしれない。

以下例

最終更新:2017年10月10日 03:34