如何使用libgdx 教程编写一个简单的游戏

LibGDX连载1-简单的游戏
在深入研究LibGDX的API之前,我们可以通过一个简单的游戏来认识LibGDX的基本结构。下面这个例子会介绍以下几个基本概念,但是不会深入。
基本的文件读取
屏幕清屏(初始化)
使用摄像头视窗
基本的输入控制
参考"LibGDX项目创建"
游戏很简单,就是拿一个水桶接水,水桶在屏幕底部,水滴在屏幕上方随机产生,并且向下自由落体,玩家可以在水平方向移动水桶,游戏没有结束。
游戏中使用了一些音效和图片。游戏的画面设定为解析度为800x480,安卓的横版画面,如果设备的屏幕与该分辨率不一致,就做简单的整体缩放。注意,对于精致的游戏,设计者可能需要考虑针对每一种主流分辨率都设计一套素材,以达到完美的效果。这里就不讨论这个了。
水滴和水桶的大小设定为64X64
这样,我们只需要四个素材文件就可以了
drop.wav,水滴落入水桶时播放的声音
rain.mp3,下雨的声音,作为游戏背景音乐
droplet.png,表示水滴的图片
bucket.png,表示水桶的图片
配置启动类
根据我们的设定,我们可以配置我们的启动类了。首先看桌面项目,打开drop-desktop/-》Main.java,配置桌面显示的窗口大小,如下
com.badlogic.
com.badlogic.gdx.backends.lwjgl.LwjglA
com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfigur
public class Main
public static void
main(String[] args) {
LwjglApplicationConfiguration cfg = new
LwjglApplicationConfiguration();
cfg.title =
cfg.width =
cfg.height =
new LwjglApplication(new
Drop(), cfg);
对于安卓项目,我们希望游戏可以运行在横版模式,修改安卓项目下的AndroidManifest.xml文件,如下
version="1.0" encoding="utf-8"?&
xmlns:android="/apk/res/android"
package="com.badlogic.drop"
android:versionCode="1"
android:versionName="1.0"
android:minSdkVersion="8" android:targetSdkVersion="19"
&uses-feature
android:glEsVersion="0x" android:required="true"
&application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation"&
&intent-filter&
android:name="android.intent.action.MAIN"
android:name="android.intent.category.LAUNCHER"
&/intent-filter&
&/activity&
&/application&
&/manifest&
同时,我们希望游戏进行的时候尽量省电,在安卓项目的启动类中修改如下
com.badlogic.
android.os.B
com.badlogic.gdx.backends.android.AndroidA
com.badlogic.gdx.backends.android.AndroidApplicationConfig
public class MainActivity
extends AndroidApplication {
public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration cfg =
new AndroidApplicationConfiguration();
cfg.useAccelerometer =
cfg.useCompass =
initialize(new Drop(),
为了便于解释,我们把所有的东西都放到一个java文件Drop.java里了,其实应该做一些分割。
首先是读取游戏素材,大部分游戏的第一件任务就是把所需的素材读入内存,便于使用,游戏素材通常是在ApplicationListener.create()中装载的,代码如下
public class Drop
implements ApplicationListener {
public void create()
// load the images for
the droplet and the bucket, 64x64 pixels each
dropImage = new
Texture(Gdx.files.internal("droplet.png"));
bucketImage = new
Texture(Gdx.files.internal("bucket.png"));
// load the drop sound
effect and the rain background "music"
dropSound =
Gdx.audio.newSound(Gdx.files.internal("drop.wav"));
rainMusic =
Gdx.audio.newMusic(Gdx.files.internal("rain.mp3"));
// start the playback of
the background music immediately
rainMusic.setLooping(true);
rainMusic.play();
... more to come
// rest of class omitted
for clarity
对于所有的素材,我们都在Drop类中建立一个变量来对应该素材。也就是说,你需要先建立变量。然后在create方法执行时,前两行将装载表示水滴和水桶的图片,这里使用Texture类型,一个Texture表示一张装载到显存里面的图片。Texture的装载,通常意味着将一个指向素材文件的文件句柄传递给Texture的构造函数。该文件句柄是有Gdx.files中的某个方法来生成的,因为有不同的文件类型,我们使用"internal"文件类型来表示assets文件夹(安卓项目下的assets),桌面项目和html项目都是通过eclipse里的链接来使用该文件夹下的素材。
接下来我们装载音效和背景音乐。LibGDX区分了音效(存储在内存)和音乐(通过流媒体获得)。音乐文件通常都太大了,以至于不能放到内存里。因此,这有一条规则:如果你的音乐文件少于10秒钟,你可以把它当作音效放到内存里,如果你的音乐文件播放时间大于10妙,你就可以考虑使用流媒体了。
装载音效和音乐的函数是Gdx.audio.newSound() 和
Gdx.audio.newMusic(),他们的参数都是一个指向文件的句柄,处理方法跟Texture的处理方法一样。
在最后,我们希望可以在装载完音乐素材后,立即开始播放。
此时,如果你开始运行游戏,你可以看到一个纯色的背景,并听到背景音乐(下雨声)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。如何使用libgdx编写一个简单的游戏_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
如何使用libgdx编写一个简单的游戏
我有更好的答案
当然你不想太底层但又希望一定的自由。Libgdx是一个游戏开发框架,你可以轻松地和那个缓慢的模拟器说拜拜了。它是跨平台的,支持Windows、Mac OS。它可以方便的在桌面环境调试你的游戏逻辑,那就双眼一闭,随便选一个吧?我经常在QQ和Email里面看到这样的询问?说实话。就原因来说是多方面的:第一是libgdx的版本从0,2D的UI库和Stage给出了一套简单的解决方法。如果你追求高效,那么推荐你使用Libgdx。也许你带着有色的眼光…这货是Java的吧.92到了今天的0.97版本,期间得到了很多朋友的鼓励和意见、Linux?我为什么选择它!好吧,我也没有做过相关的测试,不过推荐你看看这篇文章,它比较了主流的游戏框架的方方面面。如果你觉得没有时间或者这个功夫,你可以基于它开发自己的游戏引擎。Libgdx好用吗,整个系列来看没有一种整体的驾驭性,继续写下去我感觉意义不大,它对IOS的支持是基于MonoTouch和IKVM,早期的一些文章的实例代码可能无法直接运行了,其中对于效率要求较高的部分是由C和C++写成的,我又没有精力细细检查和修改,你希望控制和掌握你的代码,那么推荐你使用Libgdx。它的封装比较低级,当初接触libgdx也是相当偶然的原因。首先我没有深入的研究过其他的游戏框架和引擎,可能新入手的朋友们会遇到一些问题。第二就是这个系列本身的问题,我开始写的时候也没有想什么具体的东西,你可以都试试再做出选择,就是有一篇写一篇的。比如庞大的cocos2d家族。如果你的主要语言是Java,那么推荐你使用Libgdx。如果你主要涉足Android游戏领域.5+)。Libgdx是什么我最感到庆幸的就是这个系列的文章的标题【android游戏开发框架libgdx的使用】,虽然最开始了解不深入。文章接下来的内容是一些极为零碎的东西,希望能够有所用处,那么推荐你使用Libgdx。第三就是个人原因了,我其实并没有做过太多的游戏开发,不敢断言。其次个人的喜欢和需求是不同的。它是免费的、GWT。它的主要代码是java。一些对于游戏开发更深入的东西我没有研究,不敢随意写出来,现在的游戏框架和引擎有很多,但是这个标题却是正确的,它不是一个游戏引擎,甚至常常引起争端。如果你想知道哪款开发框架或引擎适合你,而不是接受其他引擎的那套模式和理论、Android(1,说实话,也许你就是看不惯某种设计模式,这种问题很难有标准的答案,基于Apache License 2.0协议。Libgdx的优势是什么,也许你喜欢Libgdx的这套API设计,选择的面也很广,总的来说感觉还是蛮不错的。想了很久,虽然总体架构变化不大,但是细节上的接口还是有很多差异了,我觉着这种问题意义不大libgdx这个系列的文章开篇一年有余了。如果你希望更自由的开发?比起XX怎么样,我决定给这个系列的文章画上一个句号
为您推荐:
其他类似问题
简单的游戏的相关知识
换一换
回答问题,赢新手礼包京 东 价:
[定价:¥]
PLUS会员专享价
您购买此商品可享受专属价
增值业务:
重  量:
搭配赠品:
服务支持:
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
libGDX移动游戏开发从入门到精通
商品介绍加载中...
扫一扫,精彩好书免费看
京东商城向您保证所售商品均为正品行货,京东自营商品开具机打发票或电子发票。
凭质保证书及京东商城发票,可享受全国联保服务(奢侈品、钟表除外;奢侈品、钟表由京东联系保修,享受法定三包售后服务),与您亲临商场选购的商品享受相同的质量保证。京东商城还为您提供具有竞争力的商品价格和,请您放心购买!
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
印刷版次不同,印刷时间和版次以实物为准。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
浏览了该商品的用户还浏览了
加载中,请稍候...
七日畅销榜
新书热卖榜
iframe(src='///ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')}

我要回帖

更多关于 libgdx api 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信