java的簡單邏輯博彩遊戲craps

GradeBookTestGradeBookTestGradeBookTest一個流行的博彩遊戲稱爲craps的擲骰子游戲
規則如下:

擲兩個骰子。每個骰子有六面,上面分別有1~6個點。當骰子靜止之後,計算朝上的兩個面的點數之和。如果第一次投擲時這兩個骰子點數之和是7或者11,那就贏了。

如果第一次投擲的點數之和是2,3,12(稱爲craps)你就輸了。 如果第一次投擲的點數之和爲4,5,6,8,9或10,則這個點數成爲“點數”。要想贏,就必須繼續投擲骰子,直到擲出相同的點數,在投擲的過程中,如果骰子之和爲7,那麼你就輸了。

GradeBook.java

import java.util.Random;

public class GradeBook {
	// 實例化random,讓其生成隨機數
	private Random randomNumbers = new Random();

	// 遊戲的狀態,繼續,贏,輸
	private enum status {
		CONTINUE, WON, LOST
	};

	// 表示遊戲狀態
	private status gameStatus;
	// 一些常量用來表示,第一次投擲出2,3,12莊家贏,第一次投擲出7,11 玩家贏
	private final static int SNAKE_EYES = 2;
	private final static int TREY = 3;
	private final static int SEVEN = 7;
	private final static int YO_LEVEN = 11;
	private final static int BOX_CARS = 12;

	// 程序開始
	public void play() {
		// 用於記錄第一次第一次投擲出來非 2,3,7,11,12的值
		int myPoint = 0;
		// 執行rollDice方法
		int sumOfDice = rollDice();
		// 根據方法的返回值,用switch取得狀態
		// 這裏注意switch的用法,在SEVEN之後並沒有代碼,系統自動執行後面的代碼,直到遇到break。
		switch (sumOfDice) {
		// 擲出7和11的時候改變遊戲狀態,變成won
		case SEVEN:
		case YO_LEVEN:
			gameStatus = status.WON;
			break;
		// 擲出2,3,12將遊戲狀態改成LOST
		case SNAKE_EYES:
		case TREY:
		case BOX_CARS:
			gameStatus = status.LOST;
			break;
		// 如果擲出其它值,這裏就將遊戲狀態改爲continue並記錄投擲的值
		default:
			gameStatus = status.CONTINUE;
			myPoint = sumOfDice;
			System.out.printf("\n Point is %d \n", myPoint);
			break;
		}
		// 當遊戲狀態爲continue的時候執行以下循環
		while (gameStatus == status.CONTINUE) {
			// 繼續扔骰子
			sumOfDice = rollDice();
			// 利用之前記錄的mypoint的值和後來投擲的值進行對比
			// 如果值等於第一次投擲的值且不等於7,那麼就改變遊戲的狀態。
			if (sumOfDice == myPoint) {
				gameStatus = status.WON;

			} else if (sumOfDice == SEVEN) {

				gameStatus = status.LOST;

			}

		}
		// 如果遊戲狀態時won,那麼打印Player wins,反正則打印Player Loses
		if (gameStatus == status.WON) {

			System.out.println("\n Player wins");

		} else {

			System.out.println("\n Player loses");
		}

	}

	// 扔骰子方法
	private int rollDice() {
		// 因爲java的計數是從0開始的,也就是randomNumbers.nextInt(6)這個方法取得的隨機數是0-5,骰子沒有0的值,所以我們必須+1。
		int die1 = 1 + randomNumbers.nextInt(6);
		int die2 = 1 + randomNumbers.nextInt(6);

		int sum = die1 + die2;
		System.out.printf("\n 分別投擲出 %d + %d = %d", die1, die2, sum);
		// 這裏一定要記得返回sum的值哦,要不然之前的邏輯判斷都沒有辦法生效
		return sum;
	}

}



GradeBookTest.java


public class GradeBookTest {
	// 程序的入口點
	public static void main(String[] args) {
		// 實例化GradeBook
		GradeBook myGradeBook = new GradeBook();
		// 實現他的方法
		myGradeBook.play();
	}

}

注意這裏是java的程序,並非android。調試結果將會在console輸出。

運行截圖如下:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章