刚学Android和Java编程(里面很菜鸟),想请教一些关于android编程和Socket Server的问题。
我接到了一项任务,要创建一个简单的国际象棋应用程序(不包括 AI), pawn 的位置将从 TCP 套接字中检索:
服务器:xinuc.org
端口:7387
我被告知使用Socket Persistent因为服务器会每秒更新pawn的位置 pawn的位置将以这种格式发送
[Pawn's Code] [Horizontal Position] [Vertical Position] [space],
典当行代码:
K: White King
Q: White Queen
B: White Bishop
N: White Knight
R: White Rook
k: Black King
q: Black Queen
b: Black Bishop
n: Black Knight
r: Black Rook
例如:Ka1 Qg3 Be6 等等。
然后我的应用程序必须调整检索到的位置并相应地移动棋子。
我已经阅读了一些关于 Android 套接字编程的教程,但仍然有点困惑,我使用 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 检索数据的代码是最佳实践,CMIIW。
下面就是支持我的问题的(相当长且无聊的)背景,我在这里有两个主要问题:
我有点不知道我在这里做什么,我上面提供的代码可以从客户端读取数据吗?
在我检索数据后,我应该相应地移动 pawn 的位置。而且我仍然不知道应该如何完成(关于我如何创建棋盘并移动棋子位置)。你能用更容易理解的方式告诉我应该怎么做吗?
我读过这些: Android Chess Game Example Android Source Code - Chess ,
但我觉得它们对我来说太复杂了,
提前致谢
最佳答案
你的问题太宽泛了。您可能想要指定您需要帮助的部分。无论如何,我会尝试给出一些一般性的想法。希望对您有所帮助。
型号
- 首先为棋子、玩家创建数据模型, 和棋盘。
网络
- 然后确保您通过 TCP 正确接收数据 网络。这是您应该掌握 AsyncTask 的地方。在你之后 了解AsyncTask的工作流程,可以使用this example开始开发您自己的 AsyncTask。
界面
最后你应该实现图形。基于应用 您的项目,AFAIK 有三种替代方法 拿。
您可以为您的棋子使用 ImageButton,并使用 安卓动画。谷歌 GridView 也是。我在 Android 上发现了两个基于网格的国际象棋实现:this和 that .
如果您是网络开发人员,或者您很熟悉 Android Canvas API,这是一种更好的方式,为您提供更多的自由和准确性。
另一种更耗时但更专业的 UI 方法 游戏,可能正在使用适用于 Android 的 OpenGL ES。你可以阅读official documents ,看看online tutorials , 或掌握 good book关于这个话题。如果您要使用 3D,一定要使用 OpenGL。
综上所述,有一些流行的游戏引擎可以帮助您 快速高效地成为专业的游戏开发者。 Cocos2D 是我的最爱之一,适合棋类游戏,全面 taught托德·珀金斯 (Todd Perkins) 谈琳达 (Lynda)。
关于java - 棋盘游戏逻辑的持久套接字 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30408879/