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