fix(game): 修复游戏输赢逻辑
- 修改了玩家下注、跟注、加注等操作的逻辑 - 优化了胜利者和失败者的分数计算方法- 调整了底池分数的分配方式 - 修复了一些潜在的bug和性能问题master
parent
31f994343b
commit
0274f58a32
|
|
@ -37,6 +37,7 @@ public class RoomReloadState extends StateBase<Room>{
|
|||
case ActionEvent.EVENT_START_GAME:
|
||||
owner.stateMachine.changeState(Global.getState(RoomStartGameState.class));
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ public class RoomWaitState extends StateBase<Room> {
|
|||
}
|
||||
owner.stateMachine.changeState(Global.getState(RoomStartGameState.class));
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,5 +1,5 @@
|
|||
#Generated by Maven
|
||||
#Thu Jun 19 21:25:43 CST 2025
|
||||
#Fri Jun 20 16:08:37 CST 2025
|
||||
version=1.0.0
|
||||
groupId=com.game
|
||||
artifactId=game_common
|
||||
|
|
|
|||
|
|
@ -1,37 +1,37 @@
|
|||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\GroupPublisherService.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomWaitState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\data\Hp.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerInitState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\data\Room.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\data\BasePlayBack.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerEndState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerPopupState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\data\Player.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\GameController.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\manager\SessionManager.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\data\Timer.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\manager\RoomManager.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomDestoryGameState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\Router.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerWaitState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\GPSUtil.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerSpectatorState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\state\StateMachine.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\data\RoomDismiss.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomEndState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\ActionEvent.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\Util.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\Constant.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\data\JoinRoomData.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\state\StateBase.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\EventController.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerReloadState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\Global.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomReloadState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\GameInterceptor.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\MainServer.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomInitState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerReadyState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerPauseState.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\data\Score.java
|
||||
D:\aga\suoha_6.19\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomStartGameState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\EventController.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\Global.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\state\StateBase.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerReadyState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\GPSUtil.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerPauseState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomInitState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\data\JoinRoomData.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomDestoryGameState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\GameInterceptor.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\MainServer.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\manager\SessionManager.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\GroupPublisherService.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\data\BasePlayBack.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomEndState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\Util.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerWaitState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\Router.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerSpectatorState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\data\Player.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerPopupState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerReloadState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\GameController.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\Constant.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\state\StateMachine.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomWaitState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\ActionEvent.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerEndState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\data\Hp.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomReloadState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\data\Timer.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\manager\RoomManager.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\room\state\RoomStartGameState.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\data\Room.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\data\RoomDismiss.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\data\Score.java
|
||||
D:\aga\suoha_6.20\suoha_server\libs\game_common\src\main\java\com\game\player\state\PlayerInitState.java
|
||||
|
|
|
|||
|
|
@ -87,6 +87,9 @@ public class EXRoom extends Room {
|
|||
|
||||
public EXPlayer win;
|
||||
|
||||
//胜利者id
|
||||
public int winer_playerid = 0;
|
||||
|
||||
public EXRoom(String roomid, Map<String, String> redis_room_map) {
|
||||
super(roomid, redis_room_map);
|
||||
|
||||
|
|
@ -135,7 +138,7 @@ public class EXRoom extends Room {
|
|||
// this.callScore = 0;
|
||||
this.callCount = 0;
|
||||
this.sidePot = 0;
|
||||
this.win = null;
|
||||
// this.win = null;
|
||||
this.card = new RoomCard(this, 2, maxPlayers);
|
||||
super.clear();
|
||||
|
||||
|
|
@ -143,7 +146,8 @@ public class EXRoom extends Room {
|
|||
|
||||
public void clearEx() {
|
||||
this.activeSeat = 0;
|
||||
this.win = null;
|
||||
System.out.println(this.win);
|
||||
// this.win = null;
|
||||
}
|
||||
|
||||
public ITObject getReloadInfo(Player player) {
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ public class EXPlayerBetState extends StateBase<EXPlayer> {
|
|||
room.callScore = owner.betScore;
|
||||
// 追加操作,广播给客户端
|
||||
TObject param = new TObject();
|
||||
System.out.println("111:"+param);
|
||||
if (owner.seat >= room.playerMapByPlaying.size()) {
|
||||
param.putInt("seat", 1);
|
||||
// 发牌
|
||||
|
|
@ -137,10 +138,27 @@ public class EXPlayerBetState extends StateBase<EXPlayer> {
|
|||
|
||||
System.out.println("当前用户 :"+owner.playerid);
|
||||
System.out.println("当前用户的总下注分数:"+owner.totalLostScore);
|
||||
|
||||
if (room.win!=null){
|
||||
if (room.win.playerid==owner.playerid){
|
||||
owner.totalLostScore =owner.totalLostScore- owner.betScore;
|
||||
// 扣除下注分数
|
||||
owner.lostScore =owner.totalLostScore;
|
||||
}else {
|
||||
owner.totalLostScore += owner.betScore;
|
||||
// 扣除下注分数
|
||||
owner.lostScore =owner.betScore;
|
||||
}
|
||||
}else {
|
||||
owner.totalLostScore += owner.betScore;
|
||||
// 扣除下注分数
|
||||
owner.lostScore =owner.betScore;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// room.callScore = 0;
|
||||
room.sidePot += owner.betScore;
|
||||
|
|
@ -154,7 +172,16 @@ public class EXPlayerBetState extends StateBase<EXPlayer> {
|
|||
for (Entry<Integer, Player> entry : room.playerMapBySeat.entrySet()) {
|
||||
EXPlayer player = (EXPlayer) entry.getValue();
|
||||
System.out.println("基础分数:"+player.baseScore);
|
||||
param.putInt("seat_" + player.seat, player.baseScore - player.totalLostScore);
|
||||
if (room.win!=null){
|
||||
if (room.win.playerid==player.playerid){
|
||||
param.putInt("seat_" + player.seat, player.totalLostScore);
|
||||
}else {
|
||||
param.putInt("seat_" + player.seat, 0- player.totalLostScore);
|
||||
}
|
||||
}else {
|
||||
param.putInt("seat_" + player.seat, 0- player.totalLostScore);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
room.broadCastToClient(0, Config.GAME_EVT_RESULT, param);
|
||||
|
|
|
|||
|
|
@ -135,10 +135,24 @@ public class EXPlayerCallState extends StateBase<EXPlayer> {
|
|||
public void addSidePot(EXPlayer owner) {
|
||||
EXRoom room = owner.getRoom();
|
||||
System.out.println("当前需跟注分数"+room.callScore);
|
||||
if (room.win!=null){
|
||||
if (room.win.playerid==owner.playerid){
|
||||
// 扣除下注分数
|
||||
owner.lostScore = room.callScore;
|
||||
owner.totalLostScore =owner.totalLostScore- room.callScore;
|
||||
}else {
|
||||
// 扣除下注分数
|
||||
owner.lostScore = room.callScore;
|
||||
//计算总下注分数
|
||||
owner.totalLostScore += owner.lostScore;
|
||||
}
|
||||
}else {
|
||||
// 扣除下注分数
|
||||
owner.lostScore = room.callScore;
|
||||
//计算总下注分数
|
||||
owner.totalLostScore += owner.lostScore;
|
||||
}
|
||||
|
||||
|
||||
// owner.totalLostScore += room.callScore;
|
||||
|
||||
|
|
@ -152,7 +166,15 @@ public class EXPlayerCallState extends StateBase<EXPlayer> {
|
|||
param.putInt("sidePot", room.sidePot);
|
||||
for (Entry<Integer, Player> entry : room.playerMapBySeat.entrySet()) {
|
||||
EXPlayer player = (EXPlayer) entry.getValue();
|
||||
param.putInt("seat_" + player.seat, player.baseScore - player.totalLostScore);
|
||||
if (room.win!=null){
|
||||
if (room.win.playerid==player.playerid){
|
||||
param.putInt("seat_" + player.seat, player.totalLostScore);
|
||||
}else {
|
||||
param.putInt("seat_" + player.seat, 0- player.totalLostScore);
|
||||
}
|
||||
}else {
|
||||
param.putInt("seat_" + player.seat, 0- player.totalLostScore);
|
||||
}
|
||||
}
|
||||
room.broadCastToClient(0, Config.GAME_EVT_RESULT, param);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -119,13 +119,22 @@ public class EXPlayerRaiseState extends StateBase<EXPlayer> {
|
|||
|
||||
// 扣除下注分数
|
||||
// owner.lostScore = room.raiseScore-owner.needScore;
|
||||
|
||||
if (room.win!=null){
|
||||
if (room.win.playerid==owner.playerid){
|
||||
owner.lostScore = room.raiseScore;
|
||||
owner.totalLostScore =owner.totalLostScore- owner.lostScore;
|
||||
|
||||
}else {
|
||||
owner.lostScore =room.raiseScore;
|
||||
System.out.println("增加的owner.lostScore"+owner.lostScore);
|
||||
|
||||
owner.totalLostScore += owner.lostScore;
|
||||
// owner.totalLostScore += room.raiseScore;
|
||||
}
|
||||
}else {
|
||||
owner.lostScore =room.raiseScore;
|
||||
System.out.println("增加的owner.lostScore"+owner.lostScore);
|
||||
owner.totalLostScore += owner.lostScore;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// room.sidePot += Math.abs(owner.lostScore);
|
||||
|
|
@ -157,8 +166,17 @@ public class EXPlayerRaiseState extends StateBase<EXPlayer> {
|
|||
|
||||
for (Entry<Integer, Player> entry : room.playerMapBySeat.entrySet()) {
|
||||
EXPlayer player = (EXPlayer) entry.getValue();
|
||||
if (room.win!=null){
|
||||
if (room.win.playerid==player.playerid){
|
||||
param.putInt("seat_" + player.seat, player.totalLostScore);
|
||||
}else {
|
||||
param.putInt("seat_" + player.seat, player.baseScore - player.totalLostScore);
|
||||
}
|
||||
}else {
|
||||
param.putInt("seat_" + player.seat, player.baseScore - player.totalLostScore);
|
||||
}
|
||||
|
||||
}
|
||||
room.broadCastToClient(0, Config.GAME_EVT_RESULT, param);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class EXRoomDealState extends StateBase<EXRoom> {
|
|||
List<Integer> actions = new ArrayList<Integer>();
|
||||
actions.add(Integer.parseInt(Config.GAME_BET));
|
||||
actions.add(Integer.parseInt(Config.GAME_FOLD));
|
||||
// actions.add(Integer.parseInt(Config.GAME_CHECK));
|
||||
actions.add(Integer.parseInt(Config.GAME_CHECK));
|
||||
|
||||
if (room.config.getInt(Config.ROOM_CONFIG_ALLIN)==1 && room.counts==2){
|
||||
actions.add(Integer.parseInt(Config.GAME_ALL_IN));
|
||||
|
|
@ -100,8 +100,6 @@ public class EXRoomDealState extends StateBase<EXRoom> {
|
|||
// 扣除底分
|
||||
for (Entry<Integer, Player> entry : room.playerMapByPlaying.entrySet()) {
|
||||
EXPlayer player = (EXPlayer) entry.getValue();
|
||||
// player.lostScore -= room.config.getInt(Config.ROOM_CONFIG_BASE_SCORE);
|
||||
// room.sidePot += room.config.getInt(Config.ROOM_CONFIG_BASE_SCORE);
|
||||
if (room.config.getInt(Config.ROOM_CONFIG_BASE_SCORE)==0){
|
||||
if (room.nextRound==1 && room.config.getInt(Config.ROOM_CONFIG_BASE_SCORE)==0){
|
||||
player.totalLostScore=1;
|
||||
|
|
|
|||
|
|
@ -28,15 +28,15 @@ public void enter(EXRoom owner) {
|
|||
// 遍历房间中所有玩家,清除他们的额外状态
|
||||
for (Entry<Integer, Player> entry : owner.playerMapBySeat.entrySet()) {
|
||||
EXPlayer player = (EXPlayer) entry.getValue();
|
||||
|
||||
// if (owner.nextRound == owner.maxRound){
|
||||
player.clearEx();
|
||||
// }
|
||||
|
||||
}
|
||||
// 清除房间的额外状态
|
||||
owner.clearEx();
|
||||
|
||||
System.out.println("底池分数:"+owner.sidePot);
|
||||
//根据用户id拿用户信息
|
||||
// EXPlayer player = (EXPlayer) owner.playerMapById.get(owner.owner_id);
|
||||
|
||||
|
||||
// 开始游戏
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue