纯JAVA实现雷电飞机大战<可本地联机>

这篇博客介绍了使用JAVA开发的一款雷电飞机大战游戏,包括玩家飞机移动、子弹发射、碰撞判定、敌机行为、分数与生命系统、动态爆炸效果、音乐音效、难度选择以及联机和单机模式。开发者分享了实现思路,并提供了源代码链接,游戏具有登录、主菜单、房间页等界面,以及服务端页面展示。
摘要由CSDN通过智能技术生成

用JAVA写游戏的酸爽,你可曾体会到

需求分析

实现玩家飞机的移动,子弹的发射
飞机和子弹的碰撞判定 出界判定
敌机的添加,移动和子弹的发射
分数与生命功能
碰撞时动态爆炸效果的绘制
BOSS类独特的移动和子弹移动方式
可关闭开启的音乐与音效
难度选择.地狱模式敌机能够左右摇摆
联机单机模式选择
排行榜和账号相关功能
完成的类如下
在这里插入图片描述

总体思路

JAVA的动态游戏界面都离不开这么一个核心步骤:继承jpanel,重写paint方法,在线程中调用repaint,便实现了动态界面的绘制.
源代码太长,想查看源码移步Github: https://github.com/2293256828/Thunder
这里关键说一下联机思路,其实很简单,就是P1玩家点击创建房间时,开一个端口号,P2玩家输入端口号,两者建立连接后就开始进入游戏界面的绘制,游戏中敲击键盘移动射击的同时传给对方一个操作代号,通过这个代号,就实现了另一架飞机的移动.下面给出部分代码:

//p1玩家的ui,socket联机
public void gameui(Socket s, int rand, int difficulty) {
   
if (difficulty == 1) {
   
            HellPlayui playui;//playui就是继承jpanel重写paint方法,调用repaint的类
            playui = new HellPlayui(rand, sound_effect);//rand用于地图的随机性,sound_effect是音效设置
            //以下代码是联机实现,简单的说,就是队友按一下键盘,就会用socket传过来一个代号,你读取这个代号同时就移动他的飞机.
            new Thread(new Runnable() {
   
                @Override
                public void run() {
   
                    while (true) {
   
                        try {
   
                       //游戏结束的判定,上传分数,两边的用户名以及总成绩
                            if (playui.i == 4) {
   
                                Socket socket = new Socket("127.0.0.1", 111);
                                socket.getOutputStream().write(2);
                                DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
                                
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值