setHandCard_tianhu.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. //////设置手牌的数值说明
  2. ////// 11, 12, 13, 14, 15, 16, 17, 18, 19, // 分别代表1~9筒
  3. ////// 21, 22, 23, 24, 25, 26, 27, 28, 29, // 分别代表1~9万
  4. ////// 31, 32, 33, 34, 35, 36, 37, 38, 39, // 分别代表1~9条
  5. ////// 41, 42, 43, 44, // 分别代表1~9东南西北风
  6. ////// 51, 52, 53, // 分别代表中发白字
  7. ////// 61, 62, 63, 64, 65, 66, 67, 68, //TL++,花 分别为春夏秋冬梅兰竹菊
  8. //////*****************所有标点符号必须使用英文的标点符号************
  9. 'use strict';
  10. var quick = require('quick-pomelo');
  11. var P = quick.Promise;
  12. // 构造方法
  13. var SetHandCard = function () {
  14. // this.app = table.game.app;
  15. };
  16. SetHandCard.cardGroupIndex = 0///////设置第几组手牌
  17. SetHandCard.setCardByPeople = [ /////// =true时手动设置百搭牌 =false时为系统自动设置百搭牌
  18. // //测试无红中加一码
  19. // {///// 复制起点 如果想一次性设置很多局的发牌就从此行开始复制哦
  20. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  21. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  22. // handCard:[
  23. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  24. // [11,11,11,12,12,12,12,13,14,15,15,15,39,38],
  25. // [11,11,11,12,12,12,12,13,14,15,15,15,39],
  26. // [11,11,11,12,12,12,12,13,14,15,15,15,39],
  27. // [11,11,11,12,12,12,12,13,14,15,15,15,51]
  28. // ],
  29. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  30. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  31. // ],
  32. // },
  33. // {///// 复制起点 新算法性能测试
  34. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  35. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  36. // handCard:[
  37. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  38. // [51,12,13,14,15,16,18,19,21,22,24,25,36,31],
  39. // [51,51,12,13,14,15,16,18,19,24,25,26,29],
  40. // [21,21,21,21,21,21,21,21,21,21,21,21,21],
  41. // [21,21,21,21,21,21,21,21,21,21,21,21,21]
  42. // ],
  43. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  44. // 51,51,51,32,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  45. // ],
  46. // },
  47. // {///// 复制起点 算法测试重点
  48. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  49. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  50. // handCard:[
  51. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  52. // [51,51,12,15,16,17,18,25,26,27,28,28,28,15],
  53. // [11,12,13,14,15,16,17,18,19,35,35,25,25],
  54. // [39,29,51,12,12,12,12,13,14,15,15,15,51],
  55. // [11,11,11,12,12,12,12,13,14,15,15,15,51]
  56. // ],
  57. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  58. // 51,51,51,32,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  59. // ],
  60. // },
  61. // {///// 复制起点 算法测试
  62. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  63. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  64. // handCard:[
  65. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  66. // [51,51,11,12,13,22,23,24,34,35,36,37,37,32],
  67. // [11,12,13,14,15,16,17,18,19,35,35,25,25],
  68. // [39,29,51,12,12,12,12,13,14,15,15,15,51],
  69. // [11,11,11,12,12,12,12,13,14,15,15,15,51]
  70. // ],
  71. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  72. // 51,51,51,32,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  73. // ],
  74. // },
  75. // {///// 复制起点 算法测试
  76. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  77. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  78. // handCard:[
  79. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  80. // [51,11,24,25,26,27,28,29,31,33,34,36,39,35],
  81. // [11,12,13,14,15,16,17,18,19,35,35,25,25],
  82. // [39,29,51,12,12,12,12,13,14,15,15,15,51],
  83. // [11,11,11,12,12,12,12,13,14,15,15,15,51]
  84. // ],
  85. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  86. // 51,51,51,32,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  87. // ],
  88. // },
  89. // {///// 复制起点 算法测试
  90. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  91. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  92. // handCard:[
  93. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  94. // [22,23,24,24,27,28,31,32,33,33,35,35,35,38],
  95. // [11,12,13,14,15,16,17,18,19,35,35,25,25],
  96. // [39,29,51,12,12,12,12,13,14,15,15,15,51],
  97. // [11,11,11,12,12,12,12,13,14,15,15,15,51]
  98. // ],
  99. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  100. // 51,51,51,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  101. // ],
  102. // },
  103. // {///// 复制起点 算法测试
  104. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  105. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  106. // handCard:[
  107. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  108. // [29,29,29,29,51,51,51,51,51,32,32,32,32,51],
  109. // [11,12,13,14,15,16,17,18,19,35,35,25,25],
  110. // [51,51,51,12,12,12,12,13,14,15,15,15,51],
  111. // [11,11,11,12,12,12,12,13,14,15,15,15,51]
  112. // ],
  113. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  114. // 51,51,51,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  115. // ],
  116. // },
  117. // {///// 复制起点 算法测试
  118. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  119. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  120. // handCard:[
  121. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  122. // [51,51,14,17,18,22,22,22,23,25,14,35,36,37],
  123. // // [51,15,15,23,24,25,27,27,28,28,29,35,36,37],
  124. // [51,12,13,14,17,17,22,23,35,36,37,38,39],
  125. // [29,15,18,22,51,51,51,51,51,51,25,28,32],
  126. // [11,12,13,14,15,16,17,18,19,35,35,25,25]
  127. // ],
  128. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  129. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  130. // ],
  131. // },//////复制结束点
  132. // {///// 复制起点 算法测试
  133. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  134. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  135. // handCard:[
  136. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  137. // [51,51,51,23,24,25,27,29,28,29,29,35,36,37],
  138. // // [51,15,15,23,24,25,27,27,28,28,29,35,36,37],
  139. // [51,12,13,14,17,17,22,23,35,36,37,38,39],
  140. // [29,15,18,22,51,51,51,51,51,51,25,28,32],
  141. // [11,12,13,14,15,16,17,18,19,35,35,25,25]
  142. // ],
  143. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  144. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  145. // ],
  146. // },//////复制结束点
  147. // {///// 复制起点 算法测试 可以用这个改前端提示框
  148. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  149. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  150. // handCard:[
  151. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  152. // [51,51,15,16,18,24,25,26,26,27,28,32,33,39],
  153. // [51,12,13,14,17,17,22,23,35,36,37,38,39],
  154. // [29,17,18,22,51,51,51,51,51,51,25,28,32],
  155. // [11,12,13,14,15,16,17,18,19,35,35,25,25]
  156. // ],
  157. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  158. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  159. // ],
  160. // },//////复制结束点
  161. // {///// 复制起点 算法测试
  162. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  163. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  164. // handCard:[
  165. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  166. // [51,15,15,23,24,25,27,29,28,28,29,35,36,37],
  167. // // [51,15,15,23,24,25,27,27,28,28,29,35,36,37],
  168. // [51,12,13,14,17,17,22,23,35,36,37,38,39],
  169. // [29,15,18,22,51,51,51,51,51,51,25,28,32],
  170. // [11,12,13,14,15,16,17,18,19,35,35,25,25]
  171. // ],
  172. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  173. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  174. // ],
  175. // },//////复制结束点
  176. // {///// 复制起点 如果想一次性设置很多局的发牌就从此行开始复制哦
  177. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  178. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  179. // handCard:[
  180. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  181. // [12,12,12,51,51,51,51,51,51,12,25,28,32,35],
  182. // [12,12,14,14,51,51,51,51,51,51,25,25,31],
  183. // [12,15,18,22,51,51,51,51,51,51,25,28,32],
  184. // [11,12,13,14,15,16,17,18,19,35,35,25,25]
  185. // ],
  186. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  187. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  188. // ],
  189. // },//////复制结束点
  190. // {///// 复制起点 如果想一次性设置很多局的发牌就从此行开始复制哦
  191. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  192. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  193. // handCard:[
  194. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  195. // [12,12,12,51,51,51,51,51,51,12,23,27,33,37],
  196. // [12,12,14,14,51,51,51,51,51,51,25,25,31],
  197. // [12,15,18,22,51,51,51,51,51,51,25,28,32],
  198. // [11,12,13,14,15,16,17,18,19,35,35,25,25]
  199. // ],
  200. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  201. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  202. // ],
  203. // },//////复制结束点
  204. // // },//////复制结束点
  205. // //测试性能
  206. // {///// 复制起点 如果想一次性设置很多局的发牌就从此行开始复制哦
  207. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  208. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  209. // handCard:[
  210. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  211. // [12,15,18,51,51,51,51,51,51,32,25,28,32,35],
  212. // [12,12,14,14,51,51,51,51,51,51,25,25,31],
  213. // [12,15,18,22,51,51,51,51,51,51,25,28,32],
  214. // [12,13,14,14,51,51,51,51,51,51,25,25,27]
  215. // ],
  216. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  217. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  218. // ],
  219. // },//////复制结束点
  220. // //测试性能
  221. // {///// 复制起点 如果想一次性设置很多局的发牌就从此行开始复制哦
  222. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  223. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  224. // handCard:[
  225. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  226. // [12,15,18,51,51,51,51,51,51,32,25,28,32,35],
  227. // [12,12,14,14,51,15,16,17,31,25,25,25,31],
  228. // [12,12,14,14,51,15,16,17,31,25,25,25,31],
  229. // [12,12,14,14,51,15,16,17,31,25,25,25,31]
  230. // ],
  231. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  232. // 35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,35,38,
  233. // ],
  234. // },//////复制结束点
  235. //测试音效
  236. {///// 复制起点 如果想一次性设置很多局的发牌就从此行开始复制哦
  237. baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  238. isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  239. handCard:[
  240. //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  241. [51,51,51,12,12,12,13,13,13,14,14,14,39,31],
  242. [31,34,32,35,37,39,21,24,22,25,27,29,11],
  243. [11,12,13,17,18,19,24,25,26,33,33,33,39],
  244. [15,15,15,22,23,24,22,22,22,34,34,37,38]
  245. ],
  246. leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  247. // 12,14,27,32,32,13,27,25
  248. 11, 12, 13, 14, 15, 16, 17, 18, 19, // 筒
  249. 21, 22, 23, 24, 25, 26, 27, 28, 29, // 万
  250. 31, 32, 33, 34, 35, 36, 37, 38, 39, // 条
  251. ],
  252. },//////复制结束点
  253. // {///// 复制起点 如果想一次性设置很多局的发牌就从此行开始复制哦
  254. // baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  255. // isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  256. // handCard:[
  257. // //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  258. // // [51,51,51,12,12,12,13,13,13,14,14,14,39,51],
  259. // [51,51,51,12,12,12,12,13,14,14,14,14,39,51],
  260. // [31,32,33,24,25,26,27,28,29,35,36,34,39],
  261. // [11,12,13,17,18,19,24,25,26,33,33,33,39],
  262. // [15,15,15,22,23,24,22,22,22,34,34,37,38]
  263. // ],
  264. // leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  265. // 12,14,27,32,32,13,27,25
  266. // ],
  267. // },//////复制结束点
  268. {///// 复制起点 如果想一次性设置很多局的发牌就从此行开始复制哦
  269. baida:25 ,///////设置本局百搭牌为1筒 23表3万 37表7条 41表东 51表红中 61表春
  270. isOnlySetZJSP:true ,/////// =true时只设置庄家手牌 =false时设置所有玩家的手牌
  271. handCard:[
  272. //////庄家的手牌写在下面这行,设置数值说明是最上面的那几行
  273. // [51,51,51,12,12,12,13,13,13,14,14,14,39,51],
  274. [51,51,51,12,12,12,12,13,14,14,14,14,39,51],
  275. [51,51,51,51,51,51,51,51,12,15,18,22,25],
  276. [51,51,51,51,51,51,24,25,26,33,33,33,39],
  277. [15,15,15,22,23,24,22,22,22,34,34,37,38]
  278. ],
  279. leftCard:[///////除了所有玩家手牌之后剩余的所有牌 也是跳底之后的发牌顺序
  280. 32,35,38,32,35,38,32,35,38,32,35,38,32,35,38,
  281. ],
  282. },//////复制结束点
  283. ]
  284. // 导出类
  285. module.exports = SetHandCard;
  286. // 原型对象
  287. var proto = SetHandCard.prototype;
  288. // ////设置首次发牌 返回一副假洗(相当于人工洗过)的牌
  289. proto.getSCFP = function () {
  290. if(!SetHandCard.setCardByPeople[SetHandCard.cardGroupIndex]) return/////未人工设置的话就返回空
  291. let cardPool = []
  292. let setItem = SetHandCard.setCardByPeople[SetHandCard.cardGroupIndex]
  293. let hancard1 = setItem.handCard[0]
  294. let hancard2 = setItem.handCard[1]
  295. let hancard3 = setItem.handCard[2]
  296. let hancard4 = setItem.handCard[3]
  297. ///////拼接各个玩家的手牌
  298. cardPool = cardPool.concat(hancard1)
  299. cardPool = cardPool.concat(hancard2)
  300. cardPool = cardPool.concat(hancard3)
  301. cardPool = cardPool.concat(hancard4)
  302. //////拼接整副牌剩下的牌
  303. cardPool = cardPool.concat(setItem.leftCard)
  304. return cardPool
  305. };