SSブログ

Java:すごろく 完成した気がする・・・ [勉強]

今朝は、ゴセイブルーとゴセイナイトの即席漫才コンビを見たり、フィリップ(来人)が「ボクの身体はもうもたない。次の変身が最後だ」とか言ったりして、いろんな意味で衝撃を受けながらも、私の頭の中はJavaですごろくをつくることばかり考えていました。
いや、正確には どうやって1回休みや2回休みを実現するか、を考えていました。常にではないですが、頭の片隅で、です。

そして、閃きました。(♛∀♛)ฺピカーーンッ!
いや、(Θ。Θ¬)☆キラーーンッ!かな?
私が閃いたときの顔文字はどうでもイイや。(^-^;

 

何度か試してみましたが、しっかりと1回休みや2回休みが実現され、以前のようにプレイヤー1が1回休みなのに、またプレイヤー1の順番が回ってくるということもありません。
しっかりとプレイヤー順番入れ替えが行われています。

と、いうことで・・・・・・・私が閃いた すごろくソースをUPしますね。

 

 

以下、講師から渡された教科書(上)総復習の演習問題「すごろく」の回答ソースです。

public class Sugoroku1 {
 public static void main(String[] args) {
  //すごろくの各マスのイベント
  String[] event = new String[22];
   event[0] = "スタート";
   event[1] = "";
   event[2] = "";
   event[3] = "";
   event[4] = "2マス進む";
   event[5] = "3マス戻る";
   event[6] = "";
   event[7] = "スタートに戻る";
   event[8] = "2マス進む";
   event[9] = "1回休み";
   event[10] = "3マス戻る";
   event[11] = "";
   event[12] = "2マス進む";
   event[13] = "";
   event[14] = "スタートに戻る";
   event[15] = "3マス戻る";
   event[16] = "2マス進む";
   event[17] = "";
   event[18] = "2回休み";
   event[19] = "";
   event[20] = "3マス戻る";
   event[21] = "ゴール";
  
  int[] play = new int[2];
  play[0] = 0;   //プレイヤー1かつプレイヤー1のマス目
  play[1] = 0;   //プレイヤー2かつプレイヤー2のマス目
  int[] playBrk = new int[2];
  playBrk[0] = 0;   //プレイヤー1の休み回数
  playBrk[1] = 0;   //プレイヤー2の休み回数
  int[] playDice = new int[2];
  playDice[0] = 0;  //プレイヤー1のサイコロの目
  playDice[1] = 0;  //プレイヤー2のサイコロの目
  int num = 0;   //プレイヤー1とプレイヤー2の切り換え用変数
  
  
  while (play[0] <= 21 || play[1] <= 21) {
   if (playBrk[num] != 0) {  //プレイヤーの休み判定
    System.out.println("プレイヤー" + (num+1) + "のターンは休みです");
    System.out.println();
    playBrk[num]--;
    if (num == 0) {   //プレイヤーチェンジ
     num++;
    } else if (num == 1) {
     num--;
    }
    continue;
   }
   System.out.println("プレイヤー" + (num+1) + "の順番です");
   playDice[num] = (int)(Math.random() *6)+1;
   System.out.println("プレイヤー" + (num+1) + "のさいころの目は " + playDice[num] + "です。");
   play[num] += playDice[num];
   if (play[num] >= 21) {
    System.out.println("プレイヤー" + (num+1) + "はゴールしました★");
    System.exit(0);
   }
   System.out.println("プレイヤー" + (num+1) + "は" + play[num] + "マス目に進んだ");
   //止まったマス目のイベント有無チェック
   for (int i =play[num]; i < event.length; i++ ) {
    if (play[num] == i) {
     if (event[i].equals("")){
      break;
     } else if (event[i].equals("スタートに戻る")) {
      System.out.println("イベント発生!! " + event[i]);
      play[num] = 0;
      break;
     } else if (event[i].equals("2マス進む")) {
      System.out.println("イベント発生!! " + event[i]);
      play[num] += 2;
      break;
     } else if (event[i].equals("3マス戻る")) {
      System.out.println("イベント発生!! " + event[i]);
      play[num] -= 3;
      break;
     } else if (event[i].equals("1回休み")) {
      System.out.println("イベント発生!! " + event[i]);
      playBrk[num] = 1;
      break;
     } else if (event[i].equals("2回休み")) {
      System.out.println("イベント発生!! " + event[i]);
      playBrk[num] = 2;
      break;
     }
    }
   }
   System.out.println("プレイヤー" + (num+1) + "の現在地は" + play[num] + "マス目です");
   System.out.println();
   
   if (num == 0) {   //プレイヤーチェンジ
    num++;
   } else if (num == 1) {
    num--;
   }
  
  }
 }
}

と、こんな感じになりました。
相変わらず・・・オブジェクト指向っぽさは微塵も感じられませんが、気にしないでください。(^-^;

で、実行結果のスクリーンショットもUPしておきますね。
長すぎてSugoroku1の最初からじゃないけど・・・

20100815_java_sugoroku.JPG 
しっかりとプレイヤー1が2回休んでいるのが確認できました。

 

さて、Cokeでも飲みながら、SevenStarでも燻らせるか。

 

 


タグ:Java すごろく
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。