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

📄 mjserver.java~2~

📁 麻将程序
💻 JAVA~2~
📖 第 1 页 / 共 2 页
字号:
package com.newpalm.game.mj.server;

import java.util.Observer;

import com.newpalm.game.framework.Client;
import com.newpalm.game.framework.Server;
import com.newpalm.game.mj.client.MJBotClient;
import com.newpalm.game.mj.client.MJClient;
import com.newpalm.game.mj.share.GameState;
import com.newpalm.game.mj.share.MJCard;
import com.newpalm.game.mj.share.MJEventEat;
import com.newpalm.game.mj.share.Player;
import com.newpalm.game.mj.share.MJEventObject;
import com.newpalm.game.mj.share.MJEventRoundResult;

/**
* @author ama
*/
public class MJServer extends Server {

        /**
        *@see java.lang.Object#Object()
        */
        public MJServer() {
                setServerModule(new MJModule());
        }

        // Query interfaces
        public MJModule getMJModule() {
                return (MJModule) this.getServerModule();
        }

        private GameState getGameState() {
                return getMJModule().getGameState();
        }

        // Client commands.

        /* (non-Javadoc)
         * @see com.inxun.game.framework.Server#startNewGame()
         */
        public void onNewGame() {
                int left = 4 - countObservers();
                for (int i = 0; i < left; i++) {
                        Player p = new Player("COM" + i, 25000);
                        MJBotClient clt = new MJBotClient(p);
                        clt.joinServer(this);
                }
                setChanged();
                notifyObservers(MJEventObject.getNewGameInstance());
        }

        public void onNewRound() {
                runMainCycler();
        }

        public void onDropACard(Object cid, MJCard card) {
                int cltNo = getClientPlayerNo(cid);
                if (getMJModule().getCurrentPlayerNo() != cltNo) {
                        return;
                }
                getMJModule().getCardModule().dropCard(cltNo, card);
        }

        public void onPassSignal(Object cid) {
                int playerNo = getClientPlayerNo(cid);
                getMJModule().setPassResult(playerNo, MJEventObject.getPassInstance());
        }

        public void onEatWithPair(Object cid, MJCard card, MJCard[] pair) {
                int playerNo = getClientPlayerNo(cid);
                MJEventEat eeat = new MJEventEat(card, pair);
                getMJModule().setPassResult(playerNo, eeat);
        }

        public void onPeng(Object cid, MJCard card) {
                int playerNo = getClientPlayerNo(cid);
                MJEventObject epeng = MJEventObject.getPengInstance(card);
                getMJModule().setPassResult(playerNo, epeng);
        }

        public void onGang(Object cid, MJCard card) {
                int playerNo = getClientPlayerNo(cid);
                MJEventObject egang = MJEventObject.getGangInstance(card);
                getMJModule().setPassResult(playerNo, egang);
        }

        public void onAnGang(Object cid, MJCard card) {
                int playerNo = getClientPlayerNo(cid);
                MJEventObject egang = MJEventObject.getAnGangInstance(card);
                getMJModule().setPassResult(playerNo, egang);
        }

        public void onHu(Object cid) {
                int playerNo = getClientPlayerNo(cid);
                int bankNo = getMJModule().getBankerNo();
                MJEventRoundResult ehu = MJEventRoundResult.getHuInstance();
                ehu.setWinnerNo(playerNo);
                int[] jetons = ehu.getJetons();
                int jetonwin = 0;
                for (int i = 0; i < jetons.length; i++) {
            if (i != playerNo) {
                    jetons[i] = -1000;
                    if (i == bankNo) jetons[i] += -1000;
                    if (bankNo == playerNo) jetons[i] *= 2;
                    jetonwin += (-jetons[i]);
            }
        }
        jetons[playerNo] = jetonwin;
        ehu.setJetons(jetons);


        String winner = getMJModule().getOnlineClient(playerNo).getPlayer().getName();
                String str = winner + " WIN!\n\n";
                for (int i = 0; i < 4; i++) {
                        str += getMJModule().getOnlineClient(i).getPlayer().getName();
                        str +=  ": " + jetons[i] + "\n";
                }
        ehu.setDescription(str);

                getMJModule().setPassResult(playerNo, ehu);
        }

        // Private method

        private void runMainCycler() {
                // goes round after round
                while (true) {
                        int bankerNo = getMJModule().getBankerNo();
                        bankerNo = (bankerNo + 1) % 4;
                        getMJModule().getGameState().setBankerSeatNo(bankerNo);
                        getMJModule().getCardModule().sendInitialCards(bankerNo);
                        getMJModule().getCardModule().setCurrentPlayerNo(bankerNo);
                        getMJModule().getCardModule().setLastPlayerNo(bankerNo);
                        setChanged();
                        notifyObservers(MJEventObject.getNewRoundInstance());

                        MJEventRoundResult rt = runPlayCycler();
                        for (int i = 0; i < 4; i++) {
                                Player p = getMJModule().getOnlineClient(i).getPlayer();
                                p.setJeton(p.getJeton() + rt.getJetons()[i]);
            }
                        setChanged();
                        notifyObservers(rt);

                        try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                    System.err.println(e);
            }

                }
        }

⌨️ 快捷键说明

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