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

926 lines
18 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 putcar = function (cards_a,cards_b,boom_a,boom_b) { //2个人的牌 2个人的牌型
var paia = [];
var paib = [];
var daxiao_a = boom_a[1];
var daxiao_b = boom_b[1];
var feiji_a = [boom_a[2]];
var feiji_b = [boom_b[2]];
var list = [-1,0,0];
var paizu = [1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
for (var i = 0; i <cards_a.length; i++) {
paia.push(paizu[cards_a[i]-1]);
}
for (var i = 0; i <cards_b.length; i++) {
paib.push(paizu[cards_b[i]-1]);
}
//炸弹b个数 > 炸弹a个数
if (daxiao_a!=0||daxiao_b!=0) {
if (daxiao_b>daxiao_a) {
list[0]=1;
}
else if(daxiao_b==daxiao_a&&daxiao_a>0&&paia.length>=3&&paia.length<=8&&paia.length==paib.length){//炸弹b个数 = 炸弹a个数
list[0] = bicards(paia,paib);
}
else if(daxiao_b<daxiao_a){
list[0] = -1;
}
}
if (daxiao_a==daxiao_b&&daxiao_b==0) {//没有炸弹
if (boom_a[0]==boom_b[0]) {//牌型相同
if (boom_a[0]<5) {//如果不是3带类的牌型
if (paia.length==paib.length) {//长度相同 比较最大牌的大小
list [0] = bicards(paia,paib);
}else{//长度不同
list[0] = -1;
}
}
else{//如果是3带类的牌型则比较最大的三带
list[0] = bicards(feiji_a,feiji_b);
}
}else{//牌型不同
list[0] = -1;
}
}
return list;
}
var paixing_jinxian = function(pai_a,shengpai){ //获取牌型
var paizu = [1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
var pai = [];
for (var i = 0; i <pai_a.length; i++) {
pai.push(paizu[pai_a[i]-1]);
}
var cards = 0;
var boom_a = 0;
var feiji = 0;
boom_a = boom(pai);
if (boom_a==0) {
boom_a = k(pai,pai_a);
}
if (boom_a ==0) {
//3心王
if (pai.length==3) {
for (var i = 0; i < pai.length; i++) {
if (pai[i]==14||pai[i]==15) {
boom_a = 51;
}else{
boom_a = 0;
}
}
}
//4心王
if (pai.length==4) {
for (var i = 0; i < pai.length; i++) {
if (pai[i]==14||pai[i]==15) {
boom_a = 81;
}else{
boom_a = 0;
}
}
}
}
if (cards==0&&boom_a == 0) {
if (pai.length==1) {//单张
cards = 1;
}
}
if (cards==0&&boom_a == 0) {
if (pai.length==2) {//对子
if (pai[0]==pai[1]) {
cards =2;
}
}
}
if (cards==0&&boom_a == 0) {
if (pai.length>=5) {//一条龙
if (pai[pai.length-1]<=10&&pai[pai.length-1]>=3) {//第一张牌是3-10
if (pai[0]==1 ||pai[0]<=13) {//最后一张牌是A或者<= K
if (pai[0]!=2) {//最后一张牌不是2
if (pai[0]==1&&pai[1]==13) {//如果第一张牌是A
for (var i = 1; i < pai.length-1; i++) {
if (pai[i]-1 == pai[i+1]) {
cards = 3;
}
else{
cards = 0;
break;
}
}
}else{//如果第一张牌不是A
for (var i = 0; i < pai.length-1; i++) {
if (pai[i]-1 == pai[i+1]) {
cards = 3;
}
else{
cards = 0;
break;
}
}
}
}
}
}
}
}
if (cards ==0&&boom_a == 0) {
if (pai.length>=4&&pai.length%2==0) {//连对
//如果第一张牌<=k并且不等于2 最后一张牌>=3
if (pai[pai.length-1]>=3&&pai[0]<=13&&pai[0]!=2) {
for (var i = 0; i < pai.length; i++) {
if (pai[i] == pai[i+1]) {//这张牌=下一张牌
if (i+2 == pai.length) {//如果是最后一对牌
break;
}
if (pai[i]-1==pai[i+2]) {//这对牌=下一对牌
cards = 4;
i=i+1;
}
else if (pai[i]==1&&pai[i+2]==13) {//如果第一对是A 第二对是K
cards = 4;
i=i+1;
}
else{
cards = 0;
break;
}
}
else{
cards = 0;
break;
}
}
}
}
}
if (cards==0&&boom_a == 0) {
for (var i = 0; i < pai.length-1; i++) {
if (pai[i]==pai[i+1]&&pai[i]==pai[i+2]) {//3带
if (pai.length>5) {
for (var j =i; j<i+8;j++) {
if (pai[j]==1) {
pai[j] = 14;
}
}
}
if (pai[i]-1==pai[i+3]&&pai[i+3]==pai[i+4]&&pai[i+3]==pai[i+5]) { //2连飞
if (pai[i+3]-1==pai[i+6]&&pai[i+6]==pai[i+7]&&pai[i+7]==pai[i+8]) { //3连飞
if (pai[i+6]-1==pai[i+9]&&pai[i+9]==pai[i+10]&&pai[i+10]==pai[i+11]) { //4连飞
if (pai[i+9]-1==pai[i+12]&&pai[i+12]==pai[i+13]&&pai[i+13]==pai[i+14]) { //5连飞
if (pai[i+12]-1==pai[i+15]&&pai[i+15]==pai[i+16]&&pai[i+16]==pai[i+17]) { //6连飞
if (pai.length == 20 && shengpai > 0) {
cards = 8;
feiji = pai[i];
i = i + 11;
}
else if (pai.length == 25 && shengpai > 0) {
cards = 9;
feiji = pai[i];
i = i + 14;
}else{
cards = 10;
feiji = pai[i];
}
}
else{//5连飞
if (pai[i+14]==pai[i+15]) {
var surplus = pai.splice(i+15,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=25&&pai.length>=15&&cards<=9) {
if (pai.length == 15 && shengpai > 0) {
cards = 7;
feiji = pai[i];
i = i + 8;
}else
if (pai.length == 20 && shengpai > 0) {
cards = 8;
feiji = pai[i];
i = i + 11;
}else{
cards = 9;
feiji = pai[i];
i = i + 14;
}
}
}
}
else{//4连飞
if (pai[i+11]==pai[i+12]) {
var surplus = pai.splice(i+12,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=20&&pai.length>=12&&cards<=8) {
if (pai.length == 15 && shengpai > 0) {
cards = 7;
feiji = pai[i];
i = i+8;
}else{
cards = 8;
feiji = pai[i];
i = i+11;
}
}
}
}
else{//3连飞
if (pai[i+8]==pai[i+9]) {
var surplus = pai.splice(i+9,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=15&&pai.length>=9&&cards<=7) {
if (pai.length == 10 && shengpai > 0) {
cards = 6;
feiji = pai[i];
i = i+5;
}else{
cards = 7;
feiji = pai[i];
i = i+8;
}
}
}
}
else{//2连飞
if (pai[i+5]==pai[i+6]) {
var surplus = pai.splice(i+6,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=10&&pai.length>=6&&cards<=6) {
cards = 6;
feiji = pai[i];
i = i+5;
}
}
}
else{//3带
if (pai[i+2]==pai[i+3]) {
var surplus = pai.splice(i+3,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=5&&pai.length>=3&&cards<=5) {
cards = 5;
feiji = pai[i]
i = i+2;
}
}
}
else{//不是3带
if(cards<5){
cards = 0;
}
}
}
}
// 牌型 炸弹 飞机最大的一张牌
var car = [cards,boom_a,feiji];
return car;
}
var paixing_chongren = function(pai_a , shengpai){ //获取牌型
var paizu = [1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
var pai = [];
for (var i = 0; i <pai_a.length; i++) {
pai.push(paizu[pai_a[i]-1]);
}
var cards = 0;
var boom_a = 0;
var feiji = 0;
boom_a = boom(pai);
if (boom_a==0) {
boom_a = kz(pai,pai_a);
}
if (boom_a ==0) {
//3心王
if (pai.length==3) {
for (var i = 0; i < pai.length; i++) {
if (pai[i]==14||pai[i]==15) {
boom_a = 61;
}else{
boom_a = 0;
}
}
}
//4心王
if (pai.length==4) {
for (var i = 0; i < pai.length; i++) {
if (pai[i]==14||pai[i]==15) {
boom_a = 81;
}else{
boom_a = 0;
}
}
}
}
if (cards==0&&boom_a == 0) {
if (pai.length==1) {//单张
cards = 1;
}
}
if (cards==0&&boom_a == 0) {
if (pai.length==2) {//对子
if (pai[0]==pai[1]) {
cards =2;
}
}
}
if (cards==0&&boom_a == 0) {
if (pai.length>=5) {//一条龙
if (pai[pai.length-1]<=10&&pai[pai.length-1]>=3) {//第一张牌是3-10
if (pai[0]==1 ||pai[0]<=13) {//最后一张牌是A或者<= K
if (pai[0]!=2) {//最后一张牌不是2
if (pai[0]==1&&pai[1]==13) {//如果第一张牌是A
for (var i = 1; i < pai.length-2; i++) {
if (pai[i]-1 == pai[i+1]) {
cards = 3;
}
else{
cards = 0;
break;
}
}
}else{//如果第一张牌不是A
for (var i = 0; i < pai.length-1; i++) {
if (pai[i]-1 == pai[i+1]) {
cards = 3;
}
else{
cards = 0;
break;
}
}
}
}
}
}
}
}
if (cards ==0&&boom_a == 0) {
if (pai.length>=4&&pai.length%2==0) {//连对
//如果第一张牌<=k并且不等于2 最后一张牌>=3
if (pai[pai.length-1]>=3&&pai[0]<=13&&pai[0]!=2) {
for (var i = 0; i < pai.length; i++) {
if (pai[i] == pai[i+1]) {//这张牌=下一张牌
if (i+2 == pai.length) {//如果是最后一对牌
break;
}
if (pai[i]-1==pai[i+2]) {//这对牌=下一对牌
cards = 4;
i=i+1;
}
else if (pai[i]==1&&pai[i+2]==13) {//如果第一对是A 第二对是K
cards = 4;
i=i+1;
}
else{
cards = 0;
break;
}
}
else{
cards = 0;
break;
}
}
}
}
}
if (cards==0&&boom_a == 0) {
for (var i = 0; i < pai.length-1; i++) {
if (pai[i]==pai[i+1]&&pai[i]==pai[i+2]) {//3带
if (pai.length>5) {
for (var j =i; j<i+8;j++) {
if (pai[j]==1) {
pai[j] = 14;
}
}
}
if (pai[i]-1==pai[i+3]&&pai[i+3]==pai[i+4]&&pai[i+3]==pai[i+5]) { //2连飞
if (pai[i+3]-1==pai[i+6]&&pai[i+6]==pai[i+7]&&pai[i+7]==pai[i+8]) { //3连飞
if (pai[i+6]-1==pai[i+9]&&pai[i+9]==pai[i+10]&&pai[i+10]==pai[i+11]) { //4连飞
if (pai[i+9]-1==pai[i+12]&&pai[i+12]==pai[i+13]&&pai[i+13]==pai[i+14]) { //5连飞
if (pai[i+12]-1==pai[i+15]&&pai[i+15]==pai[i+16]&&pai[i+16]==pai[i+17]) { //6连飞
if (pai.length == 20 && shengpai > 0) {
cards = 8;
feiji = pai[i];
i = i + 11;
}
else if (pai.length == 25 && shengpai > 0) {
cards = 9;
feiji = pai[i];
i = i + 14;
}else{
cards = 10;
feiji = pai[i];
}
}
else{//5连飞
if (pai[i+14]==pai[i+15]) {
var surplus = pai.splice(i+15,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=25&&pai.length>=15&&cards<=9) {
if (pai.length == 15 && shengpai > 0) {
cards = 7;
feiji = pai[i];
i = i + 8;
}else
if (pai.length == 20 && shengpai > 0) {
cards = 8;
feiji = pai[i];
i = i + 11;
}else{
cards = 9;
feiji = pai[i];
i = i + 14;
}
}
}
}
else{//4连飞
if (pai[i+11]==pai[i+12]) {
var surplus = pai.splice(i+12,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=20&&pai.length>=12&&cards<=8) {
if (pai.length == 15 && shengpai > 0) {
cards = 7;
feiji = pai[i];
i = i+8;
}else{
cards = 8;
feiji = pai[i];
i = i+11;
}
}
}
}
else{//3连飞
if (pai[i+8]==pai[i+9]) {
var surplus = pai.splice(i+9,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=15&&pai.length>=9&&cards<=7) {
if (pai.length == 10 && shengpai > 0) {
cards = 6;
feiji = pai[i];
i = i+5;
}else{
cards = 7;
feiji = pai[i];
i = i+8;
}
}
}
}
else{//2连飞
if (pai[i+5]==pai[i+6]) {
var surplus = pai.splice(i+6,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=10&&pai.length>=6&&cards<=6) {
cards = 6;
feiji = pai[i];
i = i+5;
}
}
}
else{//3带
if (pai[i+2]==pai[i+3]) {
var surplus = pai.splice(i+3,1)
pai.unshift(min_random(0,100));
i = 0;
}
else if (pai.length<=5&&pai.length>=3&&cards<=5) {
cards = 5;
feiji = pai[i]
i = i+2;
}
}
}
else{//不是3带
if(cards<5){
cards = 0;
}
}
}
}
// 牌型 炸弹 飞机最大的一张牌
var car = [cards,boom_a,feiji];
return car;
}
// 编译后的牌 牌帧数
var k = function (k,pai) {
var daxiao = 0;
var wu = 0;
var shi = 0;
var kai = 0
for (var i = 0; i < k.length; i++) {
switch (k[i]){
case 5:
wu = wu+1;
break;
case 10:
shi = shi+1;
break;
case 13:
kai = kai+1;
break;
default:
break;
}
}
if (k.length==3) {
if (k[0]==13&&k[1]==10&&k[2]==5) {
daxiao = 15;
if (pai[0]==13) {
if (pai[1]==10) {
if (pai[2]==5) {
daxiao = 16;
}
}
}
if (pai[0]==26) {
if (pai[1]==23) {
if (pai[2]==18) {
daxiao = 16;
}
}
}
if (pai[0]==39) {
if (pai[1]==36) {
if (pai[2]==31) {
daxiao = 16;
}
}
}
if (pai[0]==52) {
if (pai[1]==49) {
if (pai[2]==44) {
daxiao = 16;
}
}
}
}
}else{
daxiao = 0;
}
if (wu+shi+kai == k.length&&k.length>=9) {
if (wu<=shi&&wu<=kai) {
if (wu==3) {
daxiao = 52;
}
if (wu==4) {
daxiao = 82;
}
if (wu==5) {
daxiao = 120;
}
if (wu==6) {
daxiao = 240;
}
if (wu==7) {
daxiao = 480;
}
if (wu==8) {
daxiao = 960;
}
}
else if (shi<=wu&&shi<=kai) {
if (shi==3) {
daxiao = 52;
}
if (shi==4) {
daxiao = 82;
}
if (shi==5) {
daxiao = 120;
}
if (shi==6) {
daxiao = 240;
}
if (shi==7) {
daxiao = 480;
}
if (shi==8) {
daxiao = 960;
}
}
else if (kai<=wu&&kai<=shi) {
if (kai==3) {
daxiao = 52;
}
if (kai==4) {
daxiao = 82;
}
if (kai==5) {
daxiao = 120;
}
if (kai==6) {
daxiao = 240;
}
if (kai==7) {
daxiao = 480;
}
if (kai==8) {
daxiao = 960;
}
}
}
return daxiao;
}
// 编译后的牌 牌帧数
var kz = function (k,pai) {
var daxiao = 0;
var wu = 0;
var shi = 0;
var kai = 0
for (var i = 0; i < k.length; i++) {
switch (k[i]){
case 5:
wu = wu+1;
break;
case 10:
shi = shi+1;
break;
case 13:
kai = kai+1;
break;
default:
break;
}
}
if (k.length==3) {
if (k[0]==13&&k[1]==10&&k[2]==5) {
daxiao = 15;
if (pai[0]==13) {
if (pai[1]==10) {
if (pai[2]==5) {
daxiao = 16;
}
}
}
if (pai[0]==26) {
if (pai[1]==23) {
if (pai[2]==18) {
daxiao = 16;
}
}
}
if (pai[0]==39) {
if (pai[1]==36) {
if (pai[2]==31) {
daxiao = 16;
}
}
}
if (pai[0]==52) {
if (pai[1]==49) {
if (pai[2]==44) {
daxiao = 16;
}
}
}
}
}else{
daxiao = 0;
}
if (wu+shi+kai == k.length&&k.length>=9) {
if (wu==shi&&wu==kai) {
if (wu==3) {
daxiao = 51;
}
if (wu==4) {
daxiao = 71;
}
if (wu==5) {
daxiao = 120;
}
if (wu==6) {
daxiao = 240;
}
if (wu==7) {
daxiao = 480;
}
if (wu==8) {
daxiao = 960;
}
}
}
return daxiao;
}
var boom = function (pai) {
var daxiao = 0;
if (pai.length>=4&&pai.length<=8) {
for (var i = 0; i < pai.length-1; i++) {
if (pai[i]==pai[i+1]) {
daxiao = pai.length*10;
}else{
daxiao = 0;
break;
}
}
}
return daxiao;
}
var bicards = function (paia,paib) {
var yon = -1;
if (paib[0]>paia[0]) {
if (paia[0]==1) { //a = A
if (paib[0]==2||paib[0]>13) { //b = 2 或者王
yon = 1;
}
else{ //否则
yon = -1;
}
}
else if (paia[0]==2) { //a = 2
if (paib[0]>13) { //b = 王
yon = 1;
}
else{
yon = -1;
}
}else{
yon=1;
}
}
else if (paib[0]<paia[0]) {//a > b
if (paib[0]==1) { //b = A
if (paia[0]==2||paia[0]>13) { //a = 2 或者王
yon = -1;
}
else{
yon = 1;
}
}
else if (paib[0]==2) { //b = 2
if (paia[0]>13) { //a = 王
yon = -1;
}
else{
yon = 1;
}
}
}
else if (paib[0]==paia[0]){ //b = a
yon = -1;
}
if (yon>0) {
return paib.length;
}else{
return yon;
}
}
var kswdaipai = function (pai_a) {
var paizu = [1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
var pai = [];
for (var i = 0; i <pai_a.length; i++) {
pai.push(paizu[pai_a[i]-1]);
}
var car_boom_k = 0;
var car_boom_s = 0;
var car_boom_w = 0;
for(var i=0;i<pai.length;i++){
switch (pai[i]){
case 13:
car_boom_k = car_boom_k +1;
break;
case 10:
car_boom_s = car_boom_s +1;
break;
case 5:
car_boom_w = car_boom_w +1;
break;
default:
break;
}
}
var boom = 0;
if (car_boom_w>=3 && car_boom_s>=3 && car_boom_k>=3 && car_boom_w+car_boom_s+car_boom_k == pai.length) {
if (car_boom_w <= car_boom_s && car_boom_w <= car_boom_k) {
switch (car_boom_w){
case 3:
boom = 52;
break;
case 4:
boom = 82;
break;
case 5:
boom = 120;
break;
case 6:
boom = 240;
break;
case 7:
boom = 480;
break;
case 8:
boom = 960;
break;
default:
break;
}
}else
if (car_boom_s <= car_boom_w && car_boom_s <= car_boom_k) {
switch (car_boom_s){
case 3:
boom = 52;
break;
case 4:
boom = 82;
break;
case 5:
boom = 120;
break;
case 6:
boom = 240;
break;
case 7:
boom = 480;
break;
case 8:
boom = 960;
break;
default:
break;
}
}else
if (car_boom_k <= car_boom_s && car_boom_k <= car_boom_w) {
switch (car_boom_k){
case 3:
boom = 52;
break;
case 4:
boom = 82;
break;
case 5:
boom = 120;
break;
case 6:
boom = 240;
break;
case 7:
boom = 480;
break;
case 8:
boom = 960;
break;
default:
break;
}
}
}
return boom;
}