2015年6月24日 星期三

【筆記】用Java做蛇與樓梯(snakes and ladders)遊戲的簡單範例

今天在書上看到一個蛇與樓梯的程式,其規則大致如下:

  1. 擲骰子來決定要走的步數。
  2. 從數字1開始走到最大數字(如下圖中的25)。
  3. 若走到梯子下,就可以延著梯子爬上去(前進)。
  4. 若走到蛇頭,就要延著蛇身滑下去(倒退)。


其程式碼如下:
package idv.jk.fun;

public class SnakesAndLadders
{
    private static final int finalSquare = 25;

    public static void main(String[] args)
    {
        int[] board = new int[finalSquare + 1];

        for(int i = 0; i <= finalSquare; i++)
        {
            board[i] = 0;
        }

        //定義走到的格子要上樓梯或滑下蛇後,要前進或後退幾格
        board[3] = +8;
        board[6] = +11;
        board[9] = +9;
        board[10] = +2;

        board[14] = -10;
        board[19] = -11;
        board[22] = -2;
        board[24] = -8;


        int diceNumber = 0;//擲出的點數

        int step = 0; //走到第幾格

        while(step < finalSquare)
        {
            //擲骰子
            diceNumber = (int)(Math.random() * 6 + 1);
            System.out.print("擲出的點數: " + diceNumber + ", ");
            step += diceNumber;

            if(step < board.length)
            {
                if(board[step] > 0)
                {
                    System.out.print("上樓梯, 爬上 " + board[step] + " 格, ");
                }
                else if(board[step] < 0)
                {
                    System.out.print("下蛇身, 滑下 " + board[step] + " 格, ");
                }
                step += board[step];
            }
            System.out.println("前進到第 " + step + " 格");
        }
        System.out.println("結束");
    }
}
執行結果為:
擲出的點數: 3, 上樓梯, 爬上 8 格, 前進到第 11 格
擲出的點數: 3, 下蛇身, 滑下 -10 格, 前進到第 4 格
擲出的點數: 3, 前進到第 7 格
擲出的點數: 5, 前進到第 12 格
擲出的點數: 1, 前進到第 13 格
擲出的點數: 1, 下蛇身, 滑下 -10 格, 前進到第 4 格
擲出的點數: 4, 前進到第 8 格
擲出的點數: 4, 前進到第 12 格
擲出的點數: 6, 前進到第 18 格
擲出的點數: 6, 下蛇身, 滑下 -8 格, 前進到第 16 格
擲出的點數: 4, 前進到第 20 格
擲出的點數: 1, 前進到第 21 格
擲出的點數: 4, 前進到第 25 格
結束

沒有留言: