我的 Android 服务器游戏有问题。在一个玩家移动后,每隔 3 秒就会向服务器发送一个请求,以检查其他玩家是否移动,以便第一个玩家可以再次移动。现在我不知道为什么,但无论我怎么做(使用 Thread.sleep() 或下面的方法),就像其余的代码不存在一样。
if (this.filled[field_id] != 0) // The field was already marked
return;
neighbours(field_id); // Colouring neccesary fields
// Sending updated board to the server:
if (move>0) {
filled[field_id] = current;
GameAndroidUtil.callGameAddMove(session, filled);
switchColourToOpposite(current); // Switching colour to the opposite as our opponent will now take action
}
score(); // Updating the score after our move
if (isBoardFull()){ // Checking if the board is empty
if(white_score>black_score)
Toast.makeText(this, "White won!", Toast.LENGTH_SHORT).show();
else if(white_score<black_score)
Toast.makeText(this, "Black won!", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "No winner!", Toast.LENGTH_SHORT).show();
}
// Waiting for the opponent to make his move
boolean different = false;
while (!different) {
long startTime = System.currentTimeMillis();
long endTime = System.currentTimeMillis();
while(endTime!=startTime+3000)
endTime = System.currentTimeMillis();
if (checkChange()) {
different = true;
}
}
neighbours() 和 score() 应该给棋盘上色,然后计算当前分数。但他们没有。然而,代表棋盘(已填充)的数组在通过 callGameAddMove(会话,已填充)发送到服务器时会正确更新。
这个怎么可能?我使用 ksoap2 向服务器发送和接收请求。