📄 cardmodule.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 + -