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

676 lines
16 KiB
JavaScript

var paixu = function(p,n){//排序
var cardspz = [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,
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 car =[];
if(n==0){
for (var i = 0;i < p.length; i++) {
p[i] = p[i]-1;
}
}
for (var i = 0;i < p.length; i++) {
car[i] = cardspz[p[i]];
}
var one = [0];
var two = [0];
var three = [0];
var four = [0];
var five = [0];
var six = [0];
var seven = [0];
var eight = [0];
var nine = [0];
var ten = [0];
var eleven = [0];
var twelve = [0];
var thirteen = [0];
var fourteen = [0];
//每种牌各多少张
for(var i = 0;i < car.length; i++){
switch (car[i]){
case 15:
fourteen[0] = fourteen[0]+1;
fourteen.push(p[i]);
break;
case 14:
fourteen[0] = fourteen[0]+1;
fourteen.push(p[i]);
break;
case 13:
thirteen[0] = thirteen[0]+1;
thirteen.push(p[i]);
break;
case 12:
twelve[0] = twelve[0]+1;
twelve.push(p[i]);
break;
case 11:
eleven[0] = eleven[0]+1;
eleven.push(p[i]);
break;
case 10:
ten[0] = ten[0]+1;
ten.push(p[i]);
break;
case 9:
nine[0] = nine[0]+1;
nine.push(p[i]);
break;
case 8:
eight[0] = eight[0]+1;
eight.push(p[i]);
break;
case 7:
seven[0] = seven[0]+1;
seven.push(p[i]);
break;
case 6:
six[0] = six[0]+1;
six.push(p[i]);
break;
case 5:
five[0] = five[0]+1;
five.push(p[i]);
break;
case 4:
four[0] = four[0]+1;
four.push(p[i]);
break;
case 3:
three[0] = three[0]+1;
three.push(p[i]);
break;
case 2:
two[0] = two[0]+1;
two.push(p[i]);
break;
case 1:
one[0] = one[0]+1;
one.push(p[i]);
break;
default:
break;
}
}
var plist = [[]];
plist = [one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,fourteen];
//张数多的在前面
plist.sort(px);
var yi = [];
var er = [];
var san = [];
var si = [];
var wu = [];
var liu = [];
var qi = [];
var ba = [];
for (var i =0;i<plist.length;i++ ) {
plist[i].splice(0,1);
}
//把张数相同的牌放一起
for (var i =0;i<plist.length;i++ ) {
switch (plist[i].length){
case 1:
for (var j = 0;j<plist[i].length;j++) {
yi.push(plist[i][j]);
}
break;
case 2:
for (var j = 0;j<plist[i].length;j++) {
er.push(plist[i][j]);
}
break;
case 3:
for (var j = 0;j<plist[i].length;j++) {
san.push(plist[i][j]);
}
break;
case 4:
for (var j = 0;j<plist[i].length;j++) {
si.push(plist[i][j]);
}
break;
case 5:
for (var j = 0;j<plist[i].length;j++) {
wu.push(plist[i][j]);
}
break;
case 6:
for (var j = 0;j<plist[i].length;j++) {
liu.push(plist[i][j]);
}
break;
case 7:
for (var j = 0;j<plist[i].length;j++) {
qi.push(plist[i][j]);
}
break;
case 8:
for (var j = 0;j<plist[i].length;j++) {
ba.push(plist[i][j]);
}
break;
default:
break;
}
}
//每种张数的排序
yi.sort(ss);
er.sort(ss);
san.sort(ss);
si.sort(ss);
wu.sort(ss);
liu.sort(ss);
qi.sort(ss);
ba.sort(ss);
var card = [];
//把每种张数从大到小依次加入数组
for (var i =0;i<ba.length;i++ ) {
card.push(ba[i]);
}
for (var i =0;i<qi.length;i++ ) {
card.push(qi[i]);
}
for (var i =0;i<liu.length;i++ ) {
card.push(liu[i]);
}
for (var i =0;i<wu.length;i++ ) {
card.push(wu[i]);
}
for (var i =0;i<si.length;i++ ) {
card.push(si[i]);
}
for (var i =0;i<san.length;i++ ) {
card.push(san[i]);
}
for (var i =0;i<er.length;i++ ) {
card.push(er[i]);
}
for (var i =0;i<yi.length;i++ ) {
card.push(yi[i]);
}
if(n==0){
for (var i = 0;i < card.length; i++) {
card[i] = card[i]+1;
}
}
return card;
}
var px = function (a,b) {//不同张数炸弹排序
if (a[0] < b[0]) {//1
return 1;
}
else if (a[0] > b[0]) {//-1
return -1;
}
}
var pxa = function (a,b) {//不同张数炸弹帧数排序 包括王
if (a[0] < b[0]) {//-1
return -1;
}
else if (a[0] > b[0]) {//1
return 1;
}else if (a[0] == b[0]) {
if (a[1]==54) {
return 1;
}
if (a[2]==54) {
return -1;
}
}
}
var pxb = function (a,b) {//同张数炸弹排序
var x=0;
var y=0;
var pai = [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];
x = pai[a[1]-1];
y = pai[b[1]-1];
if (a[0] < b[0]) {//1
return 1;
}
else if (a[0] > b[0]) {//-1
return -1;
}
else{
if (x>y) {//-1
if (y==1) {
if (x==2||x>13) {
return -1;
}else{
return 1;
}
}
if (y==2) {
if (x>13) {
return -1;
}else{
return 1;
}
}
return -1;
}
else if(x<y){//1
if (x==1) {
if (y==2||y>13) {
return 1;
}else{
return -1;
}
}
if (x==2) {
if (y>13) {
return 1;
}else{
return -1;
}
}
return 1;
}else{
return 0;
}
}
}
var dxpx = function (p, n) {//比较大小
if (n==0) {
for (var i = 0;i < p.length; i++) {
p[i] = p[i]-1;
}
}
p.sort(ss);
if (n==0) {
for (var i = 0;i < p.length; i++) {
p[i] = p[i]+1;
}
}
return p;
}
var ss = function (a, b) {//比较大小
var x=0;
var y=0;
var pai = [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,
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];
x = pai[a];
y = pai[b];
if (x < y) {//1
if(x==1){
if (y==2) {
return 1;
}
else if (y>13) {
return 1;
}
else{
return -1;
}
}
else if (x==2) {
if (y>13) {
return 1;
}
else{
return -1;
}
}
else {
return 1;
}
}
else if (x > y) {//-1
if(y==1){
if (x==2) {
return -1;
}
else if (x>13) {
return -1;
}
else{
return 1;
}
}
else if (y==2) {
if (x>13) {
return -1;
}
else{
return 1;
}
}
else {
return -1;
}
}
else {//如相等 黑色花色在前
if (a>53) {
a=a-54;
}
if (b>53) {
b=b-54;
}
if (a>b) {//-1
if (a+26>=52&&a+13<52) {//如果 a是红心
if (a-26==b) {//如果b 是方块
return -1;
}
else{
return 1;
}
}else{
return -1;
}
}
else if(a<b){//1
if (b+26>=52&&b+13<52) {//b是红心
if (b-26==a) {//a是方块
return 1;
}
else{
return -1;
}
}else{
return 1;
}
}else if(a==b){
return 0;
}
}
}
var againsort = function (so) {
if (so == 1) {//张数排序
if(banben == 1){
//id排序
var lp = zhaopengyou_bianliang.pub.lipai;
var lipai = [];
// 理牌牌在前
for(var i=0;i<zhaopengyou_bianliang.pub.lipai.length;i++){
lipai = lipai.concat(zhaopengyou_bianliang.pub.lipai[i]);
}
var paiidcpy = zhaopengyou_bianliang.pub.paiid.concat();
for(var k=0;k<lipai.length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lipai[k] == paiidcpy[j]){
paiidcpy.splice(j,1);
break;
}
}
}
zhaopengyou_bianliang.pub.paiid = lipai.concat(zd_paixu(paiidcpy));
}else{
//id排序
var lp = zhaopengyou_bianliang.pub.lipai;
var lipai = [];
// 理牌牌在前
for(var i=0;i<zhaopengyou_bianliang.pub.lipai.length;i++){
lipai = lipai.concat(zhaopengyou_bianliang.pub.lipai[i]);
}
var paiidcpy = zhaopengyou_bianliang.pub.paiid.concat();
for(var k=0;k<lipai.length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lipai[k] == paiidcpy[j]){
paiidcpy.splice(j,1);
break;
}
}
}
zhaopengyou_bianliang.pub.paiid = lipai.concat(paixu(paiidcpy,1));
}
set_self(1389,43,2,0,0);
}
if(so == 0){//大小排序
//id排序
var lp = zhaopengyou_bianliang.pub.lipai;
var lipai = [];
// 理牌牌在前
for(var i=0;i<zhaopengyou_bianliang.pub.lipai.length;i++){
lipai = lipai.concat(zhaopengyou_bianliang.pub.lipai[i]);
}
var paiidcpy = zhaopengyou_bianliang.pub.paiid.concat();
for(var k=0;k<lipai.length;k++){
for(var j=0;j<paiidcpy.length;j++){
if(lipai[k] == paiidcpy[j]){
paiidcpy.splice(j,1);
break;
}
}
}
zhaopengyou_bianliang.pub.paiid = lipai.concat(dxpx(paiidcpy,1));
set_self(1389,43,1,0,0);
}
for (var i=0;i<zhaopengyou_bianliang.pub.paiid.length;i++) {
set_self(1001+27-zhaopengyou_bianliang.pub.paiid.length+i,43,zhaopengyou_bianliang.pub.paiid[i]%54+1,0,0);
}
}
var zd_paixu = function (pai) {
var daxiao = [];
for(var i = 0; i<10;i++){
daxiao[i] = [];
}
var wskpx= [[],[],[]];
var wang = [[],[]];
for (var i = 0; i < pai.length; i++) {
switch ((pai[i]%54+1)%13){
case 1:
if(pai[i]==52||pai[i]==106){
wang[0].push(pai[i]);
}else{
daxiao[8].push(pai[i]);
}
break;
case 2:
if(pai[i]==53||pai[i]==107){
wang[1].push(pai[i]);
}else{
daxiao[9].push(pai[i]);
}
break;
case 3:
daxiao[0].push(pai[i]);
break;
case 4:
daxiao[1].push(pai[i]);
break;
case 5:
wskpx[0].push(pai[i]);
break;
case 6:
daxiao[2].push(pai[i]);
break;
case 7:
daxiao[3].push(pai[i]);
break;
case 8:
daxiao[4].push(pai[i]);
break;
case 9:
daxiao[5].push(pai[i]);
break;
case 10:
wskpx[1].push(pai[i]);
break;
case 11:
daxiao[6].push(pai[i]);
break;
case 12:
daxiao[7].push(pai[i]);
break;
case 0:
wskpx[2].push(pai[i]);
break;
//2 7 10 为 5 10 K
}
}
for(var i= 0;i<daxiao.length;i++){
if(daxiao[i].length == 0){
daxiao.splice(i,1);
i--;
}
}
if(wskpx[0].length>0 && wskpx[1].length>0 && wskpx[2].length>0){
daxiao.sort(zd_px);
}else{
if(wskpx[0].length){
daxiao.push(wskpx[0]);
}
if(wskpx[1].length){
daxiao.push(wskpx[1]);
}
if(wskpx[2].length){
daxiao.push(wskpx[2]);
}
wskpx= [[],[],[]];
daxiao.sort(zd_px);
}
var jieguo = [];
var jia = 0;
for(var i= 0;i<daxiao.length;i++){
daxiao[i].sort(ss);
if(daxiao[i].length<=3 && jia == 0){
jia = 1;
if(wskpx[0].length){
wskpx[0].sort(ss);
jieguo.push(wskpx[0]);
}
if(wskpx[1].length){
wskpx[1].sort(ss);
jieguo.push(wskpx[1]);
}
if(wskpx[2].length){
wskpx[2].sort(ss);
jieguo.push(wskpx[2]);
}
if(wang[1].length){
wang[1].sort(ss);
jieguo.push(wang[1]);
}
if(wang[0].length){
wang[0].sort(ss);
jieguo.push(wang[0]);
}
wang = [];
}
jieguo.push(daxiao[i]);
}
if(jia == 0){
if(wskpx[0].length){
wskpx[0].sort(ss);
jieguo.push(wskpx[0]);
}
if(wskpx[1].length){
wskpx[1].sort(ss);
jieguo.push(wskpx[1]);
}
if(wskpx[2].length){
wskpx[2].sort(ss);
jieguo.push(wskpx[2]);
}
if(wang[1].length){
wang[1].sort(ss);
jieguo.push(wang[1]);
}
if(wang[0].length){
wang[0].sort(ss);
jieguo.push(wang[0]);
}
wang = [];
}
var paiwan = [];
for(var i= 0;i<jieguo.length;i++){
for(var j= 0;j<jieguo[i].length;j++){
paiwan.push(jieguo[i][j]);
}
}
return paiwan;
}
var zd_px = function (a,b) {//不同张数炸弹排序
if(a.length == 0){
return 1;
}
if(a.length>=4 || b.length>=4){
if (a.length < b.length) {//1
return 1;
}
else if (a.length > b.length) {//-1
return -1;
}else{
if((a[0]%54)%13>(b[0]%54)%13){
if((b[0]%54)%13 == 0 &&(a[0]%54)%13 != 1){
return 1;
}else if((b[0]%54)%13 == 1){
return 1;
}
return -1;
}else if((a[0]%54)%13<(b[0]%54)%13){
if((a[0]%54)%13 == 0 &&(b[0]%54)%13 != 1){
return -1;
}else if((a[0]%54)%13 == 1){
return -1;
}
return 1;
}
}
}else{
if((a[0]%54)%13>(b[0]%54)%13){
if((b[0]%54)%13 == 0 &&(a[0]%54)%13 != 1){
return 1;
}else if((b[0]%54)%13 == 1){
return 1;
}else{
return -1;
}
}else if((a[0]%54)%13<(b[0]%54)%13){
if((a[0]%54)%13 == 0 &&(b[0]%54)%13 != 1){
return -1;
}else if((a[0]%54)%13 == 1){
return -1;
}else{
return 1;
}
}
}
}