ダンジョン探索プログラム - 萌えJava超入門
最終章 超入門まとめ

Sample24_01のメソッド
その一

先ずは簡単なメソッドから説明しましょう。

目次

1. Sample24_01の主なメソッド


Sample24_01クラスの publicメソッドを表にまとめました。
グレーに着色したメソッドは、Cellクラスを使用していますので、
Cellクラスを説明してから取り扱いましょう。

Sample24_01の主なメソッド
メソッド説明
void setMsgArray
  (String[] msgArray)
メッセージの文字列配列を setします。
String getPos()現在位置を表す文字列を返します。
boolean toForward()posX、posY を変更します。
direction の方向に移動します。
void toRight()direction を変更します。
void lookBack()direction を変更します。
void toLeft()direction を変更します。
Cell rotatePosCell
  (int x0, int y0)
相対位置で指定されたマスを、
directionに回転した値で返します。
String message()現在位置のマスに従った文字列を返します。
boolean action()現在位置のマスに従って、
階段の昇り降りイベントを実行します。
boolean isOut()floor の値が0以下になると
true を返します。



2. getPosメソッド


getPosメソッドは、String.format で、 floorposXposYdirection、 を表示するための文字列を返すメソッドです。

private の strDirectionメソッドを使っていますが、directionは 0~3 の整数なので、 対応する文字列に置き換えているだけです。

ご参照→ String.formatメソッド

getPosメソッド
  private final static int NORTH = 0;
  private final static int EAST  = 1;
  private final static int SOUTH = 2;
  private final static int WEST  = 3;

  public String getPos(){
    return String.format("%sF (%2s, %2s) %s",
            Integer.toString(floor+1, 10),
            Integer.toString(posX + displayX, 10),
            Integer.toString(posY + displayY, 10),
            strDirection()
        );
  }
  private String strDirection(){
    switch(direction){
      case NORTH:
        return "NORTH";
      case EAST:
        return "EAST";
      case SOUTH:
        return "SOUTH";
      case WEST:
        return "WEST";
      default:
        return "Invalid direction.";
    }
  }

String.formatメソッドが少し面倒かな?
自分のレベルに合せて
適切にスルーしよう!




そんな感じで
大丈夫なんスか?

ちなみに、displayX、displayY という変数がありますが、これは表示する座標の原点をずらすためのものです。
(0, 0)に来たら、プレイヤーに「角だ。」と悟られてしまいますからね。
つまりゲーム性の問題です。
座標にマイナスの値が表示されればマップの広さを悟られにくくなります。
動作確認のときは 0 でいいでしょう。


3. toRight、toRight、lookBackメソッド


これらのメソッドは、向いている方向を示す「direction」の値を変更します。
0~3の範囲を超えないように、direction %= 4 としているのがポイントです。

toRight、toRight、lookBackメソッド
  public void lookBack(){
    direction += 2;
    direction %= 4;
  }
  public void toRight(){
    direction++;
    direction %= 4;
  }
  public void toLeft(){
    direction--;
    direction += 4;
    direction %= 4;
  }



これも大丈夫だな。



大丈夫よ~。


4. isOutメソッド


階(floor)がマイナスになったら、 ダンジョンの外に出たと解釈します。
isOutメソッドの戻り値が true になると、メインループを抜けるようになっています。

isOutメソッド
  public boolean isOut() {
    return floor < 0;
  }

尚、floorは、3Dダンジョンゲーム「Wizardry」に習って
値が大きいほど地下深くであることを示しています。
floor==0 は地下1階。
floor==1 は地下2階。



今はここまで。
残りは Cellクラスを説明した
後にしよう。


お疲れ様でした。


© 2019 awasekagami