0

我的 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 向服务器发送和接收请求。

4

0 回答 0