Files
youle_cocos/projects/pdk_card_client-jinxian/js/flow/click_all.js
T
joywayerandClaude Opus 4.8 7ab748919a chore: 纳入项目全部源码进根仓库统一管理
删除 YouleNexus 内嵌 .git,统一由根仓库唯一管理。提交:
- projects/ 旧 H5 模板 Game_Surface_3 与各子游戏源码
- cocoscreator_projects/YouleNexus 工程 + cocos-creator-mcp 扩展源码
- CLAUDE.md、.mcp.json 等配置
library/temp/node_modules/dist 等缓存由 .gitignore 排除。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 11:55:13 +08:00

1210 lines
39 KiB
JavaScript
Raw 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.
/*****************郑忠水****************/
/**
* ————————
*点击事件操作
* ————————
* */
//所有需要点击事件操作都可写在这
d.click = function (spid_up, upx, upy, downx, downy, spid_down) {
console.log("clickid=" + spid_up + "," + d.chu_cilck)
if (spid_up == 149 || spid_up == 1158) {
GameUI.closeRoomInfo();
}
else if (spid_up == 284 && Utl.getIsInfinite() == 1) {
set_self(110, 7, "系统房");
set_self(512, 37, 0, 0, 0);
var h = get_self(109, 21);
//set_self(109, 21, h - 20);
}
else if (spid_up == 1953)//高级选项
{
Game_Modify.get_roomtype_ini();
if (get_self(2380, 43, 0, 0) == 1) {
Game_Modify.star = 0;
} else {
Game_Modify.star = 1;
}
var roomtype = [Game_Modify.Type_1[Game_Modify.CreateRoomData.Type_1].type,
Game_Modify.numOfgame,//1局数
Game_Modify.huan_3,//2换三张1换2不换
Game_Modify.top,//3封顶,1:6番封顶 2:不封顶
Game_Modify.deduct_card,//4扣卡方法
-1,//Game_Modify.jiangma,//5红中奖码;0,无奖码;1,159奖码;2,一码全中
Game_Modify.top_limit,//6人数
-1,//Game_Modify.jiang_jima,//7红中奖几码;1,奖2码+4;2,奖4码+8;3,奖6码+12;4,胡几奖几码
-1,//Game_Modify.base_score,//8底分
-1,//Game_Modify.feng,//9带字,1带字,2不带字
-1,//Game_Modify.jia,//10黑摸,1黑摸,2不黑摸
Game_Modify.peng,//Game_Modify.peng,//11一口香,1一口香,2乱碰,3不可碰
[[[[2, 3], [1, 5]], [[3, 4], [3, 4]], [[1, 2], [1, 4]]], [8, 1, 1, 0], 1, 1, [2, 3]],//12摸牌概率配置
Game_Modify.star,//13星星场
1,//14游戏类型
1,//Game_Modify.hu,//15
[0, 0, 0],//16系统房,0初中高级场,1倍数,2限入
[[1600, 800, 4000], [1000, 600]],//17时间配置
Game_Modify.overtime,//18托管
-1,//Game_Modify.Play_card,//19不打牌
sb1.current,//20倍数
sb2.current,//21限制
Game_Modify.tuoguan, //22托管
sb3.current,//23金币房茶水费
Game_Modify.Base,//底分
];//发送的房间类型数组
Desk.roomtype = [].concat(roomtype);
//房间描述
d.a.share();
var _des = Game_Config.Share.gameDescription.split("\n")[0];
if (roomtype[13] == 1) {
if (sb1.current == 0) {
sb3.setValue(0);
sb3.current=0;
}
Utl.openSnrOption(0, roomtype, _des, sb3.current);//(第一个参数->星星场传0、非星星场传1,第二个参数->roomtype,第三个参数->房间信息描述)
} else {
roomtype[20] = 0;
roomtype[21] = 0;
roomtype[23] = 0;
SB.currentValue = 0;
SB2.currentValue = 0;
SB3.currentValue = 0;
sb1.current=0;
sb2.current=0;
sb3.current=0;
Utl.openSnrOption(1, roomtype, _des);
}
Game_Config.Share.description = Game_Config.Share.gameDescription;
//Game_Config.Share.appdownload = "https://m.xihasoft.com/act/dongxiang/howto" + "?" + ifast_random(100000);
}
else if (spid_up == 14)//分享微信朋友圈
{
Game_Config.Share.description = "每天可领取免费房卡约麻将"//分享描述
}
else if (spid_up == 11 || spid_up == 3019) {
if (Utl.getVersionState()) {
set_self(d.game2_Number[0], 7, d.gameConfig.asetcount[0] + "局");
set_self(d.game2_Number[1], 7, d.gameConfig.asetcount[1] + "局");
}
else if (get_self(2385, 43) == 1) {
set_self(d.game2_Number[0], 7, d.gameConfig.asetcount[0] + "局");
set_self(d.game2_Number[1], 7, d.gameConfig.asetcount[1] + "局");
}
//显示房卡文字
for (var i = 0; i < d.game1_People.length; i++) {
if (get_self(d.game1_People[i], 43) == 1 && get_self(2380, 43) == 1) {
set_self(d.game2_Number[0], 7, d.gameConfig.asetcount[0] + "局(" + d.gameConfig.paytype + "x" + d.gameConfig.needroomcard[0][i + 1] + ")");
set_self(d.game2_Number[1], 7, d.gameConfig.asetcount[1] + "局(" + d.gameConfig.paytype + "x" + d.gameConfig.needroomcard[1][i + 1] + ")");
}
}
if (get_self(2189, 43) == 1 && get_self(2380, 43) == 1) {
set_self(d.game2_Number[0], 7, d.gameConfig.asetcount[0] + "局(" + d.gameConfig.paytype + "x" + d.gameConfig.needroomcard[0][0] + ")");
set_self(d.game2_Number[1], 7, d.gameConfig.asetcount[1] + "局(" + d.gameConfig.paytype + "x" + d.gameConfig.needroomcard[1][0] + ")");
}
}
if (spid_up == 6) {
}
if (spid_up == 2216) {
var send = {
"app": "youle",
"route": d.route,
"rpc": "exit",
"data": {
"agentid": GameData.AgentId,
"gameid": GameData.GameId,
"playerid": C_Player.playerid,
"roomcode": Desk.roomcode,
"seat": C_Player.seat,
"exit": d.exit
}
};
Net.ws_tcp.send(JSON.stringify(send));
d.exit = -1;
set_self(2216, 37, 0, 0, 0);
}
if (spid_up == 2234) {//LOL准备按钮
//Func.createRoom();
var send = {
"app": "youle",
"route": d.route,
"rpc": "war_ready",
"data": {
"agentid": GameData.AgentId,
"gameid": GameData.GameId,
"playerid": C_Player.playerid,
"roomcode": Desk.roomcode,
"seat": C_Player.seat,
"ready": 1,
}
};
Net.ws_tcp.send(JSON.stringify(send));
}
// if(spid_up==202 && get_self(149,37,0,0,0)==1)
// {d.agree[C_Player.seat]=C_Player.seat;
// var send={"app":"youle","route":d.route,"rpc":"agree","data":{"agentid":GameData.AgentId,"gameid":GameData.GameId,"playerid":C_Player.playerid,"roomcode":Desk.roomcode,"seat":C_Player.seat,"agree":0}};
// Net.ws_tcp.send(JSON.stringify(send));
// }
if (spid_up == 153) {
var sex = Desk.PlayerList[C_Player.seat].sex || 1;//1男2女
if (sex == 1) {
Game_Config.Info.TextContentMp3 = ["00031.mp3", "00032.mp3", "00033.mp3", "00034.mp3", "00035.mp3", "00036.mp3", "00037.mp3"];
}
else {
Game_Config.Info.TextContentMp3 = ["00041.mp3", "00042.mp3", "00043.mp3", "00044.mp3", "00045.mp3", "00046.mp3", "00047.mp3"];
}
}
//if (spid_up == 153 || spid_up == 698 && get_self(206, 37, 0, 0, 0) == 0 && get_self(698, 35, 0, 0, 0) == 254) {
//var sex = C_Player.sex || 1;
//GameUI.SelectMsg();
//GameUI.SelectEmotion();
//set_self(698, 43, 2, 0, 0);
//for (var spid = 206; spid <= 212; spid++) {
//set_self(spid, 37, 1, 0, 0);
//}
//if (spid_up == 698) {
//set_self(698, 43, 2, 0, 0);
//set_self(698, 35, 255, 0, 0);
//}
//}
//else if (spid_up == 698 && get_self(698, 35, 0, 0, 0) == 255) {
//set_self(698, 43, 1, 0, 0);
//set_self(698, 35, 254, 0, 0);
//}
// if(spid_up==184)
// {var text="结算";//房间号+昵称+总分+昵称+每局分数
// Func.gameCopytext(text);
// }
if (spid_up >= 1770 && spid_up <= 1773) {//显示IP
}
// else if (spid_up == 13) {//play_wav(".mp3");
// var data = {};
// data.agentid = GameData.AgentId;
// data.playerid = C_Player.playerid;
// data.gameid = GameData.GameId;
// Net.Send_get_player_grade1(data);
// }
else if (spid_up == 1467 || spid_up == 1466) {
set_group(241, 37, 0, 0, 0);
set_group(215, 37, 0, 0, 0);
Utl.playSound("00" + 170 + ".mp3");
}
else if (spid_up >= 1553 && spid_up <= 1562 && get_self(spid_up, 19, 0, 0, 0) > get_self(1665, 19) + parseInt(get_self(1665, 21) / 2) && get_self(spid_up, 19, 0, 0, 0) < get_self(1570, 19, 0, 0, 0) + 36 + 520) {
d.h3 = spid_up - 1553;
d.a.show_history2(spid_up - 1553, spid_up);
Utl.playSound("00" + 170 + ".mp3");
}
else if (spid_up == 1573) {
set_group(216, 37, 0, 0, 0);
set_group(217, 37, 0, 0, 0);
set_group(241, 37, 0, 0, 0);
set_group(215, 37, 0, 0, 0);
Utl.playSound("00" + 170 + ".mp3");
}
else if (spid_up == 1341) {
set_group(216, 37, 0, 0, 0);
set_group(217, 37, 0, 0, 0);
set_group(241, 35, 255, 0, 0);
set_group(215, 35, 255, 0, 0);
d.info2 = 0;//返回第1页
for (var i = 0; i < 4; i++) {
set_self(1163 + i, 1, 131, 0, 0);
}
Utl.playSound("00" + 170 + ".mp3");
}
else if (spid_up >= 1653 && spid_up <= 1664 || spid_up >= 2118 && spid_up <= 2123) {
if (get_self(spid_up, 19, 0, 0, 0) > get_self(1665, 19, 0, 0, 0) && get_self(spid_up, 19, 0, 0, 0) < get_self(1665, 19, 0, 0, 0) + 36 + 510) {
var n = 0;
if (spid_up >= 1653 && spid_up <= 1664) {
n = spid_up - 1653;
}
else if (spid_up >= 2118 && spid_up <= 2123) {
n = spid_up - 2118 + 12;
}
d.a.show_history3(n);
Utl.playSound("00" + 170 + ".mp3");
}
}
else if (spid_up >= 1894 && spid_up <= 1905 || spid_up >= 2124 && spid_up <= 2129) {
if (get_self(spid_up, 19, 0, 0, 0) > get_self(1665, 19, 0, 0, 0) && get_self(spid_up, 19, 0, 0, 0) < get_self(1665, 19, 0, 0, 0) + 36 + 510 && d.h3 > -1) {
var n = 0;
if (spid_up >= 1894 && spid_up <= 1905) {
n = spid_up - 1894;
}
else if (spid_up >= 2124 && spid_up <= 2129) {
n = spid_up - 2124 + 12;
}
d.replay_start(d.h3, n);
}
}
else if (spid_up == 1592) {
set_group(213, 37, 0, 0, 0);
set_group(230, 37, 0, 0, 0);
for (var i = 233; i <= 240; i++) {
set_group(i, 37, 0, 0, 0);
}
set_group(216, 37, 0, 0, 0);
set_group(217, 37, 0, 0, 0);
set_group(241, 37, 0, 0, 0);
set_group(215, 37, 0, 0, 0);
Utl.playSound("00" + 170 + ".mp3");
if (d.replay == 1) {
d.ini_start();
d.replay = 0;
Utl.Exit();
}
for (var j = 0; j < 4; j++) {
Desk.PlayerList[j].avatar = "";
Desk.PlayerList[j].playerid = -1;
Desk.PlayerList[j].nickname = "";
Desk.PlayerList[j].sex = 0;
}
}
else if (spid_up == 1598 || spid_up == 1906 || spid_up == 1363) {
d.horse_time = 0;
d.compare_jing_time3 = 0;
set_group(213, 37, 0, 0, 0);
set_group(230, 37, 0, 0, 0);
for (var i = 233; i <= 240; i++) {
set_group(i, 37, 0, 0, 0);
}
for (var i = 0; i < 4; i++) {
set_group(224 + i, 37, 0, 0, 0);
}
set_group(216, 35, 255, 0, 0);
set_group(217, 35, 255, 0, 0);
Utl.playSound("00" + 170 + ".mp3");
for (var j = 0; j < 4; j++) {
Desk.PlayerList[j].avatar = "";
Desk.PlayerList[j].playerid = -1;
Desk.PlayerList[j].nickname = "";
Desk.PlayerList[j].sex = 0;
}
if (d.replay == 1 || spid_up == 1598) {
d.ini_start();
d.replay = 0;
Utl.Exit();
if (CombatInfo && CombatInfo.length > 0) {
d.a.show_history(CombatInfo);
if (d.h3 > -1) {
{
d.a.show_history2(d.h3, d.h3 + 1553);
}
}
}
d.replay_speed(0);
}
if (spid_up == 1906) {
for (var i = 0; i < 4; i++) {
set_self(150 + i, 37, 0, 0, 0);
}
}
}
else if (spid_up == 1414)//分享
{
var head_arr = [];//[1349,1350,1351,1352]
for (var i = 0; i < 4; i++) {
if (get_self(1349 + i, 37) == 1) {
head_arr[head_arr.length] = 1349 + i;
}
}
Func.sharefinend(1, 2, Game_Config.Share.appdownload, '[绍兴麻将]房号' + d.roomcode + '(' + d.turn[2] + '局)', Game_Config.Share.description, head_arr);
Utl.playSound("00" + 170 + ".mp3");
}
else if (spid_up == 1288)//调速
{
set_self(1288, 43, 1, 1, 0);
if (get_self(1288, 43, 0, 0, 0) > 3) {
set_self(1288, 43, 1, 0, 0);
}
d.replay_speed(get_self(1288, 43, 0, 0, 0));
} else if (spid_up === 2055) {
set_group(244, 37, 0, 0, 0);
}
else if (spid_up == 1435) {
d.ini_start(1);
Utl.Exit();
Utl.playSound("00" + 170 + ".mp3");
}
RoomFunc.c_click(spid_up, upx, upy, downx, downy, spid_down)
if (d.replay) {
return;
}
if (spid_up == 2673)//等一等
{
return;
d.user_ctrl0 = new Date().getTime();
if (get_self(1289, 37) == 0) {
set_self(1289, 7, 10);
set_self(1289, 37, 1);
}
//set_self(2673,37,0);
var data = {};
data.agentid = GameData.AgentId;
data.gameid = GameData.GameId;
data.playerid = C_Player.playerid;
data.roomcode = Desk.roomcode;
data.text = "等一等";
Net.Send_send_text(data);
var send = {
"app": "youle",
"route": d.route,
"rpc": "wait_me",
"data": {
"agentid": GameData.AgentId,
"gameid": GameData.GameId,
"playerid": C_Player.playerid,
"roomcode": Desk.roomcode,
"seat": C_Player.seat,
}
};
Net.ws_tcp.send(JSON.stringify(send));
}
if (spid_up >= 376 && spid_up <= 379) {
//d.show_distance_1(spid_up);
}
if (spid_up == 515) {
//Func.createRoom();
var persons = [4, 4, 3, 2];
var person = persons[Desk.roomtype[6]] || 4;
if (d.isEnd() && person == 2 && C_Player.seat == 0) {
set_self(437, 37, 1, 0, 0);
set_self(1222, 37, 1, 0, 0);
}
if (d.isEnd() && person == 2 && C_Player.seat == 1) {
set_self(439, 37, 1, 0, 0);
set_self(1224, 37, 1, 0, 0);
}
if (d.isEnd() && person > 2) {
for (var i = 0; i < person; i++) {
set_self(436 + d.pos[i], 37, 1, 0, 0);
set_self(1221 + d.pos[i], 37, 1, 0, 0);
}
}
set_group(219, 37, 0, 0, 0);
set_self(2998, 37, 0, 0, 0);
set_group(260, 37, 0, 0, 0);
d.show_timeready(1);
set_self(2997, 18, 614, 0, 0);
set_self(2997, 19, 287, 0, 0);
d.click_ready(1403);
}
if (spid_up == 1159) {
//Func.createRoom();
set_group(244, 37, 0, 0, 0);
set_group(213, 37, 0, 0, 0);
set_group(230, 37, 0, 0, 0);
set_self(1408, 43, 1, 0, 0);
set_self(2998, 37, 1, 0, 0);
set_self(515,19,346,0,0);
for (var i = 233; i <= 240; i++) {
set_group(i, 37, 0, 0, 0);
}
if (Utl.getIsInfinite() != 1) {
if(d.user_ctrl[C_Player.seat]==1&&(Desk.roomtype[14]==3||Desk.roomtype[14]==4)||(Desk.roomtype[14]!=3&&Desk.roomtype[14]!=4))
{set_self(1408, 37, 1, 0, 0);}
}
if (d.turn[1] < d.turn[2]) {
set_self(291, 7, "房号:" + Desk.roomcode + "\n(" + String(d.turn[1] + 1) + "/" + Desk.count + "局)");
}
if (d.turn[1] + 1 >= d.turn[2]) {
set_self(1408, 43, 2, 0, 0);
//d.hide_timeready();
}
for (var i = 0; i < 4; i++) {
if (i > 1 && d.turn[1]+1 != d.turn[2]) {
set_self(150 + i, 37, 1, 0, 0);
}
}
Utl.playSound("00" + 170 + ".mp3");
d.show_timeready(1);
}
if (Desk.stage == 0) {
return;
}
RoomFunc.g_click(spid_up, upx, upy, downx, downy, spid_down)
var re_ban = 0;
if (spid_up == 1403 || spid_up == 1408) {
if (spid_up == 1403 && get_self(1403, 43) == 2 || spid_up == 1408 && get_self(1408, 43) == 2) {
//Func.exitRoom();
}
else {
//Func.createRoom();
d.send_ip();
d.send_distance();
}
set_self(2998, 37, 0, 0, 0);
d.click_ready(spid_up);
}
else {
re_ban = 1;
}
if (re_ban == 0 && spid_up > 0 && get_self(1158, 37, 0, 0, 0) == 0 && get_self(1413, 37, 0, 0, 0) == 0) {
var nowtime = new Date().getTime();
d.replay_record(1, nowtime, spid_up);
}
}
d.chi_ani = function () {
d.N = d.ob.oB(Math.round(2879.5));
d.M = d.ob.oB(Math.round(2887.5));
d.quan = d.get_free_o(d.N);
d.waiq = d.get_free_o(d.M);
AM.remove(d.quan);
AM.add(d.quan).bfunc(function () {
set_self(d.quan, 34, 0, 0, 0);
set_self(d.quan, 37, 1, 0, 0);
set_self(d.quan, 41, 0, 0, 0);
}).rotate(360, 35).rotate(0, 35).repeat().start();
AM.remove(d.waiq);
AM.add(d.waiq).bfunc(function () {
set_self(d.waiq, 35, 200, 0, 0);
set_self(d.waiq, 37, 1, 0, 0);
set_self(d.waiq, 33, 100, 0, 0);
}).zoom(130, 35).zoom(100, 35).repeat().start();
}
d.straight = function (num) {
AM.remove(num);
AM.add(num).bfunc(function () {
set_self(num, 37, 1, 0, 0);
//set_self(num,18,get_self(881,18));
set_self(num, 43, 1, 0, 0);
}).wait(1, function () {
set_self(num, 43, 2, 0, 0);
}).wait(1, function () {
set_self(num, 43, 3, 0, 0);
}).wait(1, function () {
set_self(num, 43, 4, 0, 0);
}).wait(1, function () {
set_self(num, 43, 5, 0, 0);
}).wait(1, function () {
set_self(num, 43, 6, 0, 0);
}).wait(1, function () {
set_self(num, 43, 7, 0, 0);
}).wait(1, function () {
set_self(num, 43, 8, 0, 0);
}).wait(1, function () {
set_self(num, 43, 9, 0, 0);
}).wait(1, function () {
set_self(num, 43, 10, 0, 0);
}).wait(1, function () {
set_self(num, 37, 0, 0, 0);
set_self(num + 19, 37, 0, 0, 0);
}).start();
}
d.fina_Hu = function () {
if (d.isEnd()) {
d.show_you13card();
d.show_shang13card();
d.show_zuo13card();
set_self(2903, 37, 1, 0, 0);
set_group(201, 37, 0, 0, 0);
set_group(207, 37, 0, 0, 0);
set_self(2898, 37, 0, 0, 0);
set_self(1289, 37, 0, 0, 0);
if (Utl.getIsInfinite() == 1) {
set_self(1403, 37, 0, 0, 0);
set_self(515, 37, 1, 0, 0);
set_self(515, 19, 610, 0, 0);
} else {
set_self(1403, 37, 1, 0, 0);
set_self(515, 37, 0, 0, 0);
}
if (d.replay == 1) {
set_self(1598, 37, 1, 0, 0);
set_self(1403, 37, 0, 0, 0);
}
for (var j = 0; j < 3; j++) {
set_self(2892 + j, 37, 0, 0, 0);
}
set_self(2902, 37, 0, 0, 0);
return;
//set_group(208,37,1,0,0);
var point = [2870, 2872, 2874, 2876];
var scro = [2871, 2873, 2875, 2877];
//var z_P = [2904,2909,2914,2394];
var persons = [4, 4, 3, 2];
var person = persons[Desk.roomtype[6]] || 4;
if (person == 2) {
point = [2870, 2874, 2874, 2874];
scro = [2871, 2875, 2875, 2875];
//z_P = [2904,2914,2914,2914];
}
for (var i = 0; i < person; i++) {
if (d.hand[i][0].length == 5) {
AM.remove(2925);
AM.add(2925).bfunc(function () {
set_self(2925, 37, 1, 0, 0);
set_self(2925, 33, 50, 0, 0);
}).zoom(150, 15).zoom(100, 15).wait(3, function () {
set_self(2925, 37, 0, 0, 0);
set_self(2925, 33, 50, 0, 0);
}).start();
}
var l = String(d.turn_point[d.turn[1]][i]).length;
if (d.turn_point[d.turn[1]][i] < 0) {
var str = String(d.turn_point[d.turn[1]][i]);
var str2 = str.split("-").join("");
set_self(point[d.pos[i]], 37, 1, 0, 0);
set_self(point[d.pos[i]], 43, 12, 0, 0);
set_self(scro[d.pos[i]], 37, 1, 0, 0);
set_self(scro[d.pos[i]], 7, str2, 0, 0);
var str_l = String(str2).length;
set_self(scro[d.pos[i]], 20, str_l * 30, 0, 0);
} else {
set_self(point[d.pos[i]], 37, 1, 0, 0);
set_self(point[d.pos[i]], 43, 11, 0, 0);
set_self(scro[d.pos[i]], 37, 1, 0, 0);
set_self(scro[d.pos[i]], 7, d.turn_point[d.turn[1]][i], 0, 0);
set_self(scro[d.pos[i]], 20, 30 * l, 0, 0);
}
for (var j = 0; j < d.hand[i][0].length; j++) {
//set_self(z_P[d.pos[i]]+j,37,1,0,0);
//set_self(z_P[d.pos[i]]+j,43,d.hand[i][0][j],0,0);
}
if (d.sea[i] && d.hand[i][0].length == 0) {
for (var j = 0; j < d.sea[i].length; j++) {
//set_self(z_P[d.pos[i]]+j,37,1,0,0);
//set_self(z_P[d.pos[i]]+j,43,d.sea[i][j],0,0);
}
}
}
}
}
var PDKConfig={
danshunNum:5,
duishunNum:2,
sandaiOrNot:1,
last4:0
};
var Tool = {
clearClone: function (object) {
if (!object) {
return;
}
return JSON.parse(JSON.stringify(object));
},
deviceTool: function (type, array) {
var painum = [];
var innerType = 0;
switch (type) {
case 'magic':
innerType = 1;
break;
case 'id':
innerType = 2;
break;
case 'origin':
innerType = 3;
break;
case 'number':
innerType = 4;
break;
case 'weight':
innerType = 5;
break;
case 'color':
innerType = 6;
break;
}
for (var i = 0; i < array.length; i++) {
if (innerType == 1 && array[i].magic) {
painum[painum.length] = this.clearClone(array[i]);
} else if (innerType == 2) {
painum[i] = array[i].id;
} else if (innerType == 3) {
painum[i] = array[i].origin;
} else if (innerType == 4) {
painum[i] = array[i].num;
} else if (innerType == 5) {
painum[i] = array[i].weight;
} else if (innerType == 6) {
painum[i] = array[i].color;
}
}
return painum;
},
weightSort: function (array) {
array.sort(function (a, b) {
return a.weight - b.weight;
});
},
allNumber: function (array) {
var card = [];
var number = []
var num = {};
var result = [];
//字典存储
array.forEach((v, i, s) => {
if (num[v]) {
num[v]++;
} else {
num[v] = 1;
}
});
card = array.filter((v, i, s) => {
return array.indexOf(v) == i;
});
card.forEach((v, i) => {
number[i] = num[v];
})
var len = card.length;
for (var i = 0; i < len; i++) {
var obj = {
val: card[i],
num: number[i]
}
result[i] = obj;
}
result.sort(function (a, b) {
return b.num - a.num;
});
return result;
},
maxNumber: function (array) {
var result = [];
result = array.filter((v, i, s) => {
return array[0].num == v.num;
});
return result;
},
suitNumber: function (array, number, biggerOrNot) {
biggerOrNot = biggerOrNot == undefined ? false : true;
var result_go = [];
var result_stand = [];
result_go = array.filter((v, i, s) => {
if (biggerOrNot) {
var test = number <= v.num;
if (!test) {
result_stand.push(v);
}
return number <= v.num;
}
var test = number == v.num;
if (!test) {
result_stand.push(v);
}
return number == v.num;
});
return {
suit: result_go,
notsuit: result_stand
};
},
rangeDevice: function (suit, width) {
var innerSuit = [].concat(suit);
var rrr = [];
for (var i = 0; i < innerSuit.length;) {
var array = innerSuit.slice(i, i + width);
var go = 1;
for (var j = 0; j < array.length - 1; j++) {
if (array[j + 1].val - array[j].val != 1) {
go = 0;
break;
}
}
if (go && array.length == width) {
rrr[rrr.length] = array;
i = i + 1;
} else {
i++;
}
}
return rrr;
},
checkSHUN: function (array) {
var result = 1;
for (var i = 1; i < array.length; i++) {
if (array[i] != array[i - 1] + 1) {
result = 0;
break;
}
}
return result;
}
};
CardInfo.prototype.Config = {
weight: 1, //牌的权重定义
cardWeight: [12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], //A,2,3,4,5,6,7,8,9,10,J,Q,K
convert: 1, //牌的转换,
//当算法卡组与实际卡组不同时使用
convertHand: [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
101, 102,
],
magic: function (card) {
return false;
},
};
function CardInfo(card, convert) {
this.id = -1; //物理纸牌
this.num = -1 // 物理大小
this.color = -1; //物理花色
this.weight = -1; //算法权重
card = convert ? this.convertIn(card) : card;
this.id = card;
this.origin = convert ? this.convertOut(card) : card;
this.color = parseInt(String(this.id)[0]); //物理大小
this.num = parseInt(String(this.id).slice(1)); //物理花色
var weight = this.Config.weight == 1 ? this.Config.cardWeight : [12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
this.weight = weight[this.num - 1];
this.img = ["?梅花", "?方片", "?红桃", "?黑桃", "鬼"][this.color - 1] + this.num;
this.magic = false;
//花色>4为癞子
if (this.Config.magic(this)) {
this.magic = true;
}
}
CardInfo.prototype.convertOut = function (one) {
if (!this.Config.convert) return one;
var result;
var _from = this.Config.convertHand;
var _to = [
11, 12, 13, 14, 15, 16, 17, 18, 19, 110, 111, 112, 113,
21, 22, 23, 24, 25, 26, 27, 28, 29, 210, 211, 212, 213,
31, 32, 33, 34, 35, 36, 37, 38, 39, 310, 311, 312, 313,
41, 42, 43, 44, 45, 46, 47, 48, 49, 410, 411, 412, 413,
51, 52,
];
var index = _to.indexOf(one);
if (index == -1) {
throw "牌型错误"
}
result = _from[index];
return result;
};
CardInfo.prototype.convertIn = function (one) {
if (!this.Config.convert) return one;
var result;
var _from = this.Config.convertHand;
var _to = [
11, 12, 13, 14, 15, 16, 17, 18, 19, 110, 111, 112, 113,
21, 22, 23, 24, 25, 26, 27, 28, 29, 210, 211, 212, 213,
31, 32, 33, 34, 35, 36, 37, 38, 39, 310, 311, 312, 313,
41, 42, 43, 44, 45, 46, 47, 48, 49, 410, 411, 412, 413,
51, 52,
];
var index = _from.indexOf(one);
if (index == -1) {
throw "牌型错误"
}
result = _to[index];
return result;
};
//牌型构造
function CardType(hand) {
this.build(Tool);
var cards = [];
for (var i = 0; i < hand.length; i++) {
var element = hand[i];
cards[i] = new CardInfo(element, true);
}
this.cards = [].concat(cards);
this.weightSort(this.cards); //权重排序
//拆分各种数据
this.device = {
weight: this.deviceTool('weight', this.cards),
color: this.deviceTool('color', this.cards),
number: this.deviceTool('number', this.cards),
id: this.deviceTool('id', this.cards),
origin: this.deviceTool('origin', this.cards),
}
//统计
this.count = {};
this.count.allNum = this.allNumber(this.device.weight) //牌数
this.count.maxNum = this.maxNumber(this.count.allNum) //牌数
this.check();
}
CardType.prototype.check = function () {
this.weightSort(this.cards);
var type = this.checkTong(this.cards);
(!type) && (type = this.checkDai(this.cards));
(!type) && (type = this.checkGod(this.cards));
type = type || 'error';
this.type = type || 'error';
}
CardType.prototype.checkTong = function () {
if (this.cards.length === 0) {
return;
}
//分离出来的权重
var cardsWE = this.device.weight;
var allNum = this.count.allNum; //牌数
var maxNum = this.count.maxNum; //多数;
var result;
//牌数最多的人
var number = allNum[0].num;
switch (number) {
case 1:
if (allNum.length >= PDKConfig.danshunNum &&
allNum.length == maxNum.length &&
this.checkSHUN(cardsWE) &&
allNum[allNum.length - 1].val < 13) {
result = this.createType(
"shun", allNum.length, 1, cardsWE[0], "顺子"
);
} else if (allNum.length == 1 && allNum.length == maxNum.length) {
result = this.createType("dan", 1, 1, cardsWE[0], "单牌");
}
break;
case 2:
if (allNum.length == 1 && maxNum.length == 1) {
if (maxNum[0].num == 2) {
result = this.createType("dui", 1, 1, cardsWE[0], "对子");
}
}
if (allNum.length >= PDKConfig.duishunNum &&
allNum[allNum.length - 1].num == 2 &&
allNum.length == maxNum.length) {
var card = cardsWE.filter((v, i, s) => {
return cardsWE.indexOf(v) == i;
});
if (this.checkSHUN(card) && card[card.length - 1] < 13) {
result = this.createType("duishun", card.length, 1, cardsWE[0], "对顺子");
}
}
break;
case 3:
if (allNum.length > 1 &&
allNum[allNum.length - 1].num == 3 && (PDKConfig.sandaiOrNot == 0||(PDKConfig.sandaiOrNot == 1&&PDKConfig.last4 == cardsWE.length))) {
//去重
var card = cardsWE.filter((v, i, s) => {
return cardsWE.indexOf(v) == i;
});
if (this.checkSHUN(card) && card[card.length - 1] < 13) {
// console.log("三顺",cardsWE);
result = this.createType("feiji", card.length, 1, cardsWE[0], "三顺子");
}
} else if (allNum.length == 1 && maxNum.length == 1) {
if (maxNum[0].num == 3 &&
(PDKConfig.sandaiOrNot == 0||(PDKConfig.sandaiOrNot == 1&&PDKConfig.last4 == 3))) {
//10张或者剩最后4张
// console.log("三张", cardsWE);
if (PDKConfig.sandaiOrNot == 1&&PDKConfig.last4 == 3){
result = this.createType("sandai2", 1, 1, cardsWE[0], "三张");
} else {
result = this.createType("san", 1, 1, cardsWE[0], "三张");
}
}
}
break;
case 4:
if (allNum.length == 1 && maxNum.length == 1) {
if (maxNum[0].num == 4) {
result = this.createType("zha", 1, 2, cardsWE[0], "炸弹");
}
}
break;
}
if (result) {
return result;
}
};
CardType.prototype.checkDai = function () {
//判断3+1,3+(2),3+3+(1+1),3+3+(4),3+3+3+(6)
//判断4+1,4+(2)
var cardsWE = this.device.weight;
var allNum = this.allNumber(cardsWE); //牌数
var maxNum = this.maxNumber(allNum); //最多数的牌;
var result;
if (this.cards.length === 0) {
return;
}
if (allNum.length == 2 &&
maxNum.length == 1 &&
maxNum[0].num == 3 &&
allNum[1].num == 1 &&
PDKConfig.last4 == 4&&
PDKConfig.sandaiOrNot == 1) {
//有两种牌+最多的一种牌有三张+最多的牌的数量是3张=三带一
result = this.createType("sandai2", 1, 1, maxNum[0].val, "三带一");
} else if (allNum.length == 2 &&
maxNum.length == 1 &&
maxNum[0].num == 3 &&
allNum[1].num == 2 &&
PDKConfig.sandaiOrNot==1) {
//有两种牌+最多的一种牌有三张+最多的牌的数量是3张=三带一对
result = this.createType("sandai2", 1, 1, maxNum[0].val, "三带二");
} else if (allNum.length == 3 &&
maxNum.length == 1 &&
maxNum[0].num == 3 &&
allNum[1].num == 1 &&
allNum[2].num == 1 &&
PDKConfig.sandaiOrNot==1) {
//三带两张
result = this.createType("sandai2", 1, 1, maxNum[0].val, "三带二单");
} else {
var sortByWE = [].concat(allNum).sort(function (a, b) {
return a.val - b.val;
});
//3个跟不是3个的
var suitNum = this.suitNumber(sortByWE, 3, true);
var suit = suitNum.suit;
var notsuit = suitNum.notsuit;
var plane_number = [10,15];
var plane_fly = [2, 3];
var aaa = plane_number.indexOf(cardsWE.length);
var number = 0;
if (aaa != -1) {
number = plane_fly[plane_number.indexOf(cardsWE.length)];
}else if (PDKConfig.sandaiOrNot == 1){
var plane_numb___er = [7,8,9,10,11,12,13,14,15,16];
var plane_____fly = [2,2,2,2,3,3,3,3,3,4];
aaa=plane_numb___er.indexOf(cardsWE.length);
//一把能出掉所有飞机
if (aaa!=-1&&PDKConfig.last4 ==cardsWE.length) {
number=plane_____fly[plane_numb___er.indexOf(cardsWE.length)];
}
}
var nums = [];
if (number > 0) {
nums = this.rangeDevice(suit, number);
}
if (nums.length > 0&&
PDKConfig.sandaiOrNot == 1) {
//3+3+(4)随意带牌
result = this.createType("feiji", nums[0].length, 1, nums[nums.length - 1][0].val, "飞机");
}
}
if (result) {
return result;
}
};
CardType.prototype.checkGod = function () {
var cardsWE = this.device.weight;
var cardsCO = this.device.color;
var result;
if (cardsCO.length == 2 && cardsCO[0] > 4 && cardsCO[1] > 4) {
result = this.createType("god", 100, cardsWE[0], cardsWE, "天王炸");
}
if (result) {
return result;
}
}
CardType.prototype.createType = function (type, typetimes, cardWeight, weight, desc) {
var that = this;
desc = desc || '';
return {
desc: desc,
type: type,
typetimes: typetimes,
cardWeight: cardWeight,
weight: weight,
cardNum: that.device.number,
cardColor: that.device.color,
cardId: that.device.id,
cardWe: that.device.weight,
}
}
CardType.prototype.use = function (name, object) {
CardType.prototype['$' + name] = object;
}
CardType.prototype.build = function (object) {
for (var key in object) {
if (object.hasOwnProperty(key)) {
var element = object[key];
CardType.prototype[key] = element;
}
}
}
function Battle() {
}
Battle.prototype.output = function (Arr) {
Arr = new CardType(Arr);
var arrType = Arr.type;
if (arrType !== 'error') {
return arrType.desc;
}
return false;
};
Battle.prototype.check = function (Arr) {
var roomtype;
if (Desk.roomtype&&Desk.roomtype.length>0){
roomtype=Desk.roomtype;
}
if (d.roomtype&&d.roomtype.length>0){
roomtype=d.roomtype;
}
if (roomtype&&roomtype[11]==2){
PDKConfig={
danshunNum:5,
duishunNum:2,
sandaiOrNot:1,
last4:0
};
}else if (roomtype&&roomtype[11]==1){
PDKConfig={
danshunNum:5,
duishunNum:2,
sandaiOrNot:1,
last4:0
};
}else if (roomtype&&roomtype[11]==0){
PDKConfig={
danshunNum:3,
duishunNum:2,
sandaiOrNot:0,
last4:0
};
}
if(C_Player.seat!=undefined&&C_Player.seat>-1){
PDKConfig.last4=d.hand[C_Player.seat][0].length;
if (PDKConfig.last4==0){
PDKConfig.last4=Arr.length;
}
}
Arr = new CardType(Arr);
var arrType = Arr.type;
if (arrType !== 'error') {
return arrType.type;
}
return false;
};
Battle.prototype.beat = function (prevArr1, nextArr2, change) {
var roomtype;
if (Desk.roomtype&&Desk.roomtype.length>0){
roomtype=Desk.roomtype;
}
if (d.roomtype&&d.roomtype.length>0){
roomtype=d.roomtype;
}
if (roomtype&&roomtype[11]==2){
PDKConfig={
danshunNum:5,
duishunNum:2,
sandaiOrNot:1,
last4:0
};
}else if (roomtype&&roomtype[11]==1){
PDKConfig={
danshunNum:5,
duishunNum:2,
sandaiOrNot:1,
last4:0
};
}else if (roomtype&&roomtype[11]==0){
PDKConfig={
danshunNum:3,
duishunNum:2,
sandaiOrNot:0,
last4:0
};
}
if(C_Player.seat!=undefined&&C_Player.seat>-1){
PDKConfig.last4=d.hand[C_Player.seat][0].length;
}
if (change) {
//右边大于左边,左边确定
nextArr = new CardType(prevArr1);
var nextType = nextArr.type;
if (nextType.type !== 'error') {
prevArr = new CardType(nextArr2, nextType.weight + 1, nextType.type);
var prevType = prevArr.type;
}
} else {
//左边大于右边,左边确定
prevArr = new CardType(prevArr1);
var prevType = prevArr.type;
if (prevType.type !== 'error') {
nextArr = new CardType(nextArr2, prevType.weight - 1, prevType.type);
var nextType = nextArr.type;
}
}
if (prevType && nextType && prevType !== 'error' && nextType !== 'error') {
if (prevType.cardWeight == nextType.cardWeight) {
if (prevType.type == nextType.type) {
if ((prevType.cardNum.length == nextType.cardNum.length)||(PDKConfig.last4>0&&['sandai2','feiji'].indexOf(prevType.type)!=-1)) {
if (prevType.weight > nextType.weight) {
return true;
}
}
}
} else if (prevType.cardWeight > nextType.cardWeight) {
return true;
}
}
return false;
};
Battle=new Battle();