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

📄 cardmodule.java

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

import java.util.Collection;
import java.util.List;
import java.util.Random;
import java.util.Vector;

import com.newpalm.game.mj.share.MJCard;
import com.newpalm.game.mj.share.PlayerCardModule;

/**
 * @author liyamin
 */
public class CardModule {
  private Random rand = new Random();
  private List boardCards = new Vector();
  private List playerCardModules = new Vector();

  private int currentPlayerNo;
  private int lastPlayerNo;

  /**
   *@see java.lang.Object#Object()
   */
  public CardModule() {
    reset();
  }

  public boolean hasMoreBoardCard() {
    return! (getBoardCards().isEmpty());
  }

  public MJCard fetchNextBoardCardToPlayer(int playerNo) {
    if (!hasMoreBoardCard()) {
      return null;
    }
    MJCard card = (MJCard) getBoardCards().remove(0);
    giveCardToPlayer(card, playerNo);
    return card;
  }

  public MJCard fetchNextBoardCardToCurrentPlayer() {
    return fetchNextBoardCardToPlayer(getCurrentPlayerNo());
  }

  public void dropCard(int playerNo, MJCard card) {
    getPlayerCardModule(playerNo).dropACard(card);
    setLastPlayerNo(playerNo);
  }

  private void giveCardToPlayer(MJCard card, int playerNo) {
    getPlayerCardModule(playerNo).fetchNewCard(card);
  }

  public void reset() {
    generatorCards();
    playerCardModules.clear();
    for (int i = 0; i < 4; i++) {
      playerCardModules.add(new PlayerCardModule());
    }
    shuffle();
  }

  private void generatorCards() {
    boardCards.clear();
    for (int i = 0; i <= 33; i++) { // 33
      for (int j = 0; j < 4; j++) { // 4
        MJCard card = new MJCard(i);
        boardCards.add(card);
      }
    }
  }

  private void shuffle() {
    List list = (List) getBoardCards();
    Object temp;
    for (int i = 0; i < list.size(); i++) {
      int j = rand.nextInt(list.size());
      temp = list.get(i);
      list.set(i, list.get(j));
      list.set(j, temp);
    }
  }

  public void sendInitialCards(int first) {
    reset();
    for (int i = first; i < 13 * 4 + first + 1; i++) {
      int playerNo = i % 4;
      fetchNextBoardCardToPlayer(playerNo);
    }
    for (int i = 0; i < 4; i++) {
      if (i != first) {
        getPlayerCardModule(i).mergeNewCard();
      }
    }
  }

  public void eatWithPair(int playerNo, MJCard card, MJCard[] pair) {
    getPlayerCardModule(playerNo).eatWithPair(card, pair);
  }

  public void peng(int playerNo, MJCard card) {
    getPlayerCardModule(playerNo).peng(card);
  }

  public void gang(int playerNo, MJCard card) {
    getPlayerCardModule(playerNo).gang(card);
  }

  public void anGang(int playerNo, MJCard card) {
    getPlayerCardModule(playerNo).anGang(card);
  }

  /**
   * @return
   */
  public List getBoardCards() {
    return boardCards;
  }

  public PlayerCardModule getPlayerCardModule(int playerNo) {
    return (PlayerCardModule)this.playerCardModules.get(playerNo);
  }

  public Collection getDroppedCards(int playerNo) {
    return (Collection) getPlayerCardModule(playerNo).getDroppedCards();
  }

  public MJCard getLastDroppedCard() {
    List dc = (List) getDroppedCards(getLastPlayerNo());
    if (dc.size() == 0) {
      return null;
    }
    return (MJCard) dc.get(dc.size() - 1);
  }

  /* (non-Javadoc)
   * @see java.lang.Object#toString()
   */
  public String toString() {
    String str = "Board Cards(" + getBoardCards().size() + "):\n";
    str += "Players' cards:\n";
    for (int i = 0; i < 4; i++) {
      str += "P" + i + ": " + getPlayerCardModule(i);
    }
    return str;
  }

  public void setCurrentPlayerNo(int currentPlayerNo) {
    this.currentPlayerNo = currentPlayerNo;
  }

  public int getCurrentPlayerNo() {
    return currentPlayerNo;
  }

  public void setLastPlayerNo(int lastPlayerNo) {
    this.lastPlayerNo = lastPlayerNo;
  }

  public int getLastPlayerNo() {
    return lastPlayerNo;
  }

  public int countLeftCard() {
    return getBoardCards().size();
  }

}

⌨️ 快捷键说明

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