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の最初からじゃないけど・・・
しっかりとプレイヤー1が2回休んでいるのが確認できました。
さて、Cokeでも飲みながら、SevenStarでも燻らせるか。
コメント 0