feat(game): 添加玩家胜利标识并优化游戏结束逻辑

-
- 优化 Room 类中的游戏结束处理逻辑,包括分数保存和奖励计算
- 更新 RoomEndState 类的 enter 方法,改进玩家状态切换流程
- 在 EXPlayerBetState 中添加日志输出,便于调试- 为 EXPlayBack 类的 addResultCommand 方法添加注释,提高代码可读性
master
苗庆帅 2025-06-20 15:49:10 +08:00
parent 561d4f5d27
commit b134082820
12 changed files with 40 additions and 15 deletions

View File

@ -163,6 +163,9 @@ public class Player {
*/ */
public int xi_pai_total = 0; public int xi_pai_total = 0;
//赢了的玩家
public int winer_playerid = 0;
public Player(int playerid, Room table, String session_id) { public Player(int playerid, Room table, String session_id) {
this.room = table; this.room = table;
this.playerid = playerid; this.playerid = playerid;

View File

@ -624,6 +624,7 @@ public class Room implements Runnable {
this.saveMilitaryTotal(true); this.saveMilitaryTotal(true);
} else { } else {
roomResult(); roomResult();
// this.saveMilitaryTotal(true);
} }
Global.logger.info("total: "+total); Global.logger.info("total: "+total);
for (Entry<Integer, Player> entry : this.playerMapById.entrySet()) { for (Entry<Integer, Player> entry : this.playerMapById.entrySet()) {

View File

@ -13,14 +13,24 @@ import com.game.state.StateBase;
public class RoomEndState extends StateBase<Room>{ public class RoomEndState extends StateBase<Room>{
/**
*
*
* @param owner 访
*/
@Override @Override
public void enter(Room owner) { public void enter(Room owner) {
// 保存房间拥有者的分数,以便在进入房间后更新分数信息
owner.saveSocre(); owner.saveSocre();
// 遍历房间中所有座位上的玩家,为每个玩家更新状态
for (Entry<Integer, Player> entry : owner.playerMapBySeat.entrySet()) { for (Entry<Integer, Player> entry : owner.playerMapBySeat.entrySet()) {
// 获取当前遍历到的玩家对象
Player player = entry.getValue(); Player player = entry.getValue();
// 为玩家切换到结束状态,表示玩家已准备好开始游戏或观战
player.stateMachine.changeState( Global.getState(PlayerEndState.class)); player.stateMachine.changeState( Global.getState(PlayerEndState.class));
} }
} }
public void execute(Room owner, String cmd, int gid, Object param) { public void execute(Room owner, String cmd, int gid, Object param) {

View File

@ -39,7 +39,15 @@ public class EXPlayBack extends BasePlayBack{
addCommand("newindex", 0, cmdData); addCommand("newindex", 0, cmdData);
} }
/**
*
*
*
* @param seat
* @param cmdData ITObject
*/
public void addResultCommand(int seat,ITObject cmdData) { public void addResultCommand(int seat,ITObject cmdData) {
// 调用addCommand方法将命令类型设置为"result",将特定座位号和命令数据作为参数传递
addCommand("result", seat, cmdData); addCommand("result", seat, cmdData);
} }
} }

View File

@ -135,6 +135,9 @@ public class EXPlayerBetState extends StateBase<EXPlayer> {
} }
System.out.println("当前用户 "+owner.playerid);
System.out.println("当前用户的总下注分数:"+owner.totalLostScore);
owner.totalLostScore += owner.betScore; owner.totalLostScore += owner.betScore;
// 扣除下注分数 // 扣除下注分数
owner.lostScore =owner.betScore; owner.lostScore =owner.betScore;
@ -150,8 +153,8 @@ public class EXPlayerBetState extends StateBase<EXPlayer> {
for (Entry<Integer, Player> entry : room.playerMapBySeat.entrySet()) { for (Entry<Integer, Player> entry : room.playerMapBySeat.entrySet()) {
EXPlayer player = (EXPlayer) entry.getValue(); EXPlayer player = (EXPlayer) entry.getValue();
System.out.println("基础分数:"+player.baseScore);
param.putInt("seat_" + player.seat, player.baseScore - player.totalLostScore); param.putInt("seat_" + player.seat, player.baseScore - player.totalLostScore);
} }
room.broadCastToClient(0, Config.GAME_EVT_RESULT, param); room.broadCastToClient(0, Config.GAME_EVT_RESULT, param);