- 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();
-
- }
- }
复制代码
|