找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5408|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

麻將游戲框架搭好(調(diào)試AI用)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:72008 發(fā)表于 2015-1-11 19:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. paidui.java
  2. mport java.util.Random;

  3. //牌堆類用來(lái)創(chuàng)建一副麻將牌
  4. public class paidui {
  5. // 定義一副(新溝本地晃晃帶東南西北分)麻將牌:1*表示萬(wàn),2*表示筒,3*表示條,4*表示東,5*表示南
  6. // 6*表示西,7*表示北,8*表示中,9*表示發(fā)財(cái),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;// 定義一副麻將牌的張數(shù)
  17. int mj_q[] = new int[P_SZ];// 用于回收棄掉的牌
  18. int B = 0;// 發(fā)牌位置標(biāo)記
  19. int Q = 0;// 回收棄牌位置標(biāo)記

  20. public paidui() {
  21. // 構(gòu)造函數(shù)用于初始化牌堆信息
  22. for (int i = 0; i < P_SZ; i++) {
  23. mj_q[i] = 0; // 初始化棄牌牌堆
  24. }
  25. }

  26. public int xipai() {
  27. // 提供一個(gè)洗牌方法
  28. Random random = new Random();// 隨機(jī)產(chǎn)生對(duì)象的對(duì)象
  29. for (int i = 0; i < P_SZ; i++) {
  30. // 隨機(jī)產(chǎn)生一個(gè)下標(biāo)值如果和當(dāng)前下表不等則交換元素值,遍歷素組后就生成了一個(gè)隨機(jī)打亂的牌堆數(shù)組了
  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. // 提供一個(gè)發(fā)牌方法
  43. if (B >= P_SZ)
  44. return 0;// 牌已經(jīng)發(fā)完此局流局
  45. int pai = mj[B]; // 返回當(dāng)前牌堆頂部的第一張牌
  46. B++;// 牌堆頂部指針下移一位
  47. return pai;
  48. }

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

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

  58. }

  59. paizuo.java
  60. //牌桌類這是麻將框架的最上層
  61. public class paizuo {

  62. // 一個(gè)牌桌應(yīng)該包含的所有屬性
  63. guizhe GZ=new guizhe();// 一個(gè)游戲規(guī)則
  64. paidui PD=new paidui();// 一副麻將牌
  65. xuangshou XS1=new xuangshou();// 2個(gè)或4個(gè)選手
  66. xuangshou XS2=new xuangshou();
  67. //調(diào)試用
  68.     int XS1_SP[]=new int[15];
  69.     int XS2_SP[]=new int[15];
  70.    
  71. public int xipai() {
  72. // 牌桌提供一個(gè)洗牌并開(kāi)局發(fā)牌的方法
  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. // 牌桌提供一個(gè)發(fā)牌的方法
  83. return 0;
  84. }

  85. public int UI() {
  86. // 牌桌提供一個(gè)獲取選手輸入和顯示當(dāng)前牌局信息的方法(這里我只用控制臺(tái)界面)
  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. // 提供一個(gè)打印牌面信息的方法
  104. switch (P) {
  105. case 11:
  106. System.out.print("一萬(wàn) ");
  107. break;
  108. case 12:
  109. System.out.print("二萬(wàn) ");
  110. break;
  111. case 13:
  112. System.out.print("三萬(wàn) ");
  113. break;
  114. case 14:
  115. System.out.print("四萬(wàn) ");
  116. break;
  117. case 15:
  118. System.out.print("五萬(wàn) ");
  119. break;
  120. case 16:
  121. System.out.print("六萬(wàn) ");
  122. break;
  123. case 17:
  124. System.out.print("七萬(wàn) ");
  125. break;
  126. case 18:
  127. System.out.print("八萬(wàn) ");
  128. break;
  129. case 19:
  130. System.out.print("九萬(wàn) ");
  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("東風(fēng) ");
  188. break;
  189. case 51:
  190. System.out.print("西風(fēng) ");
  191. break;
  192. case 61:
  193. System.out.print("南風(fēng) ");
  194. break;
  195. case 71:
  196. System.out.print("北風(fēng) ");
  197. break;
  198. case 81:
  199. System.out.print("紅中 ");
  200. break;
  201. case 91:
  202. System.out.print("發(fā)財(cái) ");
  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. //調(diào)試用入口類
  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. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表