首页 > 编程语言 >开源游戏 | 一款采用 Java开发的基于小孔成像原理与图形光栅化的字符 3D 画面框架构建的空战游戏

开源游戏 | 一款采用 Java开发的基于小孔成像原理与图形光栅化的字符 3D 画面框架构建的空战游戏

时间:2023-10-19 17:33:27浏览次数:54  
标签:Java 游戏 jar 导弹 战机 开源 锁定 敌机 3D


 

去关注、不迷路

一、项目概述

       这是一款采用 Java Swing 开发的基于小孔成像原理与图形光栅化的字符 3D 画面框架构建的空战游戏,简单说就是作者为了做个 3D 字符空战游戏,顺手写了个 3D 引擎,别人的本科毕设。

注:dogfight 为军事用语,是指战机近距离接战缠斗,可直接译为“狗斗”。

二、 游戏说明   

操作说明:

战机基本操控(战机起飞前不具有机动能力)
  • W:增加油门值

  • A:战机水平左转

  • S:减少油门值并使用打开减速板减速

  • D:战机水平右转

  • 鼠标上下滑动:战机上下翻滚

  • 鼠标左右滑动:战机左右翻滚

  • 鼠标滚轮:瞄准缩放

  • 空格:使用加力燃烧加速飞行

战机战斗操控(刚进入游戏时要等待航炮 CN 和导弹 MS 装弹完成)
  • 鼠标左键:航炮开火

  • 鼠标右键:导弹开火

  • 鼠标中键:导弹开火并跟随导弹视角(按Q可回到战机视角)

  • X:释放诱饵弹

其他键位
  • F:(按住)查看记分板

  • C:切换第一/第三人称视角

  • V:切换向前向后看视角

  • Q:回到战机视角

  • P:暂停/继续

  • E:播放上一首音乐

  • R:播放下一首音乐

  • [ 、]:调整画面缩放比例

  • J、K、L、I:改变分辨率

  • M、N:切换显示的字体

  • Esc:退出游戏   

武器系统说明

  • 航炮 CAN 可连续发射无制导的炮弹,单发炮弹伤害较导弹低但连续发射时火力密度高。开火时需要注意提前量,适合打击视区内近距离目标。

  • 导弹 MIS 发射前需要先锁定敌机:使用火控雷达照射敌机(将敌机标识保持在准星附近)即可开始锁定,锁定过程需要2s,锁定后会显示LOCKD(如下图)

    1640330316765

    此时发射导弹,导弹将自动跟踪敌机。导弹伤害较高,摧毁一架敌机一般需要2~3枚导弹(一次装填4枚),适合打击视线范围外的目标。需要注意的是,开始锁定敌机时,敌机能够感受到被锁定,并释放多个诱饵弹干扰锁定,需要等待干扰弹脱离火控雷达照射范围后才能正常锁定敌机。导弹和诱饵弹的装填时间一致。

  • 诱饵弹 Decoy 可以短暂干扰敌机锁定。战机被敌机尝试锁定时,屏幕右侧会出现锁定告警标志并闪烁(闪烁时间逐渐加快),如下图:

    1640330418838

    此时应按 X键 释放诱饵弹干扰敌机锁定,并做机动动作,摆脱敌机追踪,否则如果该标志变为下图所示,即表明敌导弹已经发射,只能尝试做大幅度机动动作摆脱攻击:

     

屏幕颜色闪烁说明

  • 短闪红:受到航炮攻击

  • 长闪红:受到导弹攻击

  • 准星变黄:航炮开火

  • 背景闪黄:发射的航炮击中敌机

  • 背景闪蓝:导弹开火

  • 准星闪蓝:导弹命中敌机

  • 当您驾驶战机持续做大幅度机动动作(如大角度转向、打开加力燃烧)时,由于人体对加速度G值的承受能力有限,视力会受到影响,您将会屏幕亮度将会降低、变红,如图所示

     

    此时只需停止做大幅度机动动作,即可逐渐恢复视觉

 

三、 代码说明

这是Eclipse-Maven Java工程,使用JDK1.8

编码工作完成后可使用mavenPackage.bat进行maven打包,目标位于target/dogfightZ-jar-with-dependencies.jar

dogfightZ-jar-with-dependencies.jar是独立的可执行游戏本体,在正确安装配置Java环境的计算机上可以直接双击运行。

项目结构预览

项目源代码总体分为4个大包,如图所示

image.png

 

 

四、 项目打包说明

 

请运行 mavenPackage.bat,打包后位于 target/dogfightZ-jar-with-dependencies.jar,包含依赖项,

可在JRE1.8环境下独立运行,若正确配置JAVA_HOME,双击该jar包即可启动游戏。

