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

3
我刚学会了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中):
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中检索数据的代码并不是最佳实践,如有更好方法请指正。

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

  1. 我对自己正在做什么有点困惑,上面提供的代码能读取客户端的数据吗?

  2. 在检索到数据后,我应该相应地移动棋子的位置。但我还没有任何关于如何完成它的线索(关于如何创建棋盘和移动棋子的位置)。你能否以更易懂的方式告诉我应该如何完成?

我已经阅读了以下内容: Android Chess Game Example Android Source Code - Chess, 但我认为它们对我来说太复杂了。

谢谢您的帮助。

1个回答

1
你的问题太过宽泛。你可能需要明确需要帮助的部分。无论如何,我将尝试给出一些通用的想法。希望对你有所帮助。
模型
首先为棋子、玩家和棋盘创建数据模型。
网络
然后确保你正确地通过TCP网络接收数据。这是你应该掌握AsyncTask的地方。在你理解了AsyncTask的工作流程之后,你可以使用此示例开始开发自己的AsyncTask。
GUI
最后,你应该实现图形界面。根据你的项目应用,据我所知,有三种可选的方法。
  • 您可以使用ImageButton作为棋子,并使用Android Animations移动它们。Google GridView也是一个不错的选择。我发现了两个基于网格的Android国际象棋实现:thisthat

  • 如果您是Web开发人员,或者恰好熟悉Android Canvas API,这将是更好的方法,提供更多自由和准确性。

  • 另一种更耗时但更专业的游戏UI方法可能是使用OpenGL ES for Android。您可以阅读官方文档,查看在线教程,或掌握好书上的内容。如果您要进行3D游戏,请一定使用OpenGL。


尽管如此,有些受欢迎的游戏引擎可以帮助您高效快速地成为专业游戏开发者。Cocos2D是我最喜欢的之一,适合棋类游戏,并且由Todd Perkins在Lynda上全面教授


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接