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

📄 mjserver.java~2~

📁 麻将程序
💻 JAVA~2~
📖 第 1 页 / 共 2 页
字号:
        /**
         * \u00B4\u00A6\u00C0í\u00B3\u00F6\u00C5\u00C6\u00C2\u00DF\u00BC\u00AD\u00A3\u00AC\u00D6÷\u00D1\u00AD\u00BB·\u00CA\u00C7
         * 1\u00A1\u00A2\u00CD¨\u00D6\u00AA\u00B5±\u00C7°\u00CD\u00E6\u00BC\u00D2\u00B3\u00F6\u00C5\u00C6
         * 1.1\u00C8\u00E7\u00B9\u00FB\u00B5±\u00C7°\u00CD\u00E6\u00BC\u00D2\u00BAú\u00A3¨×\u00D4\u00C3\u00FE\u00A3\u00A9\u00A3\u00AC\u00CD\u00CB\u00B3\u00F6\u00D1\u00AD\u00BB·
         * 1.2\u00C8\u00E7\u00B9\u00FB\u00B5±\u00C7°\u00CD\u00E6\u00BC\u00D2°\u00B5\u00B8\u00DC\u00A3\u00AC\u00D4ò\u00CC\u00F8\u00D6\u00C13
         * 1.3\u00B2\u00BB\u00BAú\u00B2\u00BB°\u00B5\u00B8\u00DC\u00A3\u00AC\u00BE\u00CD\u00CA\u00C7\u00C9á\u00C5\u00C6\u00B5\u00C4\u00C7é\u00BF\u00F6\u00A3\u00AC\u00BC\u00CC\u00D0\u00F8\u00B5\u00BD2
         * 2\u00A1\u00A2\u00D1\u00AF\u00CE\u00CA\u00C6\u00E4\u00CB\u00FB\u00CD\u00E6\u00BC\u00D2\u00A3\u00AC\u00CA\u00C7·\u00F1\u00D2\u00AA\u00B3\u00D4\u00A1\u00A2\u00C5\u00F6\u00A1\u00A2\u00B8\u00DC\u00A1\u00A2\u00BAú\u00A3¨\u00B5\u00E3\u00C5\u00DA\u00A3\u00A9\u00C9á\u00C5\u00C6
         * 3\u00A1\u00A2·\u00A2\u00CF\u00C2\u00D2\u00BB\u00D5\u00C5\u00C5\u00C6\u00A3\u00AC·\u00B5\u00BB\u00D81
         *
         * \u00D0è\u00D2\u00AA×\u00A2\u00D2\u00E2\u00B5\u00C4\u00CA\u00C7\u00B6\u00D4notify\u00B5\u00C4\u00B4\u00A6\u00C0í\u00A3\u00AC\u00D2\u00BB°\u00E3\u00C7é\u00BF\u00F6\u00CF\u00C2\u00A3\u00AC\u00BD\u00D3\u00CA\u00DC\u00B5\u00BDClient\u00B5\u00C4\u00D6\u00B8\u00C1\u00EE\u00A3\u00AC\u00D0è\u00D2\u00AA\u00C1\u00A2\u00BC\u00B4
         * ×\u00F6\u00B4\u00A6\u00C0í\u00A3\u00AC\u00B2\u00A2\u00CD\u00C6\u00BD\u00F8\u00D1\u00AD\u00BB·\u00A3¨±\u00C8\u00C8\u00E7\u00D4\u00DAonDropACard\u00D6\u00D0set CurrentPlayer++\u00A3\u00A9
         * \u00B5\u00AB\u00CA\u00C7\u00A3\u00AC\u00D3\u00D0\u00B8\u00F6\u00BA\u00DC\u00D1\u00CF\u00D6\u00D8\u00B5\u00C4\u00C7±\u00D4\u00DA\u00CE\u00CA\u00CC\u00E2\u00A3\u00BA
         * \u00D2ò\u00CE\u00AA\u00CA\u00C7\u00B5\u00A5\u00CF\u00DF\u00B3\u00CC\u00A3\u00ACserver-(notify)->client-(command)->server-(notify)->client
         * \u00CA\u00C7\u00CB\u00B3\u00D0ò\u00D6\u00B4\u00D0\u00D0\u00B5\u00C4\u00A3\u00AC\u00CBù\u00D2\u00D4\u00BBá\u00D0\u00CE\u00B3\u00C9\u00B6à\u00B8\u00F6·\u00BD·¨\u00BC\u00E4\u00B5\u00C4\u00B5\u00DD\u00B9é\u00B5÷\u00D3\u00C3\u00A3\u00AC\u00BC\u00D3\u00C9\u00CF\u00D3\u00D0\u00B6à\u00B8\u00F6client\u00A1\u00AD\u00A1\u00AD
         *
         * \u00BD\u00E2\u00BE\u00F6°ì·¨\u00CA\u00C7client\u00B6\u00D4server\u00B5\u00C4\u00D6\u00B8\u00C1\u00EE\u00B4\u00E6·\u00C5\u00D4\u00DApassResult\u00C0\u00EF\u00A3\u00AC\u00B5\u00AB\u00B2\u00BB\u00CD\u00C6\u00BD\u00F8\u00D1\u00AD\u00BB·\u00A3\u00AC\u00B4\u00E6·\u00C5
         * \u00BDá\u00B9\u00FB\u00BAó\u00C1\u00A2\u00BC\u00B4·\u00B5\u00BB\u00D8\u00D6÷\u00D1\u00AD\u00BB·\u00A3\u00AC\u00D3\u00C9\u00D6÷\u00D1\u00AD\u00BB·\u00B8\u00BA\u00D4\u00F0\u00BDá\u00B9\u00FB\u00D6\u00B8\u00C1\u00EE\u00A3\u00AC\u00B2\u00A2\u00CD\u00C6\u00BD\u00F8
         *
         * @return
         */
        private MJEventRoundResult runPlayCycler() {
                MJEventRoundResult rt = null;
                boolean hasMoreCard = true;
                int playerNo;
                int passResultNo;
                MJEventObject passResult;
                int lastPlayerNo;

                // play -> eat|peng|gang|hu -> play ... loop
                while (hasMoreCard) {
                        playerNo = getMJModule().getCurrentPlayerNo();

                        getMJModule().clearPassResult();
                        //\u00D2ò\u00CE\u00AA\u00D3\u00C3\u00B5\u00A5\u00CF\u00DF\u00B3\u00CC\u00A3\u00AC\u00B5÷\u00D3\u00C3\u00BBá\u00C1\u00A2\u00BC\u00B4·\u00B5\u00BB\u00D8\u00A1\u00A3
                        notifyClient(playerNo, MJEventObject.getWaitPlayInstance());

                        if (getMJModule().getPassResultCount() > 0) {
                                // hu, zimo, an gang
                                passResult = getMJModule().getPassResult(playerNo);
                                if (passResult.getEventId() == MJEventObject.HU) {
                                        return (MJEventRoundResult)passResult;
                                } else if (passResult.getEventId() == MJEventObject.AN_GANG) {
                                        MJCard card = (MJCard) passResult.getData();
                                        getMJModule().getCardModule().anGang(playerNo, card);
                                        card =
                                                getMJModule()
                                                        .getCardModule()
                                                        .fetchNextBoardCardToCurrentPlayer();
                                        if (card == null)
                                        //	hasMoreCard = false;
                                                break;
                                        else
                                                continue;
                                }
                        }

                        lastPlayerNo = getMJModule().getLastPlayerNo();
                        getMJModule().clearPassResult();
                        //\u00D2ò\u00CE\u00AA\u00D3\u00C3\u00B5\u00A5\u00CF\u00DF\u00B3\u00CC\u00A3\u00AC\u00B5÷\u00D3\u00C3\u00BBá\u00C1\u00A2\u00BC\u00B4·\u00B5\u00BB\u00D8\u00A1\u00A3
                        notifyOtherClientsByOrder(
                                lastPlayerNo,
                                MJEventObject.getWaitPassInstance());

                        // Choose priority result
                        // getMJModule().getPassResultCount() == 3;
                        passResultNo =
                                getMJModule().getPriotityPassNo((lastPlayerNo + 1) % 4);
                        passResult =
                                (passResultNo == -1)
                                        ? null
                                        : getMJModule().getPassResult(passResultNo);

                        if (passResultNo == -1) {
                                // all pass
                                playerNo = (playerNo + 1) % 4;
                                getMJModule().getCardModule().setCurrentPlayerNo(playerNo);

                        } else if (passResult.getEventId() == MJEventObject.EAT) {
                                // eat
                                MJEventEat eeat = (MJEventEat) passResult;
                                getMJModule().getCardModule().eatWithPair(
                                        passResultNo,
                                        eeat.getCard(),
                                        eeat.getPair());
                                getMJModule().getCardModule().setCurrentPlayerNo(passResultNo);

                        } else if (passResult.getEventId() == MJEventObject.PENG) {
                                // peng
                                MJCard card = (MJCard) passResult.getData();
                                getMJModule().getCardModule().peng(passResultNo, card);
                                getMJModule().getCardModule().setCurrentPlayerNo(passResultNo);

                        } else if (passResult.getEventId() == MJEventObject.GANG) {
                                // gang
                                MJCard card = (MJCard) passResult.getData();
                                getMJModule().getCardModule().gang(passResultNo, card);
                                getMJModule().getCardModule().setCurrentPlayerNo(passResultNo);

                        } else if (passResult.getEventId() == MJEventObject.HU) {
                                // hu
                                return (MJEventRoundResult)passResult;

                        }

                        if (passResultNo == -1
                                || passResult.getEventId() == MJEventObject.GANG) {
                                MJCard card =
                                        getMJModule()
                                                .getCardModule()
                                                .fetchNextBoardCardToCurrentPlayer();
                                if (card == null)
                                        hasMoreCard = false;
                        }

                } // while

                return MJEventRoundResult.getDrawInstance();
        }

        private int getClientPlayerNo(Object cid) {
                return getMJModule().getClientPlayerNo(cid);
        }

        // observable methods
        private void notifyClient(int playerNo, Object arg) {
                Client clt = getMJModule().getOnlineClient(playerNo);
                if (clt != null)
                        clt.update(this, arg);
        }

        private void notifyOtherClientsByOrder(int playerNo, Object arg) {
                for (int i = playerNo + 1; i < playerNo + 4; i++) {
                        notifyClient(i % 4, arg);
                }
        }

        public synchronized void addObserver(Observer o) {
                if (!(o instanceof MJClient))
                        return;

                MJClient clt = (MJClient) o;
                int playerNo = countObservers();

                getMJModule().setOnlineClient(playerNo, clt);

                super.addObserver(clt);
                setChanged();
                notifyObservers(MJEventObject.getNewJoinInstance());

        }

}

⌨️ 快捷键说明

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