当前位置: 首页 > 知识库问答 >
问题:

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

姚建树
2023-03-14

我刚刚学习了Android和Java编程(里面非常noob),我想问一些关于Android编程和Socket服务器的问题。

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

服务器:xinuc.org

端口:7387

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

[卒典][横位][竖位][空格],

典当代号:

K:白王

问:白皇后

B:白主教

N:白衣骑士

K:黑国王

问:黑皇后

B:黑主教

在阅读并学习了一些相关知识之后,下面是我如何使用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源代码-国际象棋,

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

    事先谢谢你

  • 共有1个答案

    史和泰
    2023-03-14

    你的问题太宽泛了。您可能需要指定需要帮助的部分。不管怎样,我会试着给出一些大致的想法。希望有帮助。

    • 首先为棋子、棋手和棋盘创建数据模型。
    • 然后确保通过TCP网络正确接收数据。这是您应该掌握AsyncTask的地方。了解AsyncTask的工作流后,可以使用此示例开始开发自己的AsyncTask。

    如果你是一个web开发人员,或者碰巧,你熟悉Android画布API,这是一个更好的方式,为你提供了更多的自由度和准确性。

    另一个更耗时但更专业的游戏UI方法可能是使用OpenGL ES for Android。你可以阅读官方文件,看一看在线教程,或者掌握一本关于该主题的好书。如果你想要三维,一定要使用OpenGL。

    总之,有流行的游戏引擎,可以帮助你成为一个专业的游戏开发效率和快速。Cocos2D是我的最爱之一,它适合一个国际象棋游戏,并由托德帕金斯在琳达全面教授。

     类似资料:
    • 我已经有一个Board对象,包含一个碎片列表。Piece是一个抽象类,有一个位置(x,y)和一个颜色(黑色或白色)。然后是King、Queen、Knight这三个类,实现了Piece类。 谢谢

    • 本文向大家介绍Javafx实现国际象棋游戏,包括了Javafx实现国际象棋游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Javafx实现国际象棋游戏的具体代码,供大家参考,具体内容如下 基本规则 棋子马设计“日”的移动方式 兵设计只能向前直走,每次只能走一格。但走第一步时,可以走一格或两格的移动方式 请为后设计横、直、斜都可以走,步数不受限制,但不能越子的移动方式。 车只能横向

    • 我目前正在编写我的第一盘国际象棋,我的棋子有一个小问题。我将在下面添加一些代码,但通常我想检查玩家移动某个棋子(在本例中为国王)的棋盘是否已经被另一个棋子占据,因为在这种情况下,另一个棋子将被杀死(如果棋子属于另一个玩家),或者移动是错误的(棋子被自己的棋子占据)。如果你对如何做有任何想法,我将不胜感激。顺致敬意, 公共抽象类文章{ } 公共类国王延伸件{ }

    • DreamChess 是一款开放源码、跨平台(可在 Windows、Mac OS X 及 Linux 上运行)的 3D 国际象棋游戏。该游戏包含自身的引擎 Dreamer,提供各种国际象棋棋盘,并具有背景音乐及声效等其他附属功能。

    • 本文向大家介绍python输出国际象棋棋盘的实例分享,包括了python输出国际象棋棋盘的实例分享的使用技巧和注意事项,需要的朋友参考一下 国际象棋是当今国际上最流行的智力体育运动项目。青年人下棋可以锻炼思维、增强记忆力和培养坚强的意志;中年人下棋可以享受美学;老年下棋可以很好的休息娱乐。国际象棋游戏有自己的规则,需要两个人将棋子落在棋盘上。 棋子落在棋盘上事件,在计算机看来,是一段程序,而这些程

    • 我正在使用在固定深度工作的alpha-beta修剪算法对Chess AI进行编程。我相当惊讶地看到,通过将AI设置为更高的深度,它玩得更糟。但我认为我想通了为什么会这样。 它目前是这样工作的:所有的职位都被列出来了,对于每个职位,其他的职位都会被列出来,以此类推。。。直到达到固定深度:通过检查存在哪些工件,并为每种工件类型设置一个值来评估电路板。然后,使用带有alpha-beta的minimax算