首页 文章

国际象棋棋盘游戏逻辑的永久套接字(Android)

提问于
浏览
3

我刚刚学习了Android和Java编程(内部非常棒),我想问一些关于android编程和Socket Server的问题 .

我得到了一个创建 simple chess application (excluding the AI), the position of pawn will be retrieved from TCP socket 的作业:

服务器:xinuc.org

港口:7387

有人告诉我使用 Socket Persistent 因为 Server will update pawn's position in every second, 将以这种格式发送典当位置

[Pawn's Code] [水平位置] [垂直位置] [空间],

典当代码:

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

所以这是(相当漫长而无聊)的背景来支持我的问题, I have two main questions here :

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

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

我读过这些:Android Chess Game Example Android Source Code - Chess

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

先感谢您

1 回答

  • 1

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

    型号

    • 首先为国际象棋棋子,球员和国际象棋棋盘创建数据模型 .

    网络

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

    GUI

    最后你应该实现图形 . 根据您的项目的应用,AFAIK有三种替代方法 .

    • 您可以使用ImageButton作为棋子,并使用Android动画移动它们 . Google GridView也是 . 我在Android上找到了两个基于网格的国际象棋实现:thisthat .

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

    • 另一个更耗时但更专业的游戏用户界面方法可能是使用OpenGL ES for Android . 您可以阅读official documents,查看online tutorials,或者在主题上掌握good book . 如果你正在使用3D,一定要使用OpenGL .


    总而言之,有一些流行的游戏引擎可以帮助您高效,迅速地成为专业的游戏开发者 . Cocos2D是我的最爱之一,它适合国际象棋游戏,并且由Todd Perkins在Lynda上全面地发布了taught .

相关问题