Bläddra i källkod

提交机器人代码

johnclot69 3 månader sedan
förälder
incheckning
6a4df01719

+ 2 - 0
incubator-game/src/main/java/com/incubator/game/data/po/PlayerInfoPO.java

@@ -105,6 +105,8 @@ public class PlayerInfoPO {
 	public int circleNum = 0;
 	/**是否扛旗*/
 	public boolean isFlag;
+	/** 机器人操作时间 **/
+	public int robotOpTime;
 
 	/**最优局次和分数*/
 	public Map<Integer,Integer> bestScore = new HashMap<>();

+ 3 - 2
incubator-game/src/main/java/com/incubator/game/robot/RobotService.java

@@ -1,7 +1,7 @@
 package com.incubator.game.robot;
 
 import com.incubator.common.log4j.Log;
-import com.incubator.game.data.po.PlayerInfoPO;
+import com.incubator.common.util.RandomUtil;
 import com.incubator.game.player.GPlayer;
 import com.incubator.game.player.Player;
 import com.incubator.game.room.Room;
@@ -9,7 +9,6 @@ import com.incubator.game.util.GDUtils;
 import com.incubator.game.util.RobotUtil;
 import com.incubator.message.proto.CommonProto;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -68,6 +67,8 @@ public class RobotService {
                             tmPlayer.receive(CommonProto.Cmd.ReadyStateUpdate_VALUE, data);
                         }
                     }
+                    // 机器人操作时间 3-6秒随机
+                    robot.data.robotOpTime = RandomUtil.getRandomInt(3, 6);
                     // 添加机器人集合
                     this.robotPlayers.put(robot.getId(), robot);
                 }

+ 38 - 32
incubator-game/src/main/java/com/incubator/game/room/GDRoom.java

@@ -204,9 +204,9 @@ public class GDRoom extends Room {
                     }
 
                     // 60秒未开始添加机器人
-//                    if (this.time >= 60 && this.data.type != 1) {
-//                        RobotService.getInstance().joinRoom(this);
-//                    }
+                    if (this.time >= 60 && this.data.type != 1) {
+                        RobotService.getInstance().joinRoom(this);
+                    }
 
                     // 120秒未开始直接解散
 //                    if (this.time >= 120 && this.type != 1) {
@@ -256,35 +256,33 @@ public class GDRoom extends Room {
 //                        }
                     } else {
                         // 随机一个时间
-//                        int opTime = RandomUtil.getRandomInt(3, 6);
-//                        if (this.time >= opTime) {
-//                            // 庄家出牌
-//                            Player zhuangPlayer = this.data.playerMap[this.data.zhuangPos];
-//                            if (zhuangPlayer != null && this.data.currentPlayer != null
-//                                    && zhuangPlayer.getId().equals(this.data.currentPlayer.getId())
-//                                    && this.data.currentPlayer.data.isRobot) {
-//                                RobotService.getInstance().robotDisCard(this, this.data.jieFengPlayer);
-//                                this.flag = true;
-//                                this.time = 0;
-//                                break;
-//                            }
-//
-//                            // 机器人接风
-//                            if (this.data.jieFengPlayer != null && this.data.jieFengPlayer.data.isRobot) {
-//                                RobotService.getInstance().robotDisCard(this, this.data.jieFengPlayer);
-//                                this.flag = true;
-//                                this.time = 0;
-//                                break;
-//                            }
-//
-//                            // 机器人操作过
-//                            if (this.data.currentPlayer != null && this.data.currentPlayer.data.isRobot) {
-//                                RobotService.getInstance().robotPass(this, this.data.currentPlayer);
-//                                this.flag = true;
-//                                this.time = 0;
-//                                break;
-//                            }
-//                        }
+                        if (this.data.currentPlayer.data.isRobot) {
+
+                            if (this.time >= this.data.currentPlayer.data.robotOpTime) {
+                                Player zhuangPlayer = this.data.playerMap[this.data.zhuangPos];
+                                if (zhuangPlayer != null && zhuangPlayer.getId().equals(this.data.currentPlayer.getId())) {
+                                    // 庄家出牌
+                                    RobotService.getInstance().robotDisCard(this, this.data.currentPlayer);
+                                    this.flag = true;
+                                    this.time = 0;
+                                    break;
+                                } else if (this.data.jieFengPlayer != null && this.data.jieFengPlayer.data.isRobot) {
+                                    // 机器人接风
+                                    RobotService.getInstance().robotDisCard(this, this.data.jieFengPlayer);
+                                    this.flag = true;
+                                    this.time = 0;
+                                    break;
+                                }
+
+                                // 机器人操作过
+                                if (this.data.currentPlayer != null && this.data.currentPlayer.data.isRobot) {
+                                    RobotService.getInstance().robotPass(this, this.data.currentPlayer);
+                                    this.flag = true;
+                                    this.time = 0;
+                                    break;
+                                }
+                            }
+                        }
 
                         // 20秒未操作,强制过
 //                        if (this.time >= 20) {
@@ -556,6 +554,8 @@ public class GDRoom extends Room {
                     this.data.result.clear();
                 }
             }
+            // todo 测试代码
+//            this.data.curLevelPoint = 14;
             // 发牌
             this.doSendCard();
             // 进还贡数据
@@ -1112,6 +1112,9 @@ public class GDRoom extends Room {
             }
         }
 
+        this.flag = true;
+        this.time = 0;
+
         boolean isGameOver = false;
 
         // 4人房2人一队手牌出完,直接结算
@@ -1274,6 +1277,9 @@ public class GDRoom extends Room {
             }
         }
 
+        this.flag = true;
+        this.time = 0;
+
         // 记录游戏回放
         Map<String, Object> data = this.roomToPlayBack(this.data.currentPlayer);
         this.playBack.put(Long.toString(System.currentTimeMillis()), data);

+ 0 - 5
incubator-game/src/main/java/com/incubator/game/room/Room.java

@@ -5,17 +5,12 @@ import com.alibaba.fastjson2.JSONObject;
 import com.incubator.common.log4j.Log;
 import com.incubator.core.room.GRoomInterface;
 import com.incubator.game.constant.RedisKeyConstant;
-import com.incubator.game.contest.Contest;
-import com.incubator.game.contest.ContestService;
-import com.incubator.game.data.entity.ZjUserInfolog;
 import com.incubator.game.data.jedis.RedisUtil;
 import com.incubator.game.data.po.RoomPO;
 import com.incubator.game.player.Player;
 import com.incubator.game.util.GDUtils;
 import com.incubator.game.util.SendGameInfoUtil;
 
-import java.math.BigDecimal;
-import java.util.Date;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executors;

+ 2 - 1
incubator-game/src/main/java/com/incubator/game/room/ZDRoom.java

@@ -456,7 +456,6 @@ public class ZDRoom extends Room {
 //                if (this.data.wildCard != 0) {
 //                    player.data.remainCards = CardUtils.add(player.data.remainCards, this.data.wildCard);
 //                    player.data.remainCards = CardUtils.add(player.data.remainCards, this.data.wildCard);
-//                    player.data.remainCards = CardUtils.add(player.data.remainCards, this.data.wildCard);
 //                }
             }
         }
@@ -584,6 +583,8 @@ public class ZDRoom extends Room {
             // 级牌下标
             int index = (this.data.curLevelIndex + 1) % GDUtils.randomTeam.length;
             this.data.curLevelPoint = (GDUtils.randomTeam[index] & 0xF);
+            // todo 测试代码
+//            this.data.curLevelPoint = 14;
             // 发牌
             this.doSendCard();
             // 进还贡数据