⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mjboteventhandler.java

📁 麻将程序
💻 JAVA
字号:
package com.newpalm.game.mj.client;

import java.util.Collection;
import java.util.Iterator;
import java.util.Random;

import com.newpalm.game.mj.share.MJCard;
import com.newpalm.game.mj.share.MJCardCollection;
import com.newpalm.game.mj.share.MJCardStat;
import com.newpalm.game.mj.share.MJEventObject;
import com.newpalm.game.mj.share.PlayerCardModule;

/**
 * @author liyamin
 */
public class MJBotEventHandler extends MJClientEventHandler {
        private static Random rand = new Random();
        /**
         * @param client
         */
        public MJBotEventHandler(MJClient client) {
                super(client);
        }

        /* (non-Javadoc)
         * @see com.inxun.game.mj.client.MJClientEventHandler#onTurnToPlay()
         */
        public void onTurnToPlay(MJEventObject event) {
                if (theMod.getCurrentPlayerNo() == myNo) {
                        MJCardCollection cards =
                                theMod.getMyCardModule(theClient).getHandCards();

                        boolean huable = cards.isHuable();
                        if (huable) {
                                System.out.println(theClient.getPlayer().getName() + ":(Hu:D)");
                                theClient.hu();
                                return;
                        }

                        MJCard[] gangCards = cards.getAnGangableCards();
                        if (gangCards != null && gangCards.length > 0) {
                                System.out.println(
                                        theClient.getPlayer().getName() + ":(An gang)");
                                theClient.anGang(gangCards[0]);
                                return;
                        }

                        MJCard card = pickASeparateCard(cards, 2);
                        if (card == null)
                                card = pickASeparateCard(cards, 1);



                        if (card == null)
                                card = (MJCard) cards.get(rand.nextInt(cards.size()));

                        System.out.println(theClient.getPlayer().getName() + ": " + card);
                        theClient.dropACard(card);

                        try {
                                Thread.sleep(300);
                        } catch (Exception e) {
                        }
                }
        }

        /* (non-Javadoc)
         * @see com.inxun.game.mj.client.MJClientEventHandler#onWaitPass()
         */
        public void onWaitPass(MJEventObject event) {
                int lastPlayerNo = theMod.getLastPlayerNo();
                if (myNo == lastPlayerNo) {
                        theClient.sendPassSignal();
                        return;
                }

                MJCard card = theMod.getLastDroppedCard();
                PlayerCardModule myCards = theMod.getMyCardModule(theClient);

                MJCardCollection handCards = myCards.getHandCards();
                boolean eatable;
                if ((myNo + 4 - lastPlayerNo) % 4 != 1) {
                        eatable = false;
                } else {
                        eatable = handCards.isEatable(card);
                }
                boolean pengable = handCards.isPengable(card);
                boolean gangable = handCards.isGangable(card);
                boolean huable = handCards.isHuable(card);

                if (huable) {
                        System.out.println(theClient.getPlayer().getName() + ":(Hu:D)");
                        theClient.hu();
                } else if (gangable) {
                        System.out.println(
                                theClient.getPlayer().getName() + ":(Gang) " + card);
                        theClient.gang(card);
                } else if (pengable) {
                        System.out.println(
                                theClient.getPlayer().getName() + ":(Peng) " + card);
                        theClient.peng(card);
                } else if (eatable) {
                        System.out.println(
                                theClient.getPlayer().getName() + ":(Eat) " + card);
                        MJCard[] pair =
                                (MJCard[]) handCards.getEatablePairs(card).iterator().next();
                        theClient.eatWithPair(card, pair);
                } else {
                        theClient.sendPassSignal();
                }
        }

        private MJCard pickASeparateCard(Collection cards, int interval) {
                MJCard card = null;
                Collection cardsCol = MJCardStat.splitSequential(cards, interval); // 2
                for (Iterator iter = cardsCol.iterator(); iter.hasNext();) {
                        Collection seq = (Collection) iter.next();
                        if (seq.size() == 1) {
                                MJCard c = (MJCard) seq.iterator().next();
                                if (c.getType() == MJCard.TYPE_FENG) {
                                        card = c;
                                        break;
                                }
                                if (c.getPoint() == 0 || c.getPoint() == 8) {
                                        card = c;
                                }
                                if (c.getType() == MJCard.TYPE_ZFB) {
                                        card = c;
                                }
                        }
                }
                return card;
        }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -