第二阶段任务:基础网络通信功能实现¶
DeadLine¶
请在 2022 年 5 月 13 日 23:59 前完成这一阶段的任务并提交 Pull Request。
任务简述¶
在这一阶段,你需要根据助教提供的通信协议与网络通信代码模板,为跳棋游戏添加网络通信功能。
注意,尽管本次大作业中我们假设网络环境足够稳定,但这并不代表你实现的服务端和客户端可以跳过合法性检查直接使用接收到的数据。
服务端功能要求¶
在本阶段结束时,你的服务端应实现以下功能
- 与客户端建立 IPv4 连接进行通信。
- 本次大作业中不要求支持 IPv6 连接。
- 显示对局的当前状态(即棋盘情况)。
- 判断客户端的行棋是否合法。
- 判断游戏结束并向客户端发送结算信息。
在本阶段任务中,你可以假设连接到同一服务端的所有客户端都会参与到同一轮对局中,且在对局结束前不会有任何新玩家尝试加入,同时玩家观战也是不被允许的。
为了降低实现难度,本次跳棋大作业中不需要考虑因网络状况不良可能导致的一系列问题,包括客户端的掉线重连、服务端数据一致性维护等。
客户端功能要求¶
原则上本阶段仅要求为客户端额外添加网络通信功能,但你也可以同时为客户端实现上一阶段未要求的终局判断功能。
温馨提示
你可以将客户端与服务端实现在一个项目内,并在开启时手动选择以客户端模式运行或以服务端模式运行。
阶段性总结¶
无论你是否在截止时间前完成这一阶段的全部开发任务,请在 docs/submission/ 下你的小组文件夹中上传你第二阶段的阶段性报告,并相应地修改 mkdocs.yml。在报告中请简要描述你的小组分工、代码框架设计、遇到的问题及解决方法和其他你认为有必要的内容,并展示客户端和服务端的运行截图。
在第三阶段中,将有且仅有一个小组完善服务端功能,其他小组将完善客户端的功能。请在阶段性总结中说明你所在的小组希望在第三阶段选择的任务(即实现客户端还是服务端)。