Java多线程+IO流+网络编程+MySQL+JDBC编程实现多人联机版坦克大战

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 该项目为博主与几位伙伴的共同成果,历时1个月,由最初知识尚未掌握,到最后开发出完整项目,一途走过不少弯路,但也对个人的编程能力及对java知识的掌握更进一步,游戏逻辑主要参考【马士兵网络版坦克大战】

Java多人联机版坦克大战


1.游戏介绍:

该游戏涵盖多线程、IO、网络编程、JDBC知识,实现多人联机版坦克大战。


编码方式:GBK


MySQL jar包版本:mysql-connector-java-8.0.28(已上传至gitee)


jdk版本:1.8


2.游戏启动流程:


需要先在本地的建立MySQL数据库bjpowernode,建表create table userlist(username varchar(255),password int);,可以在表中存储用户名和密码,也可以不存储。


在Main包下启动TankServer端,然后在login包下启动LoginServer,最后启动LogOnFrm出现登录界面,如果数据库中已经存有的用户名和密码,直接登录即可,若不存在,点击两下完成注册,登录成功以后会跳转到游戏界面,按下c键完成IP号和端口号的设置,通过连接同一IP的方式完成多人联机。


在游戏中wasd控制坦克的移动,空格键完成射击。


3.项目类的主要说明:


3.1Game包


微信图片_20230110224924.png

在该包下为坦克大战游戏物体的主要实现,NetClint端为网络联机客户端的实现


  • NetClient类为网络交互功能中客户端的实现类,在该类中与服务器完成连接后可以发送坦克新诞生的消息,再让服务器传输给其他的客户端以实现同步,在client端中的关键代码为UDP接受线程,不断的接受其他的客户端传给服务器,服务器又传给该客户端的UDP包,在该UDPRecvThread中利用信息的封装性,调用send方法完成拆包,拆包的具体细节在各自的信息中具体实现。

  • Dir类为方向枚举类,用以为坦克和子弹的方向属性使用

  • Tank类为坦克逻辑的具体实现,每一辆坦克都有自己独一无二的ID号,在NetClient端启动时根据坦克的id号的奇偶性绘制不同的坦克

  • Explode类为爆炸类,在塔克被击中时产生爆炸特效,利用TankClient端的重绘线程实现多张图片切换出现从而产生爆炸的效果

  • Missile类为子弹类,根据坦克的id也对应绘制出不同颜色的子弹图片,注意在子弹打中坦克或移出边界后需要及时清除。


3.2 Main包


微信图片_20230110224921.png

运行该项目在该包下操作即可,先启动server端再启动client端,此处的TankClient具体的网络联机在Game包下的NetClient类中实现


  • TankClient类为游戏逻辑的主要实现,是坦克的游戏场所
  • TankServer类为网络交互的服务端的主要实现,该类主要实现UDP线程,接收到客户端的信息后为多个客户端实时的发送消息


微信图片_20230110224917.png

3.3Message包


微信图片_20230110224913.png

该包用以实现网络版的信息传输,不同的信息都实现Msg接口,在Msg接口中的send和parse抽象方法,在各自的类中重写send和parse方法(当信息传输过来时在对应的类中完成发包和拆包的具体实现),这样使得这两个方法很好的包装,在client端和server端传输信息时通过多态实现不同类别信息的传输。


  • 代表坦克诞生的消息类 TankNewMsg
  • 代表坦克改变方向的消息类 TankMoveMsg
  • 代表坦克被击毙的消息类 TankDeadMsg
  • 代表子弹产生的消息类 MissileNewMsg
  • 代表子弹消失的消息类 MissileDeadMsg


3.4 login包

通过连接JDBC实现用户登录界面,完成与数据库的交互,实现登录跳转

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
Java API 微服务
为什么虚拟线程将改变Java并发编程?
为什么虚拟线程将改变Java并发编程?
225 83
|
10天前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
116 3
|
22天前
|
Java
Java编程:理解while循环的使用
总结而言, 使用 while 迴圈可以有效解决需要多次重复操作直至特定條件被触发才停止執行任务场景下问题; 它简单、灵活、易于实现各种逻辑控制需求但同时也要注意防止因邏各错误导致無限迁璇発生及及時處理可能発生异常以确保程序稳定运作。
123 0
|
1月前
|
安全 Cloud Native Java
Java:历久弥新的企业级编程基石
Java:历久弥新的企业级编程基石
|
1月前
|
移动开发 Cloud Native Java
Java:历久弥新的企业级编程基石
Java:历久弥新的企业级编程基石
|
2月前
|
设计模式 Java 数据库连接
Java编程的知识体系 | Java编程精要
Java是一种广泛使用的通用编程语言,具备面向对象、跨平台、安全简单等优势,适用于桌面、企业、Web、移动及大数据等多个领域。它功能强大且易于学习,是程序设计入门和面向对象思想学习的优选语言。本书系统讲解Java编程知识,涵盖技术核心与应用拓展两大模块,内容包括基础语法、面向对象设计、GUI、数据库、多线程、网络编程及Web开发等,帮助读者全面掌握Java开发技能。
60 0
|
2月前
|
安全 Java
Java编程探究:深入解析final关键字
1. **使用限制**: 对于 `final` 方法和类,可以限制其他开发人员对代码的使用,确保其按设计的方式工作而不会被子类意外改变。
71 0
|
2月前
|
存储 缓存 安全
深入讲解 Java 并发编程核心原理与应用案例
本教程全面讲解Java并发编程,涵盖并发基础、线程安全、同步机制、并发工具类、线程池及实际应用案例,助你掌握多线程开发核心技术,提升程序性能与响应能力。
73 0
|
3月前
|
缓存 安全 算法
2025 年 Java 秋招面试必看 Java 并发编程面试题实操篇
Java并发编程是Java技术栈中非常重要的一部分,也是面试中的高频考点。本文从基础概念、关键机制、工具类、高级技术等多个方面进行了介绍,并提供了丰富的实操示例。希望通过本文的学习,你能够掌握Java并发编程的核心知识,在面试中取得好成绩。同时,在实际工作中,也能够运用这些知识设计和实现高效、稳定的并发系统。
79 0

推荐镜像

更多