Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于国际象棋棋盘游戏逻辑的持久套接字(Android)_Java_Android_Sockets_Chess - Fatal编程技术网

Java 用于国际象棋棋盘游戏逻辑的持久套接字(Android)

Java 用于国际象棋棋盘游戏逻辑的持久套接字(Android),java,android,sockets,chess,Java,Android,Sockets,Chess,我刚刚学习了Android和Java编程(里面有很多noob),我想问一些关于Android编程和Socket服务器的问题 我被指派创建一个简单的国际象棋应用程序(不包括AI), 将从TCP套接字中检索典当的位置: 服务器:xinuc.org 港口:7387 我被告知要使用套接字持久性,因为服务器将每秒更新典当的位置,典当的位置将以这种格式发送 [典当代码][水平位置][垂直位置][空格] 典当代码: K:白王 问:白皇后 白主教 N:白骑士 R:白车 k:黑国王 问:黑皇后 b:黑人主教 n:

我刚刚学习了Android和Java编程(里面有很多noob),我想问一些关于Android编程和Socket服务器的问题

我被指派创建一个简单的国际象棋应用程序(不包括AI), 将从TCP套接字中检索典当的位置

服务器:xinuc.org

港口:7387

我被告知要使用套接字持久性,因为服务器将每秒更新典当的位置,典当的位置将以这种格式发送

[典当代码][水平位置][垂直位置][空格]

典当代码:

K:白王

问:白皇后

白主教

N:白骑士

R:白车

k:黑国王

问:黑皇后

b:黑人主教

n:黑骑士

r:黑车

例如:Ka1 Qg3 Be6等

然后,我的应用程序必须调整检索到的位置,并相应地移动棋子

我读过一些关于Android Socket编程的教程,但仍然有点困惑,我使用了AsyncTask而不是Thread,因为我读到AsyncTask在这种情况下是一个更好的选择

在阅读并了解了一些之后,下面是我如何使用Socket(在doInBackground中)检索数据的:

CMIIW,我不认为我上面放的从套接字检索数据的代码是最佳实践

这就是支持我下面问题的背景(很长很无聊),我这里有两个主要问题:

  • 我对我在这里做的事情有点不知所措,我上面提供的代码能够从客户端读取数据吗

  • 在我检索数据之后,我应该相应地移动典当的位置。我仍然不知道该怎么做(关于我如何创建棋盘,以及如何移动棋子的位置)。你能用一种更容易理解的方式告诉我应该怎么做吗

  • 我读过: ,

    但我觉得对我来说太复杂了


    提前谢谢你

    你的问题太宽泛了。您可能需要指定需要帮助的部件。无论如何,我会尝试给出一些一般性的想法。我希望有帮助

    模型
    • 首先为棋子、棋手、棋手创建数据模型, 还有棋盘
    网络
    • 然后确保通过TCP正确接收数据 网络。这是您应该掌握异步任务的地方。你先 了解AsyncTask的工作流程后,您可以使用开始开发自己的AsyncTask
    桂 最后,您应该实现图形。基于应用程序 在您的项目中,AFAIK有三种替代方法 拿着

    • 您可以对棋子使用ImageButton,并使用 Android动画。谷歌GridView也是。我在Android上发现了两个基于网格的国际象棋实现:和

    • 如果您是一名web开发人员,或者碰巧,您熟悉 Android Canvas API,这是一种更好的方式,为您提供更多的自由和准确性

    • 另一种更耗时但更专业的用户界面设计方法 游戏,可能正在使用OpenGL ES for Android。你可以阅读,看一看,或者掌握关于这个主题的知识。如果你想要3D,一定要使用OpenGL


    总之,有一些流行的游戏引擎可以帮助你 快速高效地成为专业的游戏开发者。Cocos2D 是我的最爱之一,它适合国际象棋比赛,而且是综合性的 托德·帕金斯在林达的作品

    try {
        clientSocket = new Socket(SERVERADD, SERVERPORT);
        InputStreamReader inputStream = new InputStreamReader(clientSocket.getInputStream());
        BufferedReader reader = new BufferedReader(inputStream);
        String latestPosition = reader.readLine();
        storedPosition=latestPosition;
    } catch (UnknownHostException e) {
        Log.d("Error Unknown Host", String.valueOf(e));
    } catch (IOException e) {
        Log.d("Error IOException", String.valueOf(e));
    }