Skip to content

Latest commit

 

History

History
35 lines (26 loc) · 3.72 KB

File metadata and controls

35 lines (26 loc) · 3.72 KB

Team 01 Surakarta_stage 3

总体思路

stage3我们的总体思路是新建client和server两个class,然后在一个文件中能够选择成为client和server这两者之一。我们想着正常比赛可以有裁判或者观战者,所以也实现了服务端的界面,不过服务端的界面就只能观看双方走棋(不能进行任何的操作),只有客户端才能实现各种功能。

我们在stage3中遇到了很多棘手的问题.

  • 0、文件的多开问题 windows电脑上qt一开始设置了不能多开(同时运行多个窗口),但是网络部分显然是要这样操作的(客户端与服务端的多开链接)。后面发现再配置的构建和运行里面可以调。不过仍然要注意运行完一个文件以后一定要彻底的关闭这个窗口,否则如果你进行了修改再运行就会报错。

  • 1、如何使用network的自定义库 虽然直接用QTcpserver和QTcpsocket能够简单很多,但是我们还是尝试理解给的network库,并且尝试了怎么使用。

  • 2、信号成功连上但是发送不了消息的问题 我们成功连上了network以后发现发送的信息收不到,在对照了师兄给的demo以后发现是h使用hello函数以后不能马上发信息,因为程序执行太快导致信号还没连上信息就发送了从而未被接受。

  • 3、类的继承问题 我们组在阶段二用了widget类来实现界面,但是我们思考了很久也不知道怎么才能很好的继承widget类,因为网络类在每个步骤都会有一些微小的修改(主要是发信号之类的),虽然我们可以在widget里面加上一些判断,但是这样需要把一个类兼容三个类(包括客户端和服务端)的功能,这样实现出来的必然过于混乱,因此我们采取了把widget类里面的绘制函数等直接复制过来,并稍作修改的方法实现Client和Server两个类,这两个类都是直接继承QWidget类的。

  • 4、如何在一个项目里面弄出多个ui界面 如果在一个项目里面新建一个class类,那么这个class类是不带有ui界面的(不带有ui_xxx.h文件),只有新建项目的时候才会带有ui文件。我们也尝试直接给新建的class加上namespace等代码,但发现无法编译。最后我们的做法是新建一个项目,然后把这个项目编译出来带有可执行文件的文件夹复制到现在的项目里,这样就可以正常的使用ui了。

  • 5、文件的路径保存 stage3负责人clb同学曾经把一个项目从一个文件夹放到了另外一个文件夹里面,这样就会导致文件输出的路径还会在原来的文件夹里面,这是clb让程序输出当前路径的文件时发现的。而且QFile貌似每次mkdir操作都只能新建一个文件,如果没有相应的文件夹就会失败,因此我们用了两次mkdir来建立两个文件夹,然后再把路径的txt文件保存进去。

BY CLB:

虽然感觉整个stage3做的十分艰难,但是每次解决一个问题都能收获很多的成就感。

Conclusion and appreciation By RXY:

在AI接入后,整个大作业基本可以宣告开香槟啦!整个大作业耗时将近一个学期,把我们组三位没有接触过“正式开发”的组员搞的焦头烂额()
但是在大作业过程中确实学到了工程中信息的传递,架构的重要性,代码能力也得到了一定的提升
在MD最后,Team01特别鸣谢以下组别对我们开发作出的努力与支持:
  • Team 03 Stage3 网络对战测试以及AI接入过程的鼎力支持(lg Orz %%%)
  • Team 08 Stage1 AI撰写过程中的实验与调错
  • Team 16 Stage1 rulemanager思路来源 最后感谢三位助教师兄的倾情付出(泪奔)