开发背景
中国象棋有着悠久的历史,象棋爱好者更是不计其数,但是由于人们工作地点、时间的限制,人们需要一款新的不受时间和地点限制的网络版中国象棋。
网络版象棋让对弈的范围更加广泛,让象棋爱好者可以与更多的象棋爱好者切磋棋艺。
系统分析
1、服务器端
可以指定服务器端号
可以支持多人同时在线
可以显示在线用户的信息
不允许玩家同名
2、客户端
能够通过主机IP(127.0.0.1)及端口号登录到服务器
可以显示当前所有用户
可以从在线用户列表中选择玩家进行挑战
可以接受或拒绝挑战
如果对方正在与其他玩家对弈中,则应给出相应的提示信息
象棋规则一定要严密
棋子样式采用最普通的橡胶式象棋,及棋子黑色,字为红色和白色
玩家可以提前认输
系统设计
服务器框架设计
-
服务器线程
服务器是服务器启动创建的第一个线程,主要用于接收客户端的连接,并为每一个连接分配一个代理线程 -
代理线程
服务器代理线程主要用于接收客户端发来的信息,并将该信息转发给对应的另一个客户端。服务器为所有客户端都分配了一个该线程实例,单独为特定客户端进行服务。同时每一个服务器代理线程都有其唯一标识名。 -
启动线程的两种方法
方法1:继承Thread 类 重写run方法即可
方法2:实现runable接口 重写run方法即可
注意事项
1、按钮类要不要添加事件监听方法,主要看按下按钮会不会发生及时事件,按下即有变化需要添加事件监听方法。
2、象棋规则类中没有主函数,在设定规则时,首先将走棋规则设为ture,在方法中将不符合走棋规则设为false,减少工作量
出现问题
1、当前客户端点击挑战按钮后,另一个客户端没有反应,查看按钮点击后的所要执行的事件方法,发现没有发送挑战信息给服务器端,此问题同样出现在很多方法中,如点击认输按钮
2、一方下棋后,棋子在对方的棋盘上不移动,发现QiPan类中没有指定tiaozhanzhe参数,导致MOVE信息不能发送给对方,对方棋盘无法做出反应