大一下Java大作业——双人联机小游戏森林冰火人

本作业参考博客java课程设计-多人聊天工具(socket+多线程)的聊天室,以此作为模板实现双人游戏的联机效果

在这里插入图片描述

项目框架:

在这里插入图片描述

——————————以下为大作业报告———————————

1.题目描述

本程序功能介绍如下

(1)服务端能看到所有在线玩家(最多两名)

服务端继承了JFrame,实现可视化,通过socket实现服务端与客户端的连接,服务端每接收一个连接,把传进来的用户名和对应的socket连接封装成一个User对象,把User对象存进一个ArrayList的用户列表并把User对象通过取用户名方法取得用户名存进一个ArrayList的用户名列表,添加一个JPanel组件,将ArrayList中的内容通过循环显示JPanel中并布局在窗体的右边,在每当有人上线或者下线,刷新JPanel组件。

(2)服务端能够强制玩家下线

创建一个布局在窗体的下方的JPanel,在此JPanel中分别添加JLabel用于显示提示文字,添加JTextField用于获取服务端想要强制用户下线的ID,添加JButton用于绑定强制用户下线的事件监听,事件监听中将获取的JTextField的内容与用户名列表进行逐一匹配,匹配上则创建JSON格式的键值对对象,通过用户列表循环广播告知其他用户,并在用户列表和用户名列表中分别删除该用户信息。

(3)客户端能够看到所有在线玩家

客户端继承了JFrame,实现可视化,添加了一个布局在窗口右边的JLable,把从服务端接收到的另一名玩家信息放进去。

(4)客户端能够同步游戏准备和游戏操作等信息

客户端点击选择角色或者在游戏中进行操作时,会向客户端发送信息,服务端接受,通过判断msg键对应值为选择角色或者游戏操作后,再发送给对应玩家的客户端,客户端接收信息后再调用相应的方法控制对应组件进行游戏

(5)运用JDBC实现持久化存储用户信息

数据库连接池运用了阿里巴巴的durid,定义一个JDBCUtils类,提供静态代码块加载配置文件,初始化连接池对象,通过Spring框架的JDBCTemplate对象进行sql语句的执行,在UserDao中提供了登录和注册、分数更新方法,登录方法运用queryForObject方法进行登录查询,如果查到返回一个User对象,查不到则返回空,注册方法直接插入新记录,此处建表语句中把用户名设置成了主键,保证了用户名的唯一性,注册失败有警告弹窗提示。游戏结算时会调用分数更新方法上传玩家分数到数据库。

(6)使用JSONObject对象封装数据

在数据的传输中运用了键值对的形式进行传输,客户端传输给服务端的数据包中,通过判断msg键对应的值是否包含contorl或者踢出来确认是否为同步游戏操作指令,通过username键告知服务端客户端的用户名,通过select键传输选择的游戏角色信息、通过up键传输游戏角色向上的运动信息等…服务端传输给客户端的数据包中,通过判断user_list键的值来确认

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海蛋2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值