棋盘游戏逻辑的持久化插槽(Android)

我刚刚学习了Android和Java编程(内部很小心),并且我想问一些关于android编程和Socket服务器的问题。

我有一个任务来创建一个简单的国际象棋应用程序(不包括AI),pawn的位置将从TCP套接字检索

服务器:xinuc.org

港口:7387

我被告知使用Socket Persistent,因为Server会在每一秒更新典当的位置,典当的位置将以这种格式发送

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

典当代码:

K:白色国王

问:白皇后

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中检索数据是CMIIW的最佳实践。

所以这是支持我下面的问题的(相当长和无聊的)背景, 我在这里有两个主要问题:

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

  • 在检索数据之后,我应该相应地移动棋子的位置。 我仍然没有关于应该如何完成的一些线索(关于我如何创建棋盘并移动棋子位置)。 你能以更容易理解的方式告诉我应该怎么做?

  • 我已阅读这些:Android国际象棋游戏示例Android源代码 - 国际象棋,

    但我认为他们对我来说太复杂了,

    先谢谢你


    你的问题太广泛了。 您可能需要指定您需要帮助的部分。 无论如何,我会尽力给出一些一般的想法。 我希望它有帮助。

    模型

  • 首先为棋子,玩家和国际象棋棋盘创建数据模型。
  • 联网

  • 然后确保您通过TCP网络正确接收数据。 这是你应该掌握AsyncTask的地方。 在了解了AsyncTask的工作流程之后,可以使用此示例开始开发自己的AsyncTask。
  • GUI

    最后你应该实现图形。 基于您的项目的应用,AFAIK有三种可供选择的方法。

  • 您可以为您的棋子使用ImageButton,并使用Android动画移动它们。 Google GridView也是如此。 我在Android上发现了两个基于网格的国际象棋实现:这个和那个。

  • 如果您是Web开发人员,或者有任何机会,您都熟悉Android Canvas API,这是一种更好的方式,为您提供更多的自由度和准确性。

  • 另一种更耗时且专业的游戏用户界面方式,可能是使用OpenGL ES for Android。 您可以阅读官方文档,查看在线教程,或掌握有关该主题的好书。 如果你要3D,肯定会使用OpenGL。


  • 所有这一切说,有流行的游戏引擎可以帮助你有效和迅速地成为一名专业的游戏开发者。 Cocos2D是我最喜欢的作品之一,适合下棋比赛,由林德的Todd Perkins全面教授。

    链接地址: http://www.djcxy.com/p/84665.html

    上一篇: Persistent Socket for Chess Board Games logic (Android)

    下一篇: Chess bitboard implementation in Java