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