五 、功能截图

   

 

image.pngimage.png

六、项目源码

开源地址:

扫描下方二维码并回复【open-java】获取项目源

 

往期推荐

人人可用的开源数据可视化分析工具

面向中小企业级erp、oms、wms全套解决方案

开源支付系统、支持微信支付宝

SpringBoot + Vue 的智能停车场管理平台

多门店分销的开源前后端分离商城系统

全端开源电商系统支持小程序、H5、PC商城

后台、小程序、uniapp前后端分离完整全开源商城

开源物联网基础开发平台

开源人脸识别登录系统

写在最后

专注分享开源项目整套解决方案,完全开源、可学习、可商用、宝藏库。

完整开源项目后端技术栈:Spring6、JDK17、SpringBoot、Spring Cloud、Docker、Nginx、Redis、MongoDB、MySql不管你技术提升还是接私活都可以用到。

完整开源项目前端技术栈:vue3、vite3、TypeScript/4、Ant-Design-Vue/3.2、element-plus/2.2、uniapp、H5网页、PC、微信小程序等最新的技术。

每天提供一个超棒的开源项目包含:物联网平台、WMS系统、ERP系统、OMS系统、知识社区、个人博客系列。

 

 

欢迎加入【前端开源实验室读者交流群】,群内聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!

进群方式:加柚子哥微信回复 进群,按提示操作即可进群。

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。


 


 

标签:Java,游戏,jar,导弹,战机,开源,锁定,敌机,3D
From: https://www.cnblogs.com/mlgm/p/17775233.html

相关文章

  • Java 记事本
    Notepadpackagecom.company;importjava.awt.Dimension;importjava.awt.FileDialog;importjava.awt.Image;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowEvent;importjava.aw......
  • 如何使用GraalVM和Java采集天涯图片
    今天我要给大家分享的是如何使用GraalVM和Java编写一个采集天涯论坛图片的程序,内容通俗易懂,非常适合新手学习,大神勿喷。```java//导入必要的库importjava.io.*;importjava.net.*;importjava.util.*;//创建一个名为Downloader的类publicclassDownloader{//定义......
  • Javascript抓取京东、淘宝商品数据
    随着互联网的发展,越来越多的商品信息被发布在各大电商平台上,如京东、淘宝等。这些平台上的商品信息对于消费者来说是非常重要的,可以帮助他们了解商品的价格、详情和评价等信息。而对于商家来说,了解竞争对手的商品信息也是至关重要的。因此,抓取京东、淘宝商品数据成为了一种常见的需......
  • 论文阅读:Nerflets: Local Radiance Fields for Efficient Structure-Aware 3D Scene R
    Nerflets:LocalRadianceFieldsforEfficientStructure-Aware 3DSceneRepresentationfrom2DSupervisionNerflets:用于高效结构感知的三维场景的二维监督的局部辐射场图1。我们提出用一组局部神经辐射场来表示场景,称为nerflets,仅在2D监督下进行训练。我们的表示法不仅适......
  • Java 中重要的知识,进阶之路
    1.javac:.JAVA--.CLASS2.javaJVM:是桥梁.CLASS--.机器语言二进程文件3.被transient修饰的成员变量,在序列化的时候其值会被忽略instanceof是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean的数据类型4.volatile有可见行,顺序行,无......
  • javascript如何写不用转义的字符串代码
    js中的String.raw函数 语法 String.raw`templateStr`;  String.raw(obj,...substitutions); 支持能力有限,如可以支持String.raw`c:\aaa\bbb`       //result:   c:\aaa\bbb 但是String.raw`c:\aaa\bbb\`       //result:  ......
  • Unity3D 如何制作带厚度的透明图片详解
    Unity3D是一款功能强大的游戏开发引擎,可以实现各种复杂的游戏效果。本文将详细介绍如何使用Unity3D制作带厚度的透明图片,并提供代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。在Unity3D中,......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • 3D游戏开发中的数学知识矩阵详解
    矩阵很多同学没有接触过,所以感觉很难,很复杂,其实只要学过矩阵的同学都知道,矩阵运算并不难。今天我们给大家讲讲游戏开发中的矩阵的运算。1:矩阵是什么?矩阵是描述线性变换的一种数学工具,线性变换指的是使用一次函数从一个空间变换到另外一个空间。例如在空间A中的一个2维向量(xa......
  • Java概述
    1什么是Java官方定义:Java是一门面向对象的编程语言,不仅吸收了C++语言中的各种优点,还摒弃了C++里难以理解的多继承,指针等概念,因此Java语言具有功能强大和简单易用两大特性。Java语言作为静态面向对象编程语言的代表,极好实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编......