找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5386|回复: 0
打印 上一主题 下一主题
收起左侧

麻将游戏框架搭好(调试AI用)

[复制链接]
跳转到指定楼层
楼主
ID:72008 发表于 2015-1-11 19:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. paidui.java
  2. mport java.util.Random;

  3. //牌堆类用来创建一副麻将牌
  4. public class paidui {
  5. // 定义一副(新沟本地晃晃带东南西北分)麻将牌:1*表示万,2*表示筒,3*表示条,4*表示东,5*表示南
  6. // 6*表示西,7*表示北,8*表示中,9*表示发财,10*表示白板
  7. int mj[] = { 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,
  8. 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
  9. 19, 19, 19, 19, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24,
  10. 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28,
  11. 28, 28, 29, 29, 29, 29, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33,
  12. 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37,
  13. 38, 38, 38, 38, 39, 39, 39, 39, 41, 41, 41, 41, 51, 51, 51, 51, 61,
  14. 61, 61, 61, 71, 71, 71, 71, 81, 81, 81, 81, 91, 91, 91, 91, 101,
  15. 101, 101, 101 };
  16. int P_SZ = 136;// 定义一副麻将牌的张数
  17. int mj_q[] = new int[P_SZ];// 用于回收弃掉的牌
  18. int B = 0;// 发牌位置标记
  19. int Q = 0;// 回收弃牌位置标记

  20. public paidui() {
  21. // 构造函数用于初始化牌堆信息
  22. for (int i = 0; i < P_SZ; i++) {
  23. mj_q[i] = 0; // 初始化弃牌牌堆
  24. }
  25. }

  26. public int xipai() {
  27. // 提供一个洗牌方法
  28. Random random = new Random();// 随机产生对象的对象
  29. for (int i = 0; i < P_SZ; i++) {
  30. // 随机产生一个下标值如果和当前下表不等则交换元素值,遍历素组后就生成了一个随机打乱的牌堆数组了
  31. int j = random.nextInt(P_SZ);
  32. if (i != j) {
  33. int a;
  34. a = mj[i];
  35. mj[i] = mj[j];
  36. mj[j] = a;
  37. }
  38. }
  39. return 0;
  40. }

  41. public int fapai() {
  42. // 提供一个发牌方法
  43. if (B >= P_SZ)
  44. return 0;// 牌已经发完此局流局
  45. int pai = mj[B]; // 返回当前牌堆顶部的第一张牌
  46. B++;// 牌堆顶部指针下移一位
  47. return pai;
  48. }

  49. public int huishou(int pai) {
  50. // 提供一个回收弃牌的方法
  51. if(Q<P_SZ) mj_q[Q]=pai;
  52. return 0;
  53. }

  54. public int[] get_qipai() {
  55. // 提供一个返回弃牌牌堆信息的方法
  56. return mj_q;
  57. }

  58. }

  59. paizuo.java
  60. //牌桌类这是麻将框架的最上层
  61. public class paizuo {

  62. // 一个牌桌应该包含的所有属性
  63. guizhe GZ=new guizhe();// 一个游戏规则
  64. paidui PD=new paidui();// 一副麻将牌
  65. xuangshou XS1=new xuangshou();// 2个或4个选手
  66. xuangshou XS2=new xuangshou();
  67. //调试用
  68.     int XS1_SP[]=new int[15];
  69.     int XS2_SP[]=new int[15];
  70.    
  71. public int xipai() {
  72. // 牌桌提供一个洗牌并开局发牌的方法
  73. PD.xipai();
  74. for(int i=0;i<13;i++)
  75. {
  76. XS1.mopai(PD.fapai());
  77. XS2.mopai(PD.fapai());
  78. }
  79. return 0;
  80. }

  81. public int fapai() {
  82. // 牌桌提供一个发牌的方法
  83. return 0;
  84. }

  85. public int UI() {
  86. // 牌桌提供一个获取选手输入和显示当前牌局信息的方法(这里我只用控制台界面)
  87. XS1.zhengli();
  88. XS2.zhengli();
  89. XS1_SP=XS1.get_SP();
  90. XS2_SP=XS2.get_SP();
  91. System.out.print("选手一初始化的手牌信息为:\n");
  92. for(int i=0;i<13;i++){
  93. print(XS1_SP[i]);
  94. }
  95. System.out.print("\n\n");
  96. System.out.print("选手二初始化的手牌信息为:\n");
  97. for(int i=0;i<13;i++){
  98. print(XS2_SP[i]);
  99. }
  100. return 0;
  101. }

  102. public int print(int P) {
  103. // 提供一个打印牌面信息的方法
  104. switch (P) {
  105. case 11:
  106. System.out.print("一万 ");
  107. break;
  108. case 12:
  109. System.out.print("二万 ");
  110. break;
  111. case 13:
  112. System.out.print("三万 ");
  113. break;
  114. case 14:
  115. System.out.print("四万 ");
  116. break;
  117. case 15:
  118. System.out.print("五万 ");
  119. break;
  120. case 16:
  121. System.out.print("六万 ");
  122. break;
  123. case 17:
  124. System.out.print("七万 ");
  125. break;
  126. case 18:
  127. System.out.print("八万 ");
  128. break;
  129. case 19:
  130. System.out.print("九万 ");
  131. break;

  132. case 21:
  133. System.out.print("一筒 ");
  134. break;
  135. case 22:
  136. System.out.print("二筒 ");
  137. break;
  138. case 23:
  139. System.out.print("三筒 ");
  140. break;
  141. case 24:
  142. System.out.print("四筒 ");
  143. break;
  144. case 25:
  145. System.out.print("五筒 ");
  146. break;
  147. case 26:
  148. System.out.print("六筒 ");
  149. break;
  150. case 27:
  151. System.out.print("七筒 ");
  152. break;
  153. case 28:
  154. System.out.print("八筒 ");
  155. break;
  156. case 29:
  157. System.out.print("九筒 ");
  158. break;

  159. case 31:
  160. System.out.print("一条 ");
  161. break;
  162. case 32:
  163. System.out.print("二条 ");
  164. break;
  165. case 33:
  166. System.out.print("三条 ");
  167. break;
  168. case 34:
  169. System.out.print("四条 ");
  170. break;
  171. case 35:
  172. System.out.print("五条 ");
  173. break;
  174. case 36:
  175. System.out.print("六条 ");
  176. break;
  177. case 37:
  178. System.out.print("七条 ");
  179. break;
  180. case 38:
  181. System.out.print("八条 ");
  182. break;
  183. case 39:
  184. System.out.print("九条 ");
  185. break;

  186. case 41:
  187. System.out.print("東风 ");
  188. break;
  189. case 51:
  190. System.out.print("西风 ");
  191. break;
  192. case 61:
  193. System.out.print("南风 ");
  194. break;
  195. case 71:
  196. System.out.print("北风 ");
  197. break;
  198. case 81:
  199. System.out.print("红中 ");
  200. break;
  201. case 91:
  202. System.out.print("发财 ");
  203. break;
  204. case 101:
  205. System.out.print("白板 ");
  206. break;
  207. default:
  208. ;
  209. }
  210. return 0;
  211. }

  212. }

  213. majiang_main.java
  214. //调试用入口类
  215. public class majiang_main {
  216. public static void main(String[] args) {
  217. paizuo PZ=new paizuo();
  218. PZ.xipai();
  219. PZ.UI();
  220.         
  221. }

  222. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表