我刚学会了Android和Java编程(非常新手),我想请教一些关于Android编程和Socket服务器的问题。
我得到了一个任务,创建一个简单的国际象棋应用程序(不包括人工智能),棋子的位置将从TCP套接字中检索:
服务器:xinuc.org
端口:7387
我被告知使用Socket Persistent,因为服务器每秒钟会更新棋子的位置,棋子的位置将以以下格式发送:
[棋子代码] [水平位置] [垂直位置] [空格],
棋子代码:
K:白色国王
Q:白色皇后
B:白色主教
N:白色马
R:白色车
k:黑色国王
q:黑色皇后
b:黑色主教
n:黑色马
r:黑色车
例如:Ka1 Qg3 Be6等等。
然后我的应用程序必须调整检索到的位置并相应地移动棋子。
我已经阅读了一些关于Android Socket编程的教程,但仍然有些困惑,虽然我使用了AsyncTask而不是Thread,因为我读到AsyncTask在这种情况下是更好的选择。
在阅读和学习了一些之后,这是我如何使用Socket检索数据(在doInBackground中):
我得到了一个任务,创建一个简单的国际象棋应用程序(不包括人工智能),棋子的位置将从TCP套接字中检索:
服务器:xinuc.org
端口:7387
我被告知使用Socket Persistent,因为服务器每秒钟会更新棋子的位置,棋子的位置将以以下格式发送:
[棋子代码] [水平位置] [垂直位置] [空格],
棋子代码:
K:白色国王
Q:白色皇后
B:白色主教
N:白色马
R:白色车
k:黑色国王
q:黑色皇后
b:黑色主教
n:黑色马
r:黑色车
例如:Ka1 Qg3 Be6等等。
然后我的应用程序必须调整检索到的位置并相应地移动棋子。
我已经阅读了一些关于Android Socket编程的教程,但仍然有些困惑,虽然我使用了AsyncTask而不是Thread,因为我读到AsyncTask在这种情况下是更好的选择。
在阅读和学习了一些之后,这是我如何使用Socket检索数据(在doInBackground中):
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));
}
我认为我上面提供的从Socket中检索数据的代码并不是最佳实践,如有更好方法请指正。
这就是支持我下面问题的(相当冗长无聊的)背景,我有两个主要问题:
我对自己正在做什么有点困惑,上面提供的代码能读取客户端的数据吗?
在检索到数据后,我应该相应地移动棋子的位置。但我还没有任何关于如何完成它的线索(关于如何创建棋盘和移动棋子的位置)。你能否以更易懂的方式告诉我应该如何完成?
我已经阅读了以下内容: Android Chess Game Example Android Source Code - Chess, 但我认为它们对我来说太复杂了。
谢谢您的帮助。