我目前正在用 Java 编写 Mensch ärgere dich nicht 程序。但我一无所获,因为发送游戏文件的服务器和客户端获取了错误的数据(两者都通过线程在一个程序中运行,其中数据通过套接字交换)。 如果有人可以调查这个问题,我会很高兴。
具体问题: 在程序开始时创建 2 个线程:一个服务器和一个客户端。客户端一次又一次地获取游戏(作为一个对象),并且必须在轮到客户端时做出选择并将其发送到服务器。
然而,客户端接收到的数据相当不可靠,有时甚至根本不可靠。 不过,将其寄回是可行的。
例如,在服务器上轮到红队,但客户端却说轮到蓝队。
控制台输出:
SERVER: Currently playing: java.awt.Color[r=255,g=0,b=0] is bot: false
SERVER: Team java.awt.Color[r=255,g=0,b=0] is playing
Würfel zeigt 5
SERVER: Dice rolled: 5
SERVER: Object sent
SERVER: Broadcasted to all clients
CLIENT: Spiel recived
SERVER: Recived confirmation from client: true
SERVER: Got confirmation from all CLients
CLIENT: Confirmation sent
SERVER: Team is a Bot; Waiting for client to select stone
CLIENT: getLastDiceRoll is not null: 1
SERVER: Waiting for client to select stone
CLIENT: Waiting for server...
我在 Windows 上使用 java 11。并且不能使用任何外部库。
答案是Java并没有像我想象的那样真正复制对象。我必须为每个重要的实例创建一个复制方法。