我刚刚学习了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 回答
你的问题太宽泛了 . 您可能想要指定需要帮助的部分 . 无论如何,我会尝试提出一些一般性的想法 . 我希望它有所帮助 .
型号
网络
GUI
最后你应该实现图形 . 根据您的项目的应用,AFAIK有三种替代方法 .
您可以使用ImageButton作为棋子,并使用Android动画移动它们 . Google GridView也是 . 我在Android上找到了两个基于网格的国际象棋实现:this和that .
如果您是Web开发人员,或者您有任何机会,您熟悉Android Canvas API,这是一种更好的方法,为您提供更多的自由和准确性 .
另一个更耗时但更专业的游戏用户界面方法可能是使用OpenGL ES for Android . 您可以阅读official documents,查看online tutorials,或者在主题上掌握good book . 如果你正在使用3D,一定要使用OpenGL .
总而言之,有一些流行的游戏引擎可以帮助您高效,迅速地成为专业的游戏开发者 . Cocos2D是我的最爱之一,它适合国际象棋游戏,并且由Todd Perkins在Lynda上全面地发布了taught .