各个类及其方法的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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架构的,加上时间限制

相关文档
最新文档