import com.taurus.core.plugin.PluginService; import hunan.DoTest; import hunan.JiQiRens; import taurus.client.NetManager; //import java.sql.SQLException; //import java.util.ArrayList; //import java.util.List; // //import com.game.Util; //import com.taurus.core.entity.ITArray; //import com.taurus.core.entity.ITObject; //import com.taurus.core.entity.TObject; //import com.taurus.core.events.Event; //import com.taurus.core.events.IEventListener; //import com.taurus.core.plugin.PluginService; //import com.taurus.core.plugin.database.DataBase; //import com.taurus.core.plugin.redis.Redis; //import com.taurus.core.util.ICallback; //import com.taurus.core.util.StringUtil; // //import hunan.*; ////import taurus.algorithm.HongZhongSuanFa; ////import taurus.algorithm.PaoDeKuaiSuanFa; //import redis.clients.jedis.Jedis; //import taurus.client.Message; //import taurus.client.MessageResponse; //import taurus.client.NetManager; //import taurus.client.SocketCode; //import taurus.client.TaurusClient; //import taurus.client.TaurusClient.ConnectionProtocol; //import taurus.client.TaurusClient.NetClientEvent; //import taurus.client.business.AccountBusiness; //import taurus.client.business.GroupRoomBusiness; //import taurus.util.CardObj; //import taurus.util.CardUtil; //import taurus.util.GroupData; //import taurus.util.PaoDeKuaiSuanFaTest; // public class Test { // // 扣点点玩家手牌 // public static List cardInhand = new ArrayList(); // // //// //// //跑得快算法 //// private static PaoDeKuaiSuanFa paoDeKuaiSuanFa; // // //红中其它玩家打的牌 //// public static String hongZhongCard = ""; // // //扣点点别人打的牌 // public static String card = ""; // // // // 玩家座位号 // public static int seat = 0; // // 玩家ID // public static int playerId = 0; // // 登录密码 // public static String password = "123456"; // // 会话标识 // public static String session = ""; // // 访问令牌 // public static String token = ""; // // 玩法ID // public static String wanfaId = ""; // // // 客户端连接对象 // public static TaurusClient client = null; // // public static TObject datas = null; // // //圈子id // public static int groupId = 0; // // //房间id // public static String roomId = ""; // // public static int count = 0; // // static final void get() { // TObject data = GroupData.getData(); // datas = data; // } // // // /** // * TCP测试方法,用于建立客户端连接并处理游戏事件 // * // * @throws Exception // */ // static final void tcp_test() throws Exception { // get(); // if (datas.size() != 0) { // ITArray rooid = datas.getTArray("rooid"); //房间id // ITArray robotIds = datas.getTArray("robotIds"); //机器人账号 // ITArray groupid = datas.getTArray("groupid"); //圈子id // // for (int i = 0; i < groupid.size(); i++) { // groupId = groupid.getInt(i); // break; // } // // ITObject object = null; // AccountBusiness accountBusiness = null; // //房间id // accountBusiness = new AccountBusiness(); // //用户 查找需要的房间数量,然后用户循环次数是根据房间数量循环的 // for (int j = 0; j < rooid.size(); j++) { // for (count = count; count < robotIds.size(); ) { // Integer anInt = rooid.getInt(j); // roomId = String.valueOf(anInt); // playerId = robotIds.getInt(count); // // 登录获取session跟token // object = accountBusiness.idPasswordLogin(playerId, password); // ITObject validate = TObject.newInstance(); // //修改使用过的机器人账号标识为1 已使用 // String sql = String.format("UPDATE `account` SET start = %d WHERE id = %d", 1, playerId); // DataBase.use().executeUpdate(sql); // validate.putString("token", object.getString("token")); // token = object.getString("token"); // session = accountBusiness.getSession(); // System.out.println(session + "," + object.getString("token")); // // group进入房间 // ITObject roomInfo = GroupRoomBusiness.joinRoom(groupId, roomId, session, null); // //根据房间id获取 玩法 // Jedis jedis0 = Redis.use("group1_db0").getJedis(); // wanfaId = jedis0.hget("room:" + roomId, "game"); // System.out.println("wanfaId 12223 " + wanfaId); // //连接根据不同的玩法id 配置不同的连接 // if ("22".equalsIgnoreCase(wanfaId)) { //湖南红中麻将 // client = new TaurusClient("8.138.120.167:46421", "game", ConnectionProtocol.Tcp); // } // if ("66".equalsIgnoreCase(wanfaId)) { //跑的快 // client = new TaurusClient("8.138.120.167:46841", "game", ConnectionProtocol.Tcp); // } // // if ("17".equalsIgnoreCase(wanfaId)) { //字牌 放炮罚 // client = new TaurusClient("8.138.120.167:48017", "game", ConnectionProtocol.Tcp); // } // if ("108".equalsIgnoreCase(wanfaId)) { //转转麻将 // client = new TaurusClient("8.138.120.167:46331", "game", ConnectionProtocol.Tcp); // } // client.connect(); // // 添加事件监听器处理网络消息 // client.addEventListener(NetClientEvent.OnEvent, new IEventListener() { // @Override // public void handleEvent(Event event) { // // 获取 msg // Message message = (Message) event.getParameter("msg"); // if (message == null) { // return; // } // ITObject param = message.param; //// if (param == null) { 部分协议 param为空 //// return; //// } // //回调协议号 // String command = message.command; // //根据玩法id 调用不同的回调 // if (StringUtil.isNotEmpty(command)) { // if ("93".equalsIgnoreCase(wanfaId)) { //扣点点 // if ("812".equalsIgnoreCase(command)) { //出牌广播 // sleepTime(1000); // drawCard(command, message); // } else if ("820".equalsIgnoreCase(command)) { // changePlayer(command, message); // } else if ("819".equalsIgnoreCase(command)) { //摸牌 // getCard(command, message); // } else if ("811".equalsIgnoreCase(command)) { //初始化手牌 // cardInHead(command, message, wanfaId); // } else if ("813".equalsIgnoreCase(command)) { //出牌,牌权 // sleepTime(2000); // outCard(command, message, wanfaId); // } else if ("817".equalsIgnoreCase(command)) { // ready(); // //杠碰胡通知协议 // } else if ("814".equalsIgnoreCase(command)) { // sleepTime(2000); // actionCard(param); // //doGang杠后补牌 补杠事件 // } else if ("838".equalsIgnoreCase(command)) { // System.out.println("杠后补牌 补杠事件"); // sleepTime(2000); // buGang(param); // } // } else if ("66".equalsIgnoreCase(wanfaId)) {//跑的快 // System.out.println("command" + command); // if ("2011".equalsIgnoreCase(command)) { //跑的快 初始化手牌 // HuNanPaoDeKuai.paoDeKuaiCardInHead(param, client); // } else if ("2021".equalsIgnoreCase(command)) { //出牌广播 // HuNanPaoDeKuai.paoDekuaiChupaiGuangBo(param); // } else if ("2004".equalsIgnoreCase(command)) { //出牌提示事件,牌权 // //出牌 // HuNanPaoDeKuai.outCard(client); // } else if ("2007".equalsIgnoreCase(command)) { //结算准备 // HuNanPaoDeKuai.seatRemainHistory.clear(); // HuNanPaoDeKuai.paoDekuaiCardInhand.clear(); // ITArray card_list = HuNanPaoDeKuai.card_list.getTArray("card_list"); // card_list.clear(); // ready(); // } else if ("2009".equalsIgnoreCase(command)) { // ready(); // } // } else if ("22".equalsIgnoreCase(wanfaId)) { //湖南红中麻将 // System.out.println("command" + command); // if ("812".equalsIgnoreCase(command)) { //出牌广播 // sleepTime(1000); // HuNanHongZhong.drawCard(command, message); // } else if ("811".equalsIgnoreCase(command)) {//初始化手牌 // HuNanHongZhong.cardInHead(command, message, client); // } else if ("819".equalsIgnoreCase(command)) { //摸牌 // HuNanHongZhong.getCard(command, message); // } else if ("813".equalsIgnoreCase(command)) { //出牌,牌权 //// sleepTime(2000); // HuNanHongZhong.outCard(client); // } else if ("817".equalsIgnoreCase(command)) {//结算 // HuNanHongZhong.hongZhongCardInhand.clear(); // HuNanHongZhong.hongZhongchuguopai.clear(); // System.out.println("结算"); // ready(); // } else if ("814".equalsIgnoreCase(command)) {//杠碰胡通知协议 //// sleepTime(2000); // HuNanHongZhong.actionCard(param, client); // } else if ("820".equalsIgnoreCase(command)) { // HuNanHongZhong.changePlayer(command, message); // } else if ("815".equalsIgnoreCase(command)) { //服务器通知客户端有玩家执行了操作 // HuNanHongZhong.shanchuchuguopai(param); // } else if ("2008".equalsIgnoreCase(command)) { //解散房间时候恢复机器人账号可以使用 // try { // String sql = String.format("UPDATE `account` SET start = %d WHERE id = %d", 0, playerId); // DataBase.use().executeUpdate(sql); // System.out.println("恢复机器人账户 --------"); // } catch (SQLException e) { // System.out.println(e); // } // } // } else if ("17".equalsIgnoreCase(wanfaId)) { //字牌放炮罚 // System.out.println("放炮罚command " + command); // if ("811".equalsIgnoreCase(command)) { //初始化手牌 // HuNanFangPaoFa.cardInHead(command, message, client); // System.out.println("字牌放炮罚 初始化手牌"); // } else if ("819".equalsIgnoreCase(command)) { //摸牌 // HuNanFangPaoFa.getCard(command, message); // } else if ("813".equalsIgnoreCase(command)) { //出牌 牌权 // HuNanFangPaoFa.outCard(client); // } else if ("812".equalsIgnoreCase(command)) { //出牌广播 // HuNanFangPaoFa.drawCard(command, message); // } else if ("814".equalsIgnoreCase(command)) { //可执行的 操作 吃碰 偎提胡 // HuNanFangPaoFa.actionCard(param, client); // } else if ("817".equalsIgnoreCase(command)) { //结算 // HuNanFangPaoFa.fangPaoFaCardInhand.clear(); // ready(); // } else if ("822".equalsIgnoreCase(command)) { //放跑提示 // System.out.println("放跑提示"); // HuNanFangPaoFa.fangPaoTipEvent(message, client); // } // } else if ("108".equalsIgnoreCase(wanfaId)) {//转转麻将 // if ("811".equalsIgnoreCase(command)) {//初始化收手牌 // HuNanZhuanZhuan.cardInHead(command, message, client); // } else if ("812".equalsIgnoreCase(command)) {//出牌广播 // HuNanZhuanZhuan.drawCard(command, message); // } else if ("819".equalsIgnoreCase(command)) {//摸牌 // HuNanZhuanZhuan.getCard(command, message); // } else if ("813".equalsIgnoreCase(command)) {//出牌提示 // HuNanZhuanZhuan.outCard(client); // } else if ("814".equalsIgnoreCase(command)) {//放招提示 // HuNanZhuanZhuan.actionCard(param, client); // } else if ("817".equalsIgnoreCase(command)) {//结算 // HuNanZhuanZhuan.zhuanZhuanCardInhand.clear(); // HuNanZhuanZhuan.zhuanZhuanchuguopai.clear(); // ready(); // } else if ("815".equalsIgnoreCase(command)) { //服务器通知客户端有玩家执行了操作 // HuNanZhuanZhuan.shanchuchuguopai(param); // } else if ("820".equalsIgnoreCase(command)) {//换牌提示 // HuNanZhuanZhuan.changePlayer(command, message); // } // } // } // } // }); // // 添加连接状态监听器 // client.addEventListener(NetClientEvent.Connect, new IEventListener() { // @Override // public void handleEvent(Event event) { // SocketCode code = (SocketCode) event.getParameter("code"); // if (code == SocketCode.Connect) { // System.out.println("连接成功"); // } else { // System.out.println("连接失败"); // // } // } // }); // ITObject params = TObject.newInstance(); // params.putString("session", session + "," + object.getString("token")); // // joinRoom(); //进入房间 // System.out.println(566666); // ready(); //准备 // ++count; // break; // } // } // } // // } // // // /** // * 出牌广播协议 812 // * // * @param command 协议号 // * @param message 消息对象 // * @return // */ // public static String drawCard(String command, Message message) { // if (command.equalsIgnoreCase("812")) { // ITObject param = message.param; // if (param == null) { // return null; // } // card = param.getString("card"); // System.out.println("座位号:" + param.getInt("seat") + "的用户出牌:" + param.getInt("card")); // } // return null; // } // // /** // * 位置转换协议 820 // * // * @param command 协议号 // * @param message 消息对象 // * @return // */ // public static String changePlayer(String command, Message message) { // if (command.equalsIgnoreCase("820")) { // ITObject param = message.param; // if (param == null) { // return null; // } // System.out.println("出牌权转移到座位号:" + param.getInt("seat") + "的用户"); //// {seat=2} // // } // return null; // } // // /** // * 摸牌协议 819 // * // * @param command 协议号 // * @param message 消息对象 // * @return // */ // public static String getCard(String command, Message message) { // if (command.equalsIgnoreCase("819")) { // ITObject param = message.param; // if (param == null) { // return null; // } //// {seat=2, Ishupai=0, isBaoTing=-1, tingcard=0, isgang=0, card=101, left_count=106} // System.out.println("轮到座位号:" + param.getInt("seat") + "的用户摸牌" + ",牌为:" + param.getInt("card")); // if (param.getInt("seat") != null && seat == param.getInt("seat")) { // cardInhand.add(param.getInt("card")); //// cardInhand.add(104); // } // } // return null; // } // // /** // * 扣点点 初始化手牌协议 811 // * // * @param command 协议号 // * @param message 消息对象 // * @param wanfaId 玩法ID // * @return // */ // public static String cardInHead(String command, Message message, String wanfaId) { // if (command.equalsIgnoreCase("811")) { // ITObject param = message.param; // if (param == null) { // return null; // } //// {bank_seat=1, laiziCard=0, laiziCard2=0, laiziCard2Before=0, jing=0, laiziCardBefore=0, card_list=[101, 103, 104, 201, 204, 207, 208, 209, 307, 309, 501, 502, 503]} // ITArray cardList = param.getTArray("card_list"); // for (int i = 0; i < cardList.size(); i++) { // cardInhand.add(cardList.getInt(i)); // } // if (cardInhand.size() > 13) { // outCard(command, message, wanfaId); // System.out.println("机器人:" + param.getInt("seat") + "为庄家,需要出牌" + ",牌为:" + cardInhand.get(0)); // // } // System.out.println("机器人:" + param.getInt("seat") + "初始化手牌" + ",牌为:" + cardInhand.toString()); // // } // return null; // } // // /** // * 出牌方法 // * // * @param command 协议号 // * @param message 消息对象 // * @param wanfaId 玩法ID // * @return // */ // public static String outCard(String command, Message message, String wanfaId) { // //todo 根据房间的玩法id 调不同的业务服务 出牌 碰杠 // //// String paoDeKuaiOutCard = paoDeKuaiSuanFa.paoDeKuaiOutCardSuanFa(cardInhand, card);//跑得快出牌 //// System.out.println("跑得快出牌" + paoDeKuaiOutCard); //// if ("22".equalsIgnoreCase(wanfaId)) { //红中 //// String hongZhongOutCard = hongZhongSuanFa.hongZhongOutCardSuanFa(cardInhand, card); //红中出牌 //// System.out.println("红中出牌" + hongZhongOutCard); //// } // // // ITObject params = TObject.newInstance(); // params.putString("session", session + "," + token); // params.putInt("card1", 0); // params.putInt("card", cardInhand.get(0)); // cardInhand.remove(0); // System.out.println("目前剩余手牌:" + cardInhand.toString()); // client.send("611", params, response -> { // System.out.println("出牌成功: " + response.returnCode); // }); // return null; // } // // /** // * 处理杠碰胡操作 // * // * @param param 消息参数 // * @return // */ // public static String actionCard(ITObject param) { // //获取碰杠胡参数 type 和id 后续算法接入,是否能让碰和杠 // ITArray tipList = param.getTArray("tip_list"); // int id = 0; // int type = 0; // int opcard = 0; // ITObject params = TObject.newInstance(); // if (tipList != null && tipList.size() > 0) { // TObject firstTip = (TObject) tipList.get(0).getObject(); // id = firstTip.getInt("id"); // type = firstTip.getInt("type"); // opcard = firstTip.getTArray("opcard").getInt(0); // System.out.println("id ++ " + id); // System.out.println("type ++ " + type); // } // //弃 是根据算法选择是否要弃掉 不进行碰杠胡 // //params.putInt("qi", 0); // //params.putInt("id", 0); // // //执行碰牌 // if (type == 2) { // params.putString("session", session + "," + token); // params.putInt("qi", 0); // params.putInt("id", 1); // Util.removeCard(cardInhand, opcard, 2); // System.out.println("删除碰的牌"); //// Global.logger.info("删除碰的牌"); // //执行胡牌 // } else if (type == 6) { // params.putString("session", session + "," + token); // params.putInt("qi", 0); // params.putInt("id", 1); // System.out.println("执行胡牌"); // //执行吃杠 // } else if (type == 3) { // params.putString("session", session + "," + token); // params.putInt("qi", 0); // params.putInt("id", 1); // Util.removeCard(cardInhand, opcard, 3); // System.out.println("执行吃杠"); // //执行自杠 // } else if (type == 4) { // params.putString("session", session + "," + token); // params.putInt("qi", 0); // params.putInt("id", 1); // Util.removeCard(cardInhand, opcard, 4); // System.out.println("执行自杠"); // // 碰后补杠 // } else if (type == 5) { // params.putString("session", session + "," + token); // params.putInt("qi", 0); // params.putInt("id", 1); // Util.removeCard(cardInhand, opcard, 1); // System.out.println("执行碰后补杠"); // } // //// cardInhand.remove(0); //// cardInhand.remove(1); // System.out.println("执行id为:" + 0 + "的操作"); // // client.send("612", params, response -> { // System.out.println("操作成功: " + response.returnCode); // }); // return null; // } // // /** // * 处理补杠操作 // * // * @param param 消息参数 // */ // public static void buGang(ITObject param) { // Integer card = param.getInt("card"); // ITObject params = TObject.newInstance(); // params.putInt("card", card); // client.send("839", params, response -> { // System.out.println("操作成功: " + response.returnCode); // }); // } // // // /** // * 准备方法 // * // * @return // */ // public static String ready() { // try { // // 添加1秒延迟 // Thread.sleep(1000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // cardInhand = new ArrayList(); // HuNanHongZhong.hongZhongCardInhand(); // HuNanFangPaoFa.fangPaoFaCardInhand(); // System.out.println("准备1111"); // ITObject params = TObject.newInstance(); // params.putString("session", session + "," + token); // // client.send("1003", params, new ICallback() { // // @Override // public void action(MessageResponse messageResponse) { // System.out.println("准备成功: "); // // System.out.println(messageResponse); // System.out.println(messageResponse.returnCode); // System.out.println(messageResponse.messageData.param); // } // }); // return null; // } // // /** // * 加入房间方法 // * // * @return // */ // public static String joinRoom() { // try { // // 添加2秒延迟 // Thread.sleep(5000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // ITObject params = TObject.newInstance(); // params.putString("session", session + "," + token); // // System.out.println("进入房间"); // client.send("1002", params, response -> { // System.out.println("进入房间成功: " + response.returnCode); // System.out.println(response.returnCode); // System.out.println(response.messageData.param); // ITObject obj = response.messageData.param.getTObject("tableInfo"); // // ITArray array = obj.getTArray("playerData"); // for (int i = 0; i < array.size(); i++) { // System.out.println("座位准备" + array.getTObject(i).getInt("seat")); // if (playerId == array.getTObject(i).getInt("aid")) { //// seat = array.getTObject(i).getInt("seat"); // HuNanHongZhong.seat = array.getTObject(i).getInt("seat"); //湖南红中麻将 // HuNanZhuanZhuan.seat = array.getTObject(i).getInt("seat"); //湖南转转麻将 // HuNanFangPaoFa.seat = array.getTObject(i).getInt("seat"); //字牌放炮罚 // HuNanPaoDeKuai.seat = array.getTObject(i).getInt("seat"); //跑得快 // // } // } // }); // return null; // } // // /** // * 线程休眠方法 // * // * @param time 休眠时间(毫秒) // */ // public static void sleepTime(int time) { // try { // // 添加延迟 // Thread.sleep(time); // } catch (InterruptedException e) { // e.printStackTrace(); // } // } // /** * 程序入口点 * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { try { PluginService.me().loadConfig(); } catch (Exception e1) { e1.printStackTrace(); } DoTest doTest = new DoTest(); doTest.doTest(); while (true) { NetManager.processEvents(); try { Thread.sleep(8); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } // public static void main(String[] args) { // HuNanHongZhong HuNanHongZhong = new HuNanHongZhong(); // HongZhongSuanFaTest hongZhongSuanFaTest = new HongZhongSuanFaTest(); // String s = HuNanHongZhong.outCard(null,Arrays.asList(302,305,305,303,302,301,203,203,202,202,101,101,412,412)); //// hongZhongSuanFaTest.analyzeDrawCard(Arrays.asList(305,304,303,207,205,204,202,107,107,104,104,412,412), 208); //// Boolean s = HuNanHongZhong.shouldPong(207); //// hongZhongSuanFaTest.separateAndAnalyzeHand(Arrays.asList(101, 101, 101, 102, 103, 204, 204, 206, 209, 303, 305, 306, 306, 208)); //// System.out.println(s); // } // public static void main(String[] args) { // JiQiRens jiQiRens = new JiQiRens(); // try { // jiQiRens.tcp_test(1, 11, 1); // } catch (Exception e) { // e.printStackTrace(); // } // } } //// ... existing code ...