- paidui.java
- mport java.util.Random;
- //牌堆類用來創建一副麻將牌
- public class paidui {
- // 定義一副(新溝本地晃晃帶東南西北分)麻將牌:1*表示萬,2*表示筒,3*表示條,4*表示東,5*表示南
- // 6*表示西,7*表示北,8*表示中,9*表示發財,10*表示白板
- int mj[] = { 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
- 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24,
- 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28,
- 28, 28, 29, 29, 29, 29, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33,
- 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37,
- 38, 38, 38, 38, 39, 39, 39, 39, 41, 41, 41, 41, 51, 51, 51, 51, 61,
- 61, 61, 61, 71, 71, 71, 71, 81, 81, 81, 81, 91, 91, 91, 91, 101,
- 101, 101, 101 };
- int P_SZ = 136;// 定義一副麻將牌的張數
- int mj_q[] = new int[P_SZ];// 用于回收棄掉的牌
- int B = 0;// 發牌位置標記
- int Q = 0;// 回收棄牌位置標記
- public paidui() {
- // 構造函數用于初始化牌堆信息
- for (int i = 0; i < P_SZ; i++) {
- mj_q[i] = 0; // 初始化棄牌牌堆
- }
- }
- public int xipai() {
- // 提供一個洗牌方法
- Random random = new Random();// 隨機產生對象的對象
- for (int i = 0; i < P_SZ; i++) {
- // 隨機產生一個下標值如果和當前下表不等則交換元素值,遍歷素組后就生成了一個隨機打亂的牌堆數組了
- int j = random.nextInt(P_SZ);
- if (i != j) {
- int a;
- a = mj[i];
- mj[i] = mj[j];
- mj[j] = a;
- }
- }
- return 0;
- }
- public int fapai() {
- // 提供一個發牌方法
- if (B >= P_SZ)
- return 0;// 牌已經發完此局流局
- int pai = mj[B]; // 返回當前牌堆頂部的第一張牌
- B++;// 牌堆頂部指針下移一位
- return pai;
- }
- public int huishou(int pai) {
- // 提供一個回收棄牌的方法
- if(Q<P_SZ) mj_q[Q]=pai;
- return 0;
- }
- public int[] get_qipai() {
- // 提供一個返回棄牌牌堆信息的方法
- return mj_q;
- }
- }
- paizuo.java
- //牌桌類這是麻將框架的最上層
- public class paizuo {
- // 一個牌桌應該包含的所有屬性
- guizhe GZ=new guizhe();// 一個游戲規則
- paidui PD=new paidui();// 一副麻將牌
- xuangshou XS1=new xuangshou();// 2個或4個選手
- xuangshou XS2=new xuangshou();
- //調試用
- int XS1_SP[]=new int[15];
- int XS2_SP[]=new int[15];
-
- public int xipai() {
- // 牌桌提供一個洗牌并開局發牌的方法
- PD.xipai();
- for(int i=0;i<13;i++)
- {
- XS1.mopai(PD.fapai());
- XS2.mopai(PD.fapai());
- }
- return 0;
- }
- public int fapai() {
- // 牌桌提供一個發牌的方法
- return 0;
- }
- public int UI() {
- // 牌桌提供一個獲取選手輸入和顯示當前牌局信息的方法(這里我只用控制臺界面)
- XS1.zhengli();
- XS2.zhengli();
- XS1_SP=XS1.get_SP();
- XS2_SP=XS2.get_SP();
- System.out.print("選手一初始化的手牌信息為:\n");
- for(int i=0;i<13;i++){
- print(XS1_SP[i]);
- }
- System.out.print("\n\n");
- System.out.print("選手二初始化的手牌信息為:\n");
- for(int i=0;i<13;i++){
- print(XS2_SP[i]);
- }
- return 0;
- }
- public int print(int P) {
- // 提供一個打印牌面信息的方法
- switch (P) {
- case 11:
- System.out.print("一萬 ");
- break;
- case 12:
- System.out.print("二萬 ");
- break;
- case 13:
- System.out.print("三萬 ");
- break;
- case 14:
- System.out.print("四萬 ");
- break;
- case 15:
- System.out.print("五萬 ");
- break;
- case 16:
- System.out.print("六萬 ");
- break;
- case 17:
- System.out.print("七萬 ");
- break;
- case 18:
- System.out.print("八萬 ");
- break;
- case 19:
- System.out.print("九萬 ");
- break;
- case 21:
- System.out.print("一筒 ");
- break;
- case 22:
- System.out.print("二筒 ");
- break;
- case 23:
- System.out.print("三筒 ");
- break;
- case 24:
- System.out.print("四筒 ");
- break;
- case 25:
- System.out.print("五筒 ");
- break;
- case 26:
- System.out.print("六筒 ");
- break;
- case 27:
- System.out.print("七筒 ");
- break;
- case 28:
- System.out.print("八筒 ");
- break;
- case 29:
- System.out.print("九筒 ");
- break;
- case 31:
- System.out.print("一條 ");
- break;
- case 32:
- System.out.print("二條 ");
- break;
- case 33:
- System.out.print("三條 ");
- break;
- case 34:
- System.out.print("四條 ");
- break;
- case 35:
- System.out.print("五條 ");
- break;
- case 36:
- System.out.print("六條 ");
- break;
- case 37:
- System.out.print("七條 ");
- break;
- case 38:
- System.out.print("八條 ");
- break;
- case 39:
- System.out.print("九條 ");
- break;
- case 41:
- System.out.print("東風 ");
- break;
- case 51:
- System.out.print("西風 ");
- break;
- case 61:
- System.out.print("南風 ");
- break;
- case 71:
- System.out.print("北風 ");
- break;
- case 81:
- System.out.print("紅中 ");
- break;
- case 91:
- System.out.print("發財 ");
- break;
- case 101:
- System.out.print("白板 ");
- break;
- default:
- ;
- }
- return 0;
- }
- }
- majiang_main.java
- //調試用入口類
- public class majiang_main {
- public static void main(String[] args) {
- paizuo PZ=new paizuo();
- PZ.xipai();
- PZ.UI();
-
- }
- }
復制代碼
|