Files
2026-02-04 23:47:45 +08:00

805 lines
23 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var panduan = function(shangjia,chupai){ //牌型,手牌,出的牌
var yici = 0;
var can_play = 1;//判断出的牌是否能出
var paixing = [];//本次出牌牌型
var chupaipx0 = [];//同算法
var shangjiapai = [];//上家出的牌
var sjpshuzu = [];//上家的牌数组
var cpshuzu = [];//本次出牌数组
var zuidazha = 0;
var shangjiapx = [];
if (shangjia) {
if ( shangjia.length>0) {
shangjiapx = shangjia[0];
shangjiapai = game.xs_dapai[game.chu];
}
}
if ( game.people == 2) {//根据人数判断最大的炸
zuidazha = 14;
} else {
zuidazha = 15;
}
cpshuzu = cls_aset2_gp.CardIdsToCards(gp.pai, chupai);//获取打出牌的11位数组牌
cls_card2_gp.SortCardList(cpshuzu);//从小到大排序牌(以下都经过排序)
chupai = cls_aset2_gp.CardsToCardIds(cpshuzu);//从小到大排序出牌的ID以下都经过排序
chupaipx0=cls_card2_gp.GetMaxCardTypeByCardList(cpshuzu, 0);////返回"同"最多的最大牌型(如果"同"相同则取"顺"最多的,如果"顺"也相同则取"值"最大的)
sjpshuzu = cls_aset2_gp.CardIdsToCards(gp.pai, shangjiapai);
paixing=chupaipx0[0];
if(chupaipx0[0][0]==chupai.length && chupaipx0[0][0]<5)
{
paixing=chupaipx0[0];//同
}else if(chupaipx0[0][1] == chupai.length && chupai.length>=5)
{
paixing=chupaipx0[0];//顺子
}else if(chupaipx0[0][0]==2 && chupaipx0[1].length==chupai.length)
{
paixing=chupaipx0[0];//连对
}else if(chupaipx0[0][0]==3&&chupaipx0[0][1]>1&&chupai.length==chupaipx0[0][1]*5 && chupaipx0[1][chupaipx0[1].length-1][4] != 15){
paixing=chupaipx0[0];//飞机
}else if(chupaipx0[0][0]==3&&chupaipx0[0][1]>1&&chupai.length==chupaipx0[0][1]*3 && chupaipx0[1][chupaipx0[1].length-1][4] != 15){
paixing=chupaipx0[0];//飞机
}else if(chupaipx0[0][0]==3&&chupaipx0[0][1]==1&&chupai.length==chupaipx0[0][1]*5){
paixing=chupaipx0[0];//3带二
}else if(chupaipx0[0][0]==4&&chupaipx0[0][1]==1&&chupai.length==5){
paixing=chupaipx0[0];//3带二
paixing[0]=chupaipx0[0][0]-1;
}else if(chupaipx0[0][0]==3&&chupaipx0[0][1]>=1&&chupai.length <= chupaipx0[0][1]*5 && chupai.length >= chupaipx0[0][1]*3 && game.pai.length == chupai.length){
paixing=chupaipx0[0];//3带1
}else if (chupaipx0[0][0] == 4 && chupaipx0[0][1] >= 1 && chupai.length > 4) {//有个炸弹
if (chupai.length !=game.pai.length) {
if (chupai.length == 10) {//10张牌
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,2], [0,0,1,1], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,2];
}else {
can_play = 0;//不能出
yici++;
}
}else if (chupai.length == 15) {//15张牌
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,3], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,3];
}else {
can_play = 0;//不能出
yici++;
}
}
else {
can_play = 0;//不能出
yici++;
}
}else{
if (chupai.length >6) {//多余6张牌
if(chupai.length <=9){//飞机 2
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,2], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,2];
}else {
can_play = 0;//不能出
yici++;
}
}
else if (chupai.length <=12 && chupai.length >9) {//飞机 3
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,3], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,3];
}else {
can_play = 0;//不能出
yici++;
}
}
else if (chupai.length <= 15) {//飞机 3.4
if (shangjiapx[0] == 3 && shangjiapx[1] == 4) {//飞机 4
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,4], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,4];
}else {
can_play = 0;//不能出
yici++;
}
}else if(shangjiapx[0] == 3 && shangjiapx[1] == 3) {//飞机 3
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,3], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,3];
}else {
can_play = 0;//不能出
yici++;
}
}else {
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,3], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,3];
}else {
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,4], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,4];
}else {
can_play = 0;//不能出
yici++;
}
}
}
}else if (chupai.length > 15) {//飞机 3.4
if (shangjiapx[0] == 3 && shangjiapx[1] == 4) {//飞机 4
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,4], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,4];
}else {
can_play = 0;//不能出
yici++;
}
}else if(shangjiapx[0] == 3 && shangjiapx[1] == 5) {//飞机 3
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,5], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,5];
}else {
can_play = 0;//不能出
yici++;
}
}else {
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,5], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,5];
}else {
var feiji = cls_card2_gp.GetCardListByCardTypeA(cls_card2_gp.SortCardList(cpshuzu,[0,0]),
// 牌的类型 [所有可能,小到大,拆牌,取所有情况] 起始牌
[3,4], [0,0,1,0], null ,null);
if(feiji.length){//如果有就是飞机
paixing = [3,4];
}else {
can_play = 0;//不能出
yici++;
}
}
}
}
else {
can_play = 0;//不能出
yici++;
}
}else {
can_play = 0;//不能出
yici++;
}
}
}
else
{
can_play = 0;//不能出
yici++;
}
if( shangjiapx && shangjiapx.length!=0)//上家出了牌
{
if(chupai.length != shangjiapai.length)//判断出的牌的长度相同
{
can_play = 0;//不能出
yici++;
}
if(paixing[0]!=shangjiapx[0]&&paixing[1]!=shangjiapx[1]&&yici == 0)//判断牌型是否与上家相同
{
can_play = 0;//不能出
yici++;
}
if(paixing[0]==shangjiapx[0]&&paixing[1]==shangjiapx[1]&&yici == 0 && shangjiapai.length == paixing[0]*paixing[1])//未带牌的情况
{
//判断牌型相同的第一张的算法大小
if(cls_card2_gp.GetArithN(cpshuzu[0]) >= cls_card2_gp.GetArithN(sjpshuzu[0]) + 1)//
{
can_play = 1;//能出
}
else
{
can_play = 0;//不能出
yici++;
}
}
else if(paixing[0]==shangjiapx[0]&&paixing[1]==shangjiapx[1] &&paixing[0]==3 &&shangjiapai.length > shangjiapx[0]*shangjiapx[1])//3带2比大小
{
//判断牌型相同的第一张的算法大小
if (game.pai.length == chupai.length ) {
if(cls_card2_gp.GetArithN(chupaipx0[1][0]) >= cls_card2_gp.GetArithN(cls_card2_gp.GetMaxCardTypeByCardList(sjpshuzu, 0)[1][0]) + 1)
{
can_play = 1;//能出
}
else
{
can_play = 0;//不能出
yici++;
}
}else {
if(chupai.length != shangjiapai.length)//判断出的牌的长度相同
{
can_play = 0;//不能出
yici++;
}else {
if(cls_card2_gp.GetArithN(chupaipx0[1][0]) >= cls_card2_gp.GetArithN(cls_card2_gp.GetMaxCardTypeByCardList(sjpshuzu, 0)[1][0]) + 1)
{
can_play = 1;//能出
}
else
{
can_play = 0;//不能出
yici++;
}
}
}
}
}
if(chupai.length == 2&&yici == 0)//长度为2只能为对子
{
if(cls_card2_gp.GetArithN(cpshuzu[0]) != cls_card2_gp.GetArithN(cpshuzu[1]))
{
can_play = 0;//不能出
yici++;
}
}
if(yici == 0)
{
for(var er = 0;er<chupai.length;er++)
{
if(chupaipx0[0][0]==2&&chupaipx0[0][1]>=2)//大于等于3的牌组中 如果有2 则不能出(顺子和连对)
{
if(cls_card2_gp.GetArithN(cpshuzu[er]) == 15)
{
can_play = 0;//不能出
yici++;
}
}
else if(chupaipx0[0][0] == 1&& chupaipx0[1].length == chupai.length && chupai.length >= 5)
{
if(cls_card2_gp.GetArithN(cpshuzu[er]) == 15)
{
can_play = 0;//不能出
yici++;
}
}
}
}
if(shangjiapx && shangjiapx.length!=0)//上家出牌
{
if(chupai.length == 4)//判断炸弹是否能出
{
var s=0;
var zhadan = 0;
for(var aaa = 0;aaa<=chupai.length - 1;aaa++)
{
if(cls_card2_gp.GetArithN(cpshuzu[0])==cls_card2_gp.GetArithN(cpshuzu[aaa]))
{
s++;
{
if(s==chupai.length)
{ //下家炸弹要比上家大或者比上家长
if (laizi_mun == 0) {//出真炸弹
if((cls_card2_gp.GetArithN(cpshuzu[0]) <= cls_card2_gp.GetArithN(sjpshuzu[0]))&&shangjiapx[0]==4&&shangjiapx[1] == 1)
{
if (game.laizi_bian[game.chu].length == 0) {
can_play = 0;//不能出,炸弹大小小于上家
yici++;
} else {
can_play = 1;
}
}else {
can_play = 1;
}
} else {//出假炸弹
if (shangjiapx[0]==4&&shangjiapx[1] == 1) {//上家也是炸
if((cls_card2_gp.GetArithN(cpshuzu[0]) > cls_card2_gp.GetArithN(sjpshuzu[0])))
{
if (game.laizi_bian[game.chu].length == 0) {//上家真炸弹
can_play = 0;//不能出,炸弹大小小于上家
yici++;
} else {
can_play = 1;
}
}else {
can_play = 0;//不能出,炸弹大小小于上家
yici++;
}
} else {
can_play = 1;
}
}
}
}
}
}
}
if(chupai.length==3)//判断炸弹(无视牌型)
{
var s=0;
for(var aaa = 0;aaa<=chupai.length - 1;aaa++)
{
if(cls_card2_gp.GetArithN(cpshuzu[0])==cls_card2_gp.GetArithN(cpshuzu[aaa]))
{
s++;
{
if(s==chupai.length && cls_card2_gp.GetArithN(cpshuzu[0]) == zuidazha)//判断为最大的炸
{
if (shangjiapx[0]==4&&shangjiapx[1] == 1 && cls_card2_gp.GetArithN(sjpshuzu[0]) == zuidazha) {//上家出了最大炸
can_play = 0;//不能出,炸弹大小小于上家
yici++;
}else {
if (shangjiapx[0]==4&&shangjiapx[1] == 1 && game.laizi_bian[game.chu].length == 0 && laizi_mun > 0){
can_play = 0;//不能出,炸弹大小小于上家
yici++;
}else {
can_play = 1;
}
}
}
}
}
}
}
}
if(chupai.length == 4)//判断炸弹是否能出
{
var s=0;
var zhadan = 0;
for(var aaa = 0;aaa<=chupai.length - 1;aaa++)
{
if(cls_card2_gp.GetArithN(cpshuzu[0])==cls_card2_gp.GetArithN(cpshuzu[aaa]))
{
s++;
{
if(s==chupai.length)
{
if(cls_card2_gp.GetArithN(cpshuzu[0]) == 15)
{
can_play = 0;//不能出,
yici++;
}else if(cls_card2_gp.GetArithN(cpshuzu[0]) == 14 && game.people == 2){
can_play = 0;//不能出,
yici++;
}
}
}
}
}
}
var cppx = [];
cppx[0] = chupai;
cppx[1] = paixing;
cppx[2] = chupaipx0[1];
if (can_play == 0 ) {
cppx[0]=[];
cppx[1] = [];
cppx[2] = [];
}else
{
var iqas = 0;
}
return cppx;
}
var pd_laizi = function(chupai,laizi){//出的牌id选的癞子牌
for(var a = 0;a<gp.pai.cardlist.length;a++)//改变A和2的算法大小
{
if(cls_card2_gp.GetNumber(gp.pai.cardlist[a])==1&&laizi == 14)
{
cls_card2_gp.SetArithN(gp.pai.cardlist[a],14);
}else if(cls_card2_gp.GetNumber(gp.pai.cardlist[a])==2&&laizi == 15){
cls_card2_gp.SetArithN(gp.pai.cardlist[a],15);
}
}
if (laizi == 1) {
laizi = 14;
} else if (laizi == 2){
laizi = 15;
}
laizi_paizu = []; //存癞子的数组
laizi_mun = 0; //癞子数目
var pais = cls_aset2_gp.CardIdsToCards(gp.pai,chupai); //出的牌转数组
cls_card2.SortCardList(pais); //从小到大排序牌(以下都经过排序)
if (laizi == 0) {
return panduan(game.paixing,chupai)[0];
}
else {
var pai_s = cls_aset2.CardsToCardIds(pais);
var paiss = [];
var zdz =15;
laizi_weizhi = [];
for (var i = 0; i < pais.length; i++) { //出的牌中癞子数量以及位置
paiss[i] = cls_card2.GetArithN(pais[i]);
if (paiss[i] == laizi) {
laizi_mun ++;
laizi_weizhi.push(i);
}
}
if (laizi_mun == chupai.length) {
return panduan(game.paixing,chupai)[0];
} else {
switch (laizi_mun){
case 0:
var rr = cls_aset2.CardsToCardIds(pais)
return panduan(game.paixing,rr)[0];
break;
case 1:
var sz = [];
if ( game.people == 2) {
zdz =14;
}
for (var i = zdz; i >= 3; i--) {
cls_card2_gp.SetArithN(pais[laizi_weizhi[0]],i);
var rr = cls_aset2.CardsToCardIds(pais);
var keyichu = panduan(game.paixing,rr)[0];
var zd = panduan(game.paixing,rr)[1];
if(keyichu.length!=0)
{
sz.push([i]);
laizi_paizu[laizi_paizu.length]=[];
var ss = cls_aset2.CardIdsToCards(gp.pai,pai_s);
ss = cls_card2_gp.SortCardList(ss);
var uu = cls_aset2.CardsToCardIds(ss)
laizi_paizu[laizi_paizu.length-1] = laizi_paizu[laizi_paizu.length-1].concat(uu.slice());
if(zd[0] ==4 && chupai.length == 4){//如果为炸弹直接跳出
sz = [[i]];
laizi_paizu = [laizi_paizu[laizi_paizu.length-1]];
a = 0;
break ;
}
}
}
break;
case 2:
var sz = [];
if ( game.people == 2) {
zdz =14;
}
for (var a = zdz; a >= 3; a--) {
for (var b = zdz; b >= 3; b--) {
cls_card2_gp.SetArithN(pais[laizi_weizhi[0]],a);
cls_card2_gp.SetArithN(pais[laizi_weizhi[1]],b);
var rr = cls_aset2.CardsToCardIds(pais);
var keyichu = panduan(game.paixing,rr)[0];
var zd = panduan(game.paixing,rr)[1];
if(keyichu.length!=0)
{
sz.push([a,b]);
laizi_paizu[laizi_paizu.length]=[];
var ss = cls_aset2.CardIdsToCards(gp.pai,pai_s);
ss = cls_card2_gp.SortCardList(ss);
var uu = cls_aset2.CardsToCardIds(ss)
laizi_paizu[laizi_paizu.length-1] = laizi_paizu[laizi_paizu.length-1].concat(uu.slice());
if(zd[0] ==4 && chupai.length == 4){//如果为炸弹直接跳出
sz = [[a,b]];
laizi_paizu = [laizi_paizu[laizi_paizu.length-1]];
a = 0;
break ;
}
}
}
}
break;
case 3:
var sz = [];
if ( game.people == 2) {
zdz =14;
}
for (var c = zdz; c >= 3; c--) {
for (var a = zdz; a >= 3; a--) {
for (var b = zdz; b >= 3; b--) {
cls_card2_gp.SetArithN(pais[laizi_weizhi[0]],c);
cls_card2_gp.SetArithN(pais[laizi_weizhi[1]],a);
cls_card2_gp.SetArithN(pais[laizi_weizhi[2]],b);
var rr = cls_aset2.CardsToCardIds(pais);
var keyichu = panduan(game.paixing,rr)[0];
var zd = panduan(game.paixing,rr)[1];
if(keyichu.length!=0)
{
sz.push([c,a,b]);
laizi_paizu[laizi_paizu.length]=[];
var ss = cls_aset2.CardIdsToCards(gp.pai,pai_s);
ss = cls_card2_gp.SortCardList(ss);
var uu = cls_aset2.CardsToCardIds(ss)
laizi_paizu[laizi_paizu.length-1] = laizi_paizu[laizi_paizu.length-1].concat(uu.slice());
if(zd[0] ==4 && chupai.length == 4){//如果为炸弹直接跳出
sz = [[c,a,b]];
laizi_paizu = [laizi_paizu[laizi_paizu.length-1]];
a = 0;
break ;
}
}
}
}
}
break;
case 4:
var sz = [];
if ( game.people == 2) {
zdz =14;
}
for (var d = zdz; d >= 3; d--) {
for (var c = zdz; c >= 3; c--) {
for (var a = zdz; a >= 3; a--) {
for (var b = zdz; b >= 3; b--) {
cls_card2_gp.SetArithN(pais[laizi_weizhi[2]],d);
cls_card2_gp.SetArithN(pais[laizi_weizhi[1]],c);
cls_card2_gp.SetArithN(pais[laizi_weizhi[3]],a);
cls_card2_gp.SetArithN(pais[laizi_weizhi[0]],b);
var rr = cls_aset2.CardsToCardIds(pais);
var keyichu = panduan(game.paixing,rr)[0];
var zd = panduan(game.paixing,rr)[1];
if(keyichu.length!=0)
{
sz.push([d,c,a,b]);
laizi_paizu[laizi_paizu.length]=[];
var ss = cls_aset2.CardIdsToCards(gp.pai,pai_s);
ss = cls_card2_gp.SortCardList(ss);
var uu = cls_aset2.CardsToCardIds(ss)
laizi_paizu[laizi_paizu.length-1] = laizi_paizu[laizi_paizu.length-1].concat(uu.slice());
if(zd[0] ==4 && chupai.length == 4){//如果为炸弹直接跳出
sz = [[d,c,a,b]];
laizi_paizu = [laizi_paizu[laizi_paizu.length-1]];
a = 0;
break ;
}
}
}
}
}
}
break;
}
}
}
for(var a = 0;a<gp.pai.cardlist.length;a++)
{
if(cls_card2_gp.GetNumber(gp.pai.cardlist[a])==laizi){
cls_card2_gp.SetArithN(gp.pai.cardlist[a],laizi); //癞子算法还原
}
if ( laizi > 13 && laizi < 16) { //癞子为A和2
if(cls_card2_gp.GetNumber(gp.pai.cardlist[a])==laizi-13){
cls_card2_gp.SetArithN(gp.pai.cardlist[a],laizi); //癞子算法还原
}
}
}
for(var p = 0;p<sz.length;p++)
{
if(sz[p].length>1)
{
systemSort(sz[p]);
}
}
//console.log(sz);
shanchu = sz.distinct_t()[1];//癞子位置
shanchu_pai = sz.distinct_t()[0];//癞子牌型算法
jieguo_pai = [];
paipai = [];
for(var b=0;b<shanchu.length;b++)
{
for(var a=0;a<laizi_paizu.length;a++)//去掉多个癞子位置不同但结果相同的情况
{
if(shanchu[b] == a)
{
jieguo_pai.push(laizi_paizu[a]);
paipai.push(sz[a]);
}
}
}
if (jieguo_pai.length>1 ) {
for(var i = 0; i < jieguo_pai.length; i++){//改变后的可出牌
jieguo_pai_gai[i] = [];
for (var j = 0; j < jieguo_pai[i].length; j++) {
jieguo_pai_gai[i].push(jieguo_pai[i][j]);
}
}
for (var i = 0; i < jieguo_pai.length; i++) {//把癞子id换成改变后的
var yici = 0;
for (var a = 0; a < jieguo_pai[i].length; a++) {
if (jieguo_pai[i][a]%13+1 ==game.laizi ) {
jieguo_pai_gai[i][a]= (paipai[i][yici]-1)%13;
yici++;
}
}
}
var tongpaixing = [];
for (var i = 0; i < jieguo_pai_gai.length; i++ ) {
tongpaixing[i] = panduan(game.paixing,jieguo_pai_gai[i]);
tongpaixing[i].splice(0,1);
}
for (var i = 0; i < jieguo_pai_gai.length-1; i++) { //删除同类型的牌
if (tongpaixing.length>1 ) { //当牌型大于一的情况
for (var j = i+1;j<tongpaixing.length;j++) { //遍历所有的牌型 每一个都比较
if (tongpaixing[i][0][0] == tongpaixing[j][0][0] && tongpaixing[i][0][1] == tongpaixing[j][0][1]) { //牌型相同
if ( tongpaixing[i][1][0][4]>tongpaixing[j][1][0][4]) { //牌型大于后面的删除后面
jieguo_pai.splice(j,1);
paipai.splice(j,1);
tongpaixing.splice(j,1);
jieguo_pai_gai.splice(j,1);
i = -1;
break;
}else {//否则删除前面的
jieguo_pai.splice(i,1);
paipai.splice(i,1);
tongpaixing.splice(i,1);
jieguo_pai_gai.splice(i,1);
i = -1;
break;
}
}
}
}
}
}
return jieguo_pai;
}
Array.prototype.distinct_t = function() { //数组去重
var arr = this,
i,
obj = {},
result = [],
dd = [],
len = arr.length;
for(i = 0; i < arr.length; i++) {
if(!obj[arr[i]]) { //如果能查找到,证明数组元素重复了
obj[arr[i]] = 1;
result.push(arr[i]);
dd.push(i);
}
}
return [result,dd];
}
function systemSort(array) { //快速排序
return array.sort(function(a, b) {
return a - b;
});
}
Array.prototype.duplicate = function() { //数组中相同数tmp 有几个tem.length
var tmp = [];
this.concat().sort().sort(function(a, b) {
if(a == b && tmp.indexOf(a) === -1) tmp.push(a);
});
return tmp;
}
var gp_ui_duoxuan = function(kechu)
{
set_group(222,37,1,0,0);
set_group(223,37,0,0,0);
set_self(1145,21,160+100*kechu.length,0,0);
set_self(1145,20,160+75*kechu[0].length,0,0);
set_self(1145,18,640-get_self(1145,20)/2,0,0);
if (get_self(1145,20)>1290) {
set_self(1145,20,1290,0,0);
}
for (var i = 1152; i < 1186; i++) {
set_self(i,33,55,0,0);
}
var gbh_laizi = [[]]; //癞子为改编后牌组
var cishu = 0;
for (var i = 0; i < kechu.length; i++) {//把癞子id换成改变后的
var yici = 0;
for (var a = 0; a < kechu[i].length; a++) {
gbh_laizi[i][a]= kechu[i][a];
if (kechu[i][a]%13+1 ==game.laizi ) {
gbh_laizi[i][a]= paipai[i][yici]-1;
yici++;
}
}
for (var a=0;a<kechu.length;a++) {
for (var i=0;i<kechu[0].length;i++) {
var dxpaishu = kechu[0].length;
set_self(1152+dxpaishu*a+i,37,1,0,0);
set_self(1152+dxpaishu*a+i,43,kechu[a][i],0,0);
set_self(1152+dxpaishu*a+i,19,170+a*100,0,0);
set_self(1152+dxpaishu*a,18,610-kechu[0].length*73/2,0,0);
set_self(1152+dxpaishu*a+i,18,get_self(1152+dxpaishu*a,18,0,0,0)+73*i,0,0);
}
gp_ui_laizidx(kechu[a],paipai[a],1152+a*kechu[0].length);
set_self(1148+a,19,get_self(1152+dxpaishu*a,19)+40,0,0);
set_self(1148+a,18,get_self(1152+dxpaishu*a,18)+25,0,0);
set_self(1148+a,20,75*kechu[0].length,0,0);
set_self(1148+a,37,1,0,0);
}
}
}
var gp_ui_laizidx = function(pai,_paipai,diyz){ //癞子出牌变帧 pai为id paipai为该变后的算法大小 diyz为精灵id
var bianzhen = [];
var yici = 0;
for(var i=0;i<pai.length;i++)
{
bianzhen[i] = pai[i];
var da=pai[i]%13+1;
if ( da == game.laizi ) {
bianzhen[i] = _paipai[yici]-1;
yici++;
var xiao =bianzhen[i]%13+1
set_self(diyz+i,1,567,0,0); //癞子牌变帧
set_self(diyz+i,43,xiao,0,0);
}else {
set_self(diyz+i,1,53,0,0); //癞子牌变帧
set_self(diyz+i,43, bianzhen[i]+1,0,0);
set_self(diyz+i,37,1,0,0);
}
}
}