当前位置:首页 > IT攻略 > 正文

想用Java做游戏,但是小白,怎么做?

简介1设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。2所以我们需要定义swing组件,...

1

想用Java做游戏,但是小白,怎么做?
设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。

2

所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。

3

定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张图片所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。

4

食物的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。

5

接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。

6

开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。

在蛇身移动时进一步做吃掉食物、撞墙、撞到自己的处理。这是游戏的主要逻辑。

7

最后,游戏结束我们弹出一个对话框提示是否保存游戏得分。我们制作了排行榜信息,只保留前10名的游戏得分。首先定义了一个实现Comparable接口的游戏得分类,按得分高,时间最早来排序。

8

游戏结束时保存得分信息,看是否进入到排行榜中。而之前在初始化排行榜组件时就会加载游戏排行榜信息。

通过保存和读取排行榜信息,我们也熟悉一下文件读取操作,还有**、排序算法的功能。

9

最后编译运行,结果良好。经验也只能写一个大概的设计,贪吃蛇游戏功能实际是比较简单的,主要就是界面的布局,swing编程等。如果有任何疑问,欢迎大家留言。

总之,没有一技之长或者经过训练,还是不要有这个想法了,不切合实际。

并且,游戏做好之后,还需要经过一系列的游戏认证,审核。

在小范围内可以传播,但如果没有通过的话,就不可以在大范围内传播。

如果我的回答对你有帮助,点个赞再走呗~

其实使用java开发游戏也可以,java中开发游戏可以选用libgdx或者jMonkeyEngine(JME)这两款框架。

libgdx是一个跨平台的2d/3d游戏开发框架,它兼容多个平台,不过它对于ios的支持是基于RoboVM的,而RoboVM听说快挂了,Libgdx主要是用Java写的,其中也掺杂了一些C/C++代码,这些代码是为了处理一些对性能要求很高的操作,比如物理引擎或者音频处理。作为用户,你只需要关注Java的封装就可以了,它已经把所有的本地代码封装好了。相比于其他游戏引擎,libgdx的效率优势十分明显。

Libgdx由audio、files、graphics、math、physics、scenes、utils这些主要模块所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件,以及Libgdx内置工具类。

jme是专门开发3d游戏的框架,它的后续版本将支持JOGL。JME和Java 3D具有类似的场景结构,开发者必须以树状方式组织自己的场景。JME有一套很好的优化机制,这使得它得运行速度要比Java 3D快很多。JME主要由Render系统、Material系统、GUI系统、Texture和图片解码器、文件解码器、Scene插件(主要是地形系统)、粒子系统、日志、物理系统、光照系统等构成。可以说JME是一个功能齐全,性能卓越的3D图形引擎。

这两款框架开发的游戏一般运行在安卓或者桌面就可以了,桌面的话直接java –jar运行就行,不过前提得有java环境,如果想以exe运行的话也有其他工具转换的,只是有时候坑很多。

一直java由于性能等原因,java并不是3D图形应用的主流平台,但随着各种新技术的出现,这种情况有了很大改变。从开始的JIT、Static compilers,到现代的HotSpot技术,使Java程序的运行效率越来越高,已经接近于C++程序。此外,通过JNI技术,Java程序可以调用任意第三方库,包括OpenGL和DirectX等图形库。基于JNI技术,Java平台上出现了很多3D图形API,这在性能上已经越来越不错了。

最新文章