各个类及其方法的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
客户端:(六个类)
ChatClient、Denglu、Hall、HUIQICC 、Panecc、Registry
功能:
1、ChatClient:
* 该类主要关于客户端与服务器之间的通信,包括聊天信息、悔棋信息、认输信息、退出信息、注册信息、登陆信息等等* 通过该类还调用了大量的Panecc类的方法,实现通信信息在界面上的实现
*
* 主要方法是Connect(),通过调用该方法建立与服务器端的连接,在该方法里,new了一个Thread对象,
* 同时架设了经过初步包装基本的管道(DataInputStream和DataOutputStream)。接下来便开始接收服务器端
* 发来的消息了,通过简单的协议,实现不同种类消息的接收和解析,该协议便是一串数字(int类型),
* 在发送消息方法里先写进一串数字,再写入需要发送的消息内容。同理,接收消息时先读取数字,再根据不同的数字
* 解析出不同的消息种类。
* 除了Connect()方法之外,还有很多信息的发送方法,比如
聊天信息(SendMessage(String message))、登陆信息(SendLogin(String name,String key))
* 、注册信息(SendZhuce(String name,String pass))、发送猜先信息(sendcai(int a))等等
2、Denglu:
* 该类是客户端的主驱动类,在该类中声明并初始化了ChatClient类的对象cc,
* 并通过该对象调用了ChatClient类的许多方法;
* 该类主要是关于登陆界面,并实现了相关监听;
* 该类还存在一个内部类--paneLogin ,这个内部类主要是画界面,监听功能在主类中实现
*
* 通过该类,将用户信息,发送给服务器,再由服务器连接数据库,判断登陆的相关信息。
3、Hall:
* 该类是关于登陆大厅,存在一个内部类--hallt,该内部类
负责构造界面
* 在主类中实现鼠标监听,每次用户登陆大厅在桌子上“坐下”,就将监听到的信息发送给服务器,将用户在大厅的登陆信息保存在服务器上;当累积用户达到二时,就开始游戏,后来再在桌子上坐下的用户,启用观战模式,该模式下只能聊天,不能下棋,悔棋,但这些信息都能显示。
* 由于时间关系,大厅中大部分“桌子”并未实现监听,故对战平台并未完全搭建好,仅仅实现了观战和有限的对战
*
4、HUIQICC:
* 该类是搭建悔棋界面的一个简单的小类,同时实现相关监听
在接收了对方的悔棋请求之后,new了一个该类对象,弹出悔棋界面。
在点了“同意”按钮之后,将“同意悔棋”的信息发送到服务器,再由服务器转发给其他客户端,客户端经过解析之后实现悔棋方法。
5、Panecc:
该类主要关于搭建下棋界面及下棋的算法。
* 包含一个内部类--Chessboard ,由该内部类实现界面的搭建及接听还有下棋算法的实现
* 当玩家在棋盘上点了之后,先由MouseListener捕获,并调用react()方法。
* 在react()方法里先对捕获的点进行处理,调用setPoint(),将像素单位化为数组下标,以便于后期的计算。
* 再调用check()方法,判断该店能否下棋,若能下棋,则返回true,不能,则返回false;
* 当true时,再调用putchess()方法,实现下棋,在putchess ()方法里,调用change()方法,
* 将该翻转的棋子改变其值,在repaint(),这样棋子就实现了变色的目的。
*
* 在接收到对手传来的棋子坐标后,调用SetA(String recieve,int color),解析之后,调用putchess()方法,
* 将对手下的棋画到你的棋盘上,也就是实现了更新期盼的作用。接着调用jug()方法,判断自己是否有棋可下,
* 并将能下棋的地方赋值为2,(repaint()后将画上一面小旗)。
*
* 该类中还有悔棋方法back(),该方法的实现借助于huiqi[][],
该数组将上次下棋的信息都保存了起来,
* 如果悔棋,则将该数组赋值给qipan[][],这样就能简单的实现一次悔棋了。
*
* 该类中还有显示聊天信息的sendToArea()方法,游戏是否结束的gameOver()方法,退出游戏的exit()方法,判断当对手不能下棋的时候,
* 自己能否下棋的jugA()方法………………………………
*
* 关于界面,大量使用了图片以增强界面的美观性,同时大部分的监听也是用了Rectangle类。
*
6、Registry:
* 该类是注册类,完成用户的注册功能;
* 将注册信息发送到服务器,再由服务器对数据库进行写入及搜索操作。当
用户已存在或者密码不正确时,会弹出一个小对话框,显示错误信息。成功注册之后则进入游戏大厅,开始体验游戏了。
服务器端:(三个)
1、ChatServer:
* 该类主要是实现服务器与客户端的通信。接收某个用户发来的消息,并根据其说明将内容广播,通过简单的协议实现* 只有特定用户才能解析的功能,以此来实现悔棋请求,认输等操作。
* 在该类中声明并实例化了Pane 类对象---aa,通过该对象调用了该类的许多方法。
每收到一个用户的socket连接请求,则new一个相应的clientThread 对象,以区别于其他用户的管道,通过多线程
* 实现服务器同多个客户端进行的信息收发。
*
* 同客户端一样,采用简单的“数字协议”来区别不同的通信消息种类,根据种类的不同采用广播或是定向发送。
2、Pane:
* 该类是关于服务器的界面,由于我是在P2P的基础上改成C\S架构的,加上时间限制