修复幸运号
parent
4e549f031a
commit
67a3f0b9f2
|
|
@ -783,7 +783,7 @@ public class RoomCard {
|
|||
return dealCards;
|
||||
}
|
||||
|
||||
public boolean checksanlong(ArrayList<Integer> dealCards, int tmpcard) {
|
||||
private boolean checksanlong(ArrayList<Integer> dealCards, int tmpcard) {
|
||||
// 判断是否有两条龙
|
||||
ArrayList<Integer> tmpcards = new ArrayList<Integer>();
|
||||
tmpcards.addAll(dealCards);
|
||||
|
|
@ -804,25 +804,25 @@ public class RoomCard {
|
|||
return false;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ArrayList<Integer> tmpcards = new ArrayList<Integer>();
|
||||
ArrayList<Integer> dealCards = new ArrayList<Integer>();
|
||||
dealCards.add(108);
|
||||
dealCards.add(108);
|
||||
dealCards.add(108);
|
||||
dealCards.add(208);
|
||||
dealCards.add(208);
|
||||
dealCards.add(208);
|
||||
dealCards.add(208);
|
||||
tmpcards.addAll(dealCards);
|
||||
Map<Integer, Integer> cardMap = CardUtil.getCardNumMap(tmpcards);
|
||||
for (Map.Entry<Integer, Integer> entry : cardMap.entrySet()) {
|
||||
int card = entry.getKey();
|
||||
int num = entry.getValue();
|
||||
if (num == 4) {
|
||||
System.out.println(card);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// public static void main(String[] args) {
|
||||
// ArrayList<Integer> tmpcards = new ArrayList<Integer>();
|
||||
// ArrayList<Integer> dealCards = new ArrayList<Integer>();
|
||||
// dealCards.add(108);
|
||||
// dealCards.add(108);
|
||||
// dealCards.add(108);
|
||||
// dealCards.add(208);
|
||||
// dealCards.add(208);
|
||||
// dealCards.add(208);
|
||||
// dealCards.add(208);
|
||||
// tmpcards.addAll(dealCards);
|
||||
// Map<Integer, Integer> cardMap = CardUtil.getCardNumMap(tmpcards);
|
||||
// for (Map.Entry<Integer, Integer> entry : cardMap.entrySet()) {
|
||||
// int card = entry.getKey();
|
||||
// int num = entry.getValue();
|
||||
// if (num == 4) {
|
||||
// System.out.println(card);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package extend.zp.player.state;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.game.Global;
|
||||
|
|
@ -31,9 +32,9 @@ public class EXPlayerDrawState extends StateBase<EXPlayer> {
|
|||
|
||||
@Override
|
||||
public void enter(EXPlayer owner) {
|
||||
if(owner.stateMachine.lastState instanceof PlayerPauseState) {
|
||||
if (owner.stateMachine.lastState instanceof PlayerPauseState) {
|
||||
logger.info("状态异常 :" + owner.stateMachine.lastState);
|
||||
owner.stateMachine.curState=owner.stateMachine.lastState;
|
||||
owner.stateMachine.curState = owner.stateMachine.lastState;
|
||||
return;
|
||||
}
|
||||
// logger.info("owner.isTip:"+owner.isTip+"--"+owner.playerid);
|
||||
|
|
@ -52,6 +53,21 @@ public class EXPlayerDrawState extends StateBase<EXPlayer> {
|
|||
room.isAllPass = false;
|
||||
// room.isFanPao = false;
|
||||
owner.getRoom().tipMap.clear();
|
||||
EXPlayer otherPlayer = null;
|
||||
|
||||
// 查询对家信息
|
||||
for (Entry<Integer, Player> entry : owner.getRoom().playerMapById.entrySet()) {
|
||||
if (!entry.getKey().equals(owner.playerid)) {
|
||||
otherPlayer = (EXPlayer) entry.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
if (otherPlayer.black_white_rate > 0) {
|
||||
owner.is_white=true;
|
||||
room.while_list = true;
|
||||
}
|
||||
Global.logger.info("dealcards playerid:" + owner.playerid + " xingyuhao:" + owner.is_white
|
||||
+ " white_value:" + room.white_value);
|
||||
|
||||
if (owner.seat == room.adminSeat) {
|
||||
Global.logger.info("dealcards playerid:" + owner.playerid + " adminseat");
|
||||
|
|
@ -147,77 +163,124 @@ public class EXPlayerDrawState extends StateBase<EXPlayer> {
|
|||
if (owner.black_white_status == 2) {
|
||||
Global.logger
|
||||
.info("dealcards playerid:" + owner.playerid + " white player:" + owner.black_white_rate);
|
||||
/*
|
||||
* double rand = Math.random() % 100 * 100; if (rand <= owner.black_white_rate)
|
||||
* { ArrayList<Integer> tempCardList = new ArrayList<Integer>(); int count = 0;
|
||||
* do { int drawCard = room.card.pop();
|
||||
*
|
||||
* boolean flag = false; if (IsGoodCard((EXPlayer) owner, drawCard)) { flag =
|
||||
* true; }
|
||||
*
|
||||
* if (!flag) { if (room.card.cardList.size() > 0 && count++ <=
|
||||
* room.card.cardList.size()) { tempCardList.add(drawCard);
|
||||
* //Global.logger.info("not good card:" + drawCard + " for white player");
|
||||
* continue; } }
|
||||
*
|
||||
* owner.drawCard = drawCard; break; } while (true);
|
||||
* room.card.cardList.addAll(tempCardList); } else { owner.drawCard =
|
||||
* room.card.pop(); }
|
||||
*/
|
||||
owner.drawCard = room.card.pop();
|
||||
double rand = Math.random() % 100 * 100;
|
||||
if (rand <= owner.black_white_rate) {
|
||||
ArrayList<Integer> tempCardList = new ArrayList<Integer>();
|
||||
int count = 0;
|
||||
do {
|
||||
int drawCard = room.card.pop();
|
||||
|
||||
boolean flag = false;
|
||||
if (IsGoodCard((EXPlayer) owner, drawCard)) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (!flag) {
|
||||
if (room.card.cardList.size() > 0 && count++ <= room.card.cardList.size()) {
|
||||
tempCardList.add(drawCard);
|
||||
Global.logger.info(
|
||||
"状态2的not good card:" + drawCard + " for white player:" + owner.playerid);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
owner.drawCard = drawCard;
|
||||
break;
|
||||
} while (true);
|
||||
room.card.cardList.addAll(tempCardList);
|
||||
} else {
|
||||
int card = room.card.pop();
|
||||
Global.logger.info("正常发牌:" + card);
|
||||
|
||||
owner.drawCard = card;
|
||||
}
|
||||
} else if (owner.black_white_status == 1) {
|
||||
Global.logger
|
||||
.info("dealcards playerid:" + owner.playerid + " black player:" + owner.black_white_rate);
|
||||
/*
|
||||
* double rand = Math.random() % 100 * 100; if (rand <= owner.black_white_rate)
|
||||
* { ArrayList<Integer> tempCardList = new ArrayList<Integer>(); int count = 0;
|
||||
* do { int drawCard = room.card.pop();
|
||||
*
|
||||
* boolean flag = false; if (IsGoodCard((EXPlayer) owner, drawCard)) { flag =
|
||||
* true; }
|
||||
*
|
||||
* if (flag) { if (room.card.cardList.size() > 0 && count++ <=
|
||||
* room.card.cardList.size()) { tempCardList.add(drawCard);
|
||||
* //Global.logger.info("not good card:" + drawCard + " for white player");
|
||||
* continue; } }
|
||||
*
|
||||
* owner.drawCard = drawCard; break; } while (true);
|
||||
* room.card.cardList.addAll(tempCardList); } else { owner.drawCard =
|
||||
* room.card.pop(); }
|
||||
*/
|
||||
owner.drawCard = room.card.pop();
|
||||
double rand = Math.random() % 100 * 100;
|
||||
if (rand <= owner.black_white_rate) {
|
||||
ArrayList<Integer> tempCardList = new ArrayList<Integer>();
|
||||
int count = 0;
|
||||
do {
|
||||
int drawCard = room.card.pop();
|
||||
|
||||
boolean flag = false;
|
||||
if (IsGoodCard((EXPlayer) owner, drawCard)) {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
if (room.card.cardList.size() > 0 && count++ <= room.card.cardList.size()) {
|
||||
tempCardList.add(drawCard);
|
||||
Global.logger.info(
|
||||
"状态1的not good card:" + drawCard + " for white player:" + owner.playerid);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
owner.drawCard = drawCard;
|
||||
break;
|
||||
} while (true);
|
||||
room.card.cardList.addAll(tempCardList);
|
||||
} else {
|
||||
int card = room.card.pop();
|
||||
Global.logger.info("正常发牌:" + card);
|
||||
|
||||
owner.drawCard = card;
|
||||
}
|
||||
} else {
|
||||
Global.logger.info("dealcards playerid:" + owner.playerid + " general player");
|
||||
/*
|
||||
* boolean black_flag = false; for (Map.Entry<Integer, Player> entry :
|
||||
* room.playerMapBySeat.entrySet()) { Player player = entry.getValue();
|
||||
*
|
||||
* if (player.playerid != owner.playerid) { if (player.black_white_status == 1)
|
||||
* { black_flag = true; } } }
|
||||
*
|
||||
* double rand = Math.random() % 100 * 100; if (black_flag && rand <=
|
||||
* owner.black_white_rate) { ArrayList<Integer> tempCardList = new
|
||||
* ArrayList<Integer>(); int count = 0; do { int drawCard = room.card.pop();
|
||||
*
|
||||
* boolean flag = false; for (Map.Entry<Integer, Player> entry :
|
||||
* room.playerMapBySeat.entrySet()) { Player player = entry.getValue();
|
||||
*
|
||||
* if (player.playerid != owner.playerid) { if (player.black_white_status == 1)
|
||||
* { if (IsGoodCard2((EXPlayer) player, drawCard)) { flag = true; break; } } } }
|
||||
*
|
||||
* if (flag) { if (room.card.cardList.size() > 0 && count++ <=
|
||||
* room.card.cardList.size()) { tempCardList.add(drawCard);
|
||||
* Global.logger.info("not good card:" + drawCard + " for white player");
|
||||
* continue; } }
|
||||
*
|
||||
* owner.drawCard = drawCard; break; } while (true);
|
||||
* room.card.cardList.addAll(tempCardList); } else { owner.drawCard =
|
||||
* room.card.pop(); }
|
||||
*/
|
||||
boolean black_flag = false;
|
||||
for (Map.Entry<Integer, Player> entry : room.playerMapBySeat.entrySet()) {
|
||||
Player player = entry.getValue();
|
||||
|
||||
if (player.playerid != owner.playerid) {
|
||||
if (player.black_white_status == 1) {
|
||||
black_flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
double rand = Math.random() % 100 * 100;
|
||||
if (black_flag && rand <= owner.black_white_rate) {
|
||||
ArrayList<Integer> tempCardList = new ArrayList<Integer>();
|
||||
int count = 0;
|
||||
do {
|
||||
int drawCard = room.card.pop();
|
||||
|
||||
boolean flag = false;
|
||||
for (Map.Entry<Integer, Player> entry : room.playerMapBySeat.entrySet()) {
|
||||
Player player = entry.getValue();
|
||||
|
||||
if (player.playerid != owner.playerid) {
|
||||
if (player.black_white_status == 1) {
|
||||
if (IsGoodCard2((EXPlayer) player, drawCard)) {
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
if (room.card.cardList.size() > 0 && count++ <= room.card.cardList.size()) {
|
||||
tempCardList.add(drawCard);
|
||||
Global.logger.info("not good card:" + drawCard + " for white player");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
owner.drawCard = drawCard;
|
||||
break;
|
||||
} while (true);
|
||||
room.card.cardList.addAll(tempCardList);
|
||||
} else {
|
||||
|
||||
owner.drawCard = room.card.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
room.step++;
|
||||
int tempStep = room.step;
|
||||
|
|
@ -299,6 +362,34 @@ public class EXPlayerDrawState extends StateBase<EXPlayer> {
|
|||
return false;
|
||||
}
|
||||
|
||||
// private boolean IsGoodCard3(EXPlayer player, int drawCard) {
|
||||
// boolean goodCard = false;
|
||||
// if (Paixing.checkWin((EXPlayer) player, drawCard)) {
|
||||
// goodCard = true;
|
||||
// }
|
||||
//
|
||||
// for (int i = 0; i < player.kanGroup.size(); i++) {
|
||||
// if (drawCard == player.kanGroup.get(i)[0]) {
|
||||
// goodCard = true;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// for (int i = 0; i < player.weiGroup.size(); i++) {
|
||||
// if (drawCard == player.weiGroup.get(i)[0]) {
|
||||
// goodCard = true;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (CardUtil.cardNum(drawCard, player.cardInhand) >= 2) {
|
||||
// goodCard = true;
|
||||
// }
|
||||
// if (goodCard == true) {
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// return false;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void toNextState(EXPlayer owner) {
|
||||
if (!owner.getRoom().isAllPass) {
|
||||
|
|
@ -353,7 +444,7 @@ public class EXPlayerDrawState extends StateBase<EXPlayer> {
|
|||
owner.room.enqueueRunnable(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (owner.drawCard != 0 ) {
|
||||
if (owner.drawCard != 0) {
|
||||
ITObject param = new TObject();
|
||||
param.putInt("card", owner.drawCard);
|
||||
param.putInt("seat", owner.seat);
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ public class Paixing {
|
|||
}
|
||||
|
||||
// 处理一块扁
|
||||
MingtangCheck mingtangCheck1 = new MingtangCheck(list, drawCard);
|
||||
// MingtangCheck mingtangCheck1 = new MingtangCheck(list, drawCard);
|
||||
// logger.info("进入一块匾之前");
|
||||
//
|
||||
// logger.info("player:"+player.playerid+"---"+player.cardInhand+"--"+player.opCardList.size()+"---摸到的牌:"+drawCard);
|
||||
|
|
@ -102,29 +102,26 @@ public class Paixing {
|
|||
// }
|
||||
// logger.info("进入一块匾之后");
|
||||
|
||||
boolean yikuaibian = mingtangCheck1.yikuaibian(player);
|
||||
if (yikuaibian && mingtangCheck1.huxiTotal >= 15) {
|
||||
// for (int i = 0; i < mingtangCheck1.opCardList.size(); i++) {
|
||||
// logger.info("检测一块扁增加的opCard:"+mingtangCheck1.opCardList.get(i).card1 + "---" + mingtangCheck1.opCardList.get(i).card2
|
||||
// + "---" + mingtangCheck1.opCardList.get(i).card3 + "---"
|
||||
// + mingtangCheck1.opCardList.get(i).huXi);
|
||||
// boolean yikuaibian = mingtangCheck1.yikuaibian(player);
|
||||
// if (yikuaibian && mingtangCheck1.huxiTotal >= 15) {
|
||||
//// for (int i = 0; i < mingtangCheck1.opCardList.size(); i++) {
|
||||
//// logger.info("检测一块扁增加的opCard:"+mingtangCheck1.opCardList.get(i).card1 + "---" + mingtangCheck1.opCardList.get(i).card2
|
||||
//// + "---" + mingtangCheck1.opCardList.get(i).card3 + "---"
|
||||
//// + mingtangCheck1.opCardList.get(i).huXi);
|
||||
//// }
|
||||
////
|
||||
//// logger.info("一块匾:" + yikuaibian);
|
||||
// player.huXi = mingtangCheck1.huxiTotal;
|
||||
// player.opCardList.addAll(mingtangCheck1.opCardList);
|
||||
// player.handCard.clear();
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// logger.info("一块匾:" + yikuaibian);
|
||||
player.huXi = mingtangCheck1.huxiTotal;
|
||||
player.opCardList.addAll(mingtangCheck1.opCardList);
|
||||
player.handCard.clear();
|
||||
return true;
|
||||
}
|
||||
// logger.info("player.huXi:" + player.huXi);
|
||||
// logger.info("player.cardInhand:" + player.cardInhand);
|
||||
// logger.info("win.cardList:" + win.cardList);
|
||||
|
||||
// 原始算法计算
|
||||
boolean canWin = win.tryWin(player);
|
||||
// logger.info("canWin:" + canWin);
|
||||
// logger.info("isWin:" + isWin);
|
||||
// logger.info("player.huXi:" + player.huXi);
|
||||
|
||||
if (canWin && !isWin) {
|
||||
|
||||
|
|
@ -223,7 +220,7 @@ public class Paixing {
|
|||
}
|
||||
|
||||
}
|
||||
logger.info("最后胡息:" + player.huXi);
|
||||
// logger.info("最后胡息:" + player.huXi);
|
||||
return isWin;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue