目录结构调整
This commit is contained in:
@@ -0,0 +1,804 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user