Java在网页游戏开发中有很多优秀的框架可供选择,以下是几个常用的框架:
1. **Java Servlet和JSP**: 这是Java Web开发的基础,可以用来构建网页游戏的后端逻辑,处理HTTP请求和响应。通过Java Servlet编写业务逻辑,JSP负责动态生成HTML页面。
2. **Spring Framework**: 这是一个强大的企业级Java开发框架,提供了强大的MVC(Model-View-Controller)架构,可以帮助你构建复杂的网页游戏架构。Spring MVC可以管理请求和响应,Spring Security可以处理用户认证和授权。
3. **Play Framework**: 这是一个轻量级的Java Web框架,特别适合开发RESTful API和现代Web应用,包括网页游戏。Play Framework强调简洁、快速和生产力,使用Scala或Java编写。
4. **Vaadin**: 这是一个用于创建HTML5 Web应用的Java框架,特别适合构建富客户端网页游戏。Vaadin提供了自定义组件和工具,可以快速开发出响应式的用户界面。
5. **Liferay**: 这是一个企业级的门户开发框架,支持构建企业级的网页游戏,包括用户管理、权限控制等功能。
6. **GWT (Google Web Toolkit)**: 由Google开发,用于编写可跨浏览器运行的Java应用程序,包括网页游戏。GWT将Java代码编译成JavaScript,使得游戏可以在浏览器中运行。
选择哪个框架取决于你的项目需求、团队技能和开发效率。如果你的项目规模较大,需要高并发和企业级的特性,Spring Framework可能是最好的选择;如果你追求轻量级和快速开发,Play Framework和Vaadin可能更合适。
for (Iterator
// the screen or that hit the bucket. In the latter case we play back
java网页游戏开发框架
// move the raindrops, remove any that are beneath the bottom edge of
最好玩三国类单机游戏 if(Gdx.input.isKeyPressed(Keys.RIGHT)) bucket.x += 200 * Gdx.graphics.getDeltaTime();
touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
// create the raindrops array and spawn the first raindrop
bucket.y = 20; // bottom left corner of the bucket is 20 pixels above the bottom screen edge
// create a Rectangle to logically represent the bucket
// start the playback of the background music immediately
rainMusic = Gdx.audio.newMusic(Gdx.files.internal("rain.mp3"));
dropSound = Gdx.audio.newSound(Gdx.files.internal("drop.wav"));
// load the drop sound effect and the rain background "music"
bucketImage = new Texture(Gdx.files.internal("bucket.png"));
dropImage = new Texture(Gdx.files.internal("droplet.png"));
// load the images for the droplet and the bucket, 64x64 pixels each
在我们的游戏中,没有真正需要处理暂停/恢复。只要用户返回到应用程序,游戏就会继续。通常人们会实现一个暂停屏幕,并要求用户触摸屏幕继续。可以使用 ApplicationAdapter的生命周期pause ()和 resume ()方法。
在libGDX中任何实现 Disposable 接口并因此具有 dispose ()方法的 libGDX 类在不再使用后都需要手动清理。在我们的示例中,对于纹理、声音、音乐和 SpriteBatch 来说,都是需要清理掉的。我们将在ApplicationAdapter的生命周期dispose ()方法下进行清理:
用户可以随时关闭应用程序。对于这个简单的例子,没有什么需要做的。不过,帮助操作系统解决一点问题并清理我们造成的混乱通常是一个好习惯。
最后,如果我们用桶接住了雨滴,也就是一个雨滴打在桶上,我们希望回放声音并从数组中移除雨滴。我们只需在雨滴更新循环中加入以下几行:
for (Iterator
我们还需要让雨滴移动,简单点,我们让它们以每秒200像素/单位的恒定速度移动。如果雨滴在屏幕的底部边缘之下,我们将其从数组中移除。
接下来,我们在 render ()方法中添加几行代码,用于检查自产生新雨滴以来已经过去了多少时间,如果有必要,还可以创建一个新雨滴:
我们新建一个spawnRaindrop ()的方法来创建雨滴,实例化一个新的 Rectangle,将其设置为屏幕顶部边缘的一个随机位置,并将其添加到雨滴数组中。
gdx.graphics.getdeltatiana ()以秒为单位返回上一帧和当前帧之间传递的时间。我们所需要做的就是通过加减200个单位乘以以秒为单位的增量时间来修改桶的 x 坐标。
方法 Gdx.input.isKeyPressed ()告诉我们是否按下了特定的键。Keys 枚举包含 libGDX 支持的所有按键代码。方法
我们希望桶在按键按下并且不需要加速的情况下,以每秒200个像素/单位的速度向左或向右移动。为了实现这种基于时间的移动,我们需要知道从最后一个渲染帧到当前渲染帧之间的时间。我们可以这样做:
注意2: touchPos 是一个三维向量。OrthographicCamera 实际上是一个3d 相机,它也考虑了 z 坐标。想想 CAD 的应用,他们也使用三维正投影相机。我们只是简单地用它来绘制二维图形。
Gdx.input.getX()和Gdx.input.getY()返回当前的触摸/鼠标位置(libGDX 也支持多点触摸,这在后续的文章中详细介绍)。为了将这些坐标转换为我们相机的坐标系,我们需要调用 camera.unproject ()方法,它请求一个 Vector3,一个三维矢量。我们创建这样一个向量,设置当前的触摸/鼠标坐标并调用该方法。该三维矢量现在将包含我们的水桶所在的坐标系中的触摸/鼠标坐标。最后,我们将水桶的位置更改为围绕触摸/鼠标坐标的中心。
首先,我们通过调用 Gdx.input.isTouched ()来询问输入模块屏幕当前是否被触摸(或鼠标按钮是否被按下)。接下来,我们要将触摸/鼠标的坐标转换为相机的坐标系。这是必要的,因为我们得到的触摸/鼠标坐标的坐标系可能不同于我们用来表示游戏世界中物体的坐标系。
现在我们让用户来控制桶。之前我们说过我们会允许用户拖动这个桶。我们可以先做一个简化一点的功能。如果用户触摸屏幕(或按下鼠标按钮),我们希望桶水平围绕该位置居中。在render的最后添加如下代码:
SpriteBatch 类是一个对 OpenGL 很友好的类。它将记录在 SpriteBatch.begin ()和 SpriteBatch.end ()之间的所有绘图命令。一旦我们调用了 SpriteBatch.end () ,它将同时提交所有的绘图请求,这将大大加快渲染速度。这些在一开始看起来可能有些麻烦,但是这将提高渲染速度,在60帧率渲染500个 sprites 和在20帧率渲染100个 sprites 之间是有很大区别的。
接下来,我们告诉 SpriteBatch 准备开始绘制。我们为什么要用batch绘制呢?因为OpenGL最讨厌提供给他渲染的是一个一个的单张图片,OpenGL希望是一次性提交给它尽可能多的渲染的图片。所以这里使用batch,批次的提交给OpenGL渲染。
接下来,我们需要调用相机的update方法更新相机。相机使用矩阵的数学实体,负责建立渲染坐标系。每次我们更改了相机的任何属性,比如它的位置,相机的这些矩阵都需要重新update更新计算。在此示例中我们虽然还没有涉及到相机的相关操作,但是通常每帧更新一次相机是一个很好的习惯:
注意: 这种设置是可以更改的,使 y 轴向下,原点在屏幕的左上角。OpenGL 和相机类是很灵活的,你可以使用几乎任何你想要的视角,在 2D 和 3D中。然而,一般不推荐这样干。
我们将桶水平放置在屏幕底部边缘上方20像素的位置。默认情况下,libGDX (和 OpenGL)中的所有展现都是在 y轴朝上的情况下执行的。桶的 x/y 坐标定义了桶的左下角,绘图原点位于屏幕的左下角。矩形的宽度和高度被设置为64x64。
在 create ()方法中,我们实例化了 Rectangle 并指定了它的初始值。我们希望桶在屏幕底部边缘上方20像素,水平居中。
接下来往我们的游戏中添加水桶。为了描述水桶和雨滴,我们需要存储它们的位置和大小。libGDX 提供了一个 Rectangle 类,我们可以为此使用它。让我们从创建一个矩形代表我们的桶开始。我们给Drop类添加了一个新字段:
这里创建了一个区域为800*400单位的相机。把它想象成一个通向游戏世界的虚拟窗口。目前,我们可以将这些单位理解为像素。但是将其理解为其他的单位也没错,比如米或者其他你想要的单位。相机是非常强大的,允许你做很多事情。
接下来,我们在Drop类中创建一个相机Camera和一个 SpriteBatch。SpriteBatch 是一个特殊的类,用于绘制二维图像,比如将纹理绘制到屏幕上。
在 create ()方法的最后,我们还设置了 Music 实例为立即循环播放。运行这个应用程序,你会听到哗啦哗啦的下雨声。
示例代码中通过 Gdx.audio.newSound ()和 Gdx.audio.newMusic ()加载音效资源。这两个方法都采用 FileHandle。
注意: libGDX 支持 MP3、 OGG 和 WAV 文件。你可以根据自身需求来进行选择,每种格式都有自己的优点和缺点。例如,与其他格式相比,WAV 文件相当大,OGG 文件在 RoboVM (iOS)和 Safari (GWT)上都不能工作,而且 mp3文件存在不适当的循环问题。
接下来加载雨滴音效和背景音乐。libGDX 区分了存储在内存中的声音效果和存储在任何地方的流媒体音乐。音乐通常太大而不能完全保存在内存中,因此才有了差异。一般按照经验,如果小于10秒的音频文件,则应该使用 Sound 实例,如果较长的音频片段,则应该使用 Music 实例。
在上面的示例代码中,每一个资源,我们在 Drop 类中都有一个字段与其对应,create ()方法是ApplicationAdapter的生命周期方法,我们通常在其create()方法中加载资源,前两行加载雨滴和桶的图像资源。Texture为纹理。通常不能直接绘制纹理。可以通过将 FileHandle 传递给资源文件的构造函数来加载纹理。这样的 FileHandle 实例通过 Gdx.files 提供的方法之一获得。在libGDX中有着不同类型的文件,我们在这里使用“Gdx.files.internal”文件类型来加载资源。Gdx.files.internal为从其资源目录assets中加载资源,所传为相对于assets的文件路径。
rainMusic = Gdx.audio.newMusic(Gdx.files.internal("rain.mp3"));
dropSound = Gdx.audio.newSound(Gdx.files.internal("drop.wav"));
bucketImage = new Texture(Gdx.files.internal("bucket.png"));
dropImage = new Texture(Gdx.files.internal("droplet.png"));
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
工具默认选择Desktop和Android,这里可以只选用Desktop来做测试,如果需要在安卓上运行,也可以勾选上Android, 但是勾选上后需要配置好安卓的开发环境,其他平台也是同理。
这里使用 LibGDX提供的项目创建工具LibGdx Project Setup Tool来创建一个游戏项目,该工具的获取可以查看置顶评论,设置如下:
Libgdx 是一个用java开发的一款跨平台游戏框架。它目前支持的平台有 Windows,Mac OS X,Android三国2017网页游戏,IOS 和 HTML5。下面使用LibGDX实现一个水桶接水滴的一个小游戏。
教程至此,你应该也能快速运行游戏项目了。编程是不是也特别有意思呢?快邀请你的小伙伴一起加入到 Java 游戏开发乐趣中吧~
Java 无所不能是真的!本篇将的项目你 get 到了吗? Java 开发小游戏还是相当炫酷的!学习英语可以听英文歌曲、看英文视频等等方式。学习编程我想也可以通过开发一款游戏的方式来增加学习兴趣,感受编码的魅力。有了直观的视觉冲击可能更加能激发你的学习和动手能力! 通过我内容分享,能让更多的朋友们感受到开源项目的魅力,由而对编程产生兴趣,是我最大的乐趣!
Mario(马里奥) 这个游戏需要源码打包,参考上面步骤即可。注:此项目需要将 jdk 版本升级到 11,才可以构建和运行项目。运行效果如下图:
安装 Jdk8 或者更高版本,全称 Java Development Kit,它是 Java 的库函数,是编译、运行 Java 程序的工具包。
都说 Java 语言无处不能,可以做桌面程序,可以做后台开发,可以做手机应用,也可以做游戏开发。本篇我们就重点讲一下一款 Java 游戏框架 FXGL,它无需安装或设置,开箱即用,只需本地安装 jdk8+ 即可。游戏可轻松打包为可执行的 *.jar 文件,一行命令即可运行。
专题: 苏三国单机游戏 单机三国的游戏 三国游戏单机图上一篇html网页游戏存档在哪
下一篇2016最新公测网页游戏