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

您所在的位置:网站首页 java飞机游戏切割地图 纯JAVA实现雷电飞机大战<可本地联机>

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

2024-07-02 20:44| 来源: 网络整理| 查看: 265

用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()); dos


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3