标题:
麻将游戏框架搭好(调试AI用)
[打印本页]
作者:
liuyy
时间:
2015-1-11 19:55
标题:
麻将游戏框架搭好(调试AI用)
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();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1