前言
本项目是笔者和同学大二下Java课的时候的课程设计项目,该五子棋游戏的客户端可以实现联网对战、实时聊天、自定义昵称、对在线玩家并发出对战邀请、悔棋、撤回聊天消息、逃跑等多种功能,而服务端可以看到在线玩家列表、配对玩家列表、玩家实时上线下线等功能。总的来说,功能比较齐全,代码中也有详细注解思路,是非常不错的新手入门项目。
通过该项目,可以学会并熟悉Java界面设计、网络编程、五子棋逻辑代码实现、异常处理、多线程编程、输入输出流控制等等Java基础技术。
本项目一共分为客户端和服务器端,一般来说是一台机子作为服务器,另外两台作为客户端,服务端可以对客户端进行玩家处理等等,还有用于展示的答辩PPT也会一同发出来。可以直接拿去作为课程作业。(网盘链接在文章最后)
最终的课程展示PPT与全套代码的网盘链接将放在本文的最后一部分!
如下图所示,分别是客户端的对战界面与代码中的详细注释。
项目展示
1、界面展示
这是客户端运行后的界面,可以自行查看当前登录服务器之后的全部在线用户,并发出挑战申请。
服务端可以看到在线的玩家列表,并看到匹配列表。
2、运行展示
代码讲解
客户端一共有6类包:
服务器端一共有5类包:
1、客户端UI设计代码
客户端整体界面采用BorderLayout的布局:通过读取绝对路径来获取图片,由于需要频繁读getAbsolutePath返回值,因此我们封装了getSourcePath方法简化代码。
异常处理:获取图片的过程中使用了异常处理。若不能够获取图片,则抛出异常,后通过“手动画图”方式处理异常。
2、客户端实现socket联网代码
3、输入输出流
4、重构线程run()代码
5、聊天功能实现
课程设计总结及百度云盘链接
最难的部分主要用到Socket网络编程和网络传输协议。将各种用户操作请求和聊天信息通过字符消息包装和区分,而后在服务端来判断和解析不同的请求。
服务端将所有客户端存在Map集合里,将玩家配对信息存在另外的map集合,以此来管理配对玩家之间的游戏互动。大致原理就是用一个HashMapManager来管理,当客户端发来请求,服务端先根据客户端id检索客户端是否已经存在配对列表里,如果有,找到与之配对的玩家,并将客户端发来的请求解析后将消息发给与之对应的客户端,达到交互的功能。
百度网盘链接如下:
链接:https://pan.baidu.com/s/1coPhaRT3LmHEcB_OOMZgSw?pwd=2kql
提取码:2kql