基于Java的移动游戏开发入门-Java基础-Java-编程开发

java论坛 基于SSM框架的游戏论坛 java游戏贴吧 java游戏论坛 java论坛 ssm论坛 ssm贴吧 可以改为各种论坛,分类可在后台自己控制,图片可任意换 网站功能:实现论坛帖子管理,论坛帖子分类管理,留言管理,用户登录注册,管理员管理, 验证码使用,ajax使用,分页查询,报表统计,友情链接,问卷提交,问卷添加修改,问卷结果查看等。 楼中楼多级评论 Game游戏贴吧 用户测试账号 test 123456 管理员测试账号 admin 123456 数据库每个表都有详... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

   如果读者有Java编程经验,尤其是AWT和SWING的Java GUI开发经验将十分有助于理解本文,尽管不是必需的。

   一、 引言
近来,移动游戏在提供个人娱乐方面变得越来越流行。这种流行使得移动游戏给手机用户,游戏出版商和手持设备制造者带来丰厚的利润;移动游戏,在给游戏开发者和相关人员带来无数商机的同时,处于极为重要的枢纽位置。据估计,到2009年,全世界的手机玩家有望达到两亿两千万之多,移动游戏业将被规划并扩展到一个更高层次,为手机用户和手持设备制造者带来更大的利润份额。

  移动游戏可以分为三大类:

  ·嵌入式游戏:被硬编码到移动手持设备系统中的游戏,并随着设备一同发布。不久就会过时。例如:随着诺基亚手机一同发行的贪吃蛇游戏。

  ·SMS游戏:通过发送文本消息来玩的游戏-例如,把SMS消息发送到游戏服务器-该服务器处理这些SMS消息,然后再通过SMS消息形式发送回结果。经常是以在线竞赛和测验形式出现。并不很流行,因为游戏的费用将随着把每一个SMS发送到游戏服务器而逐步增加。

  ·浏览器游戏:这些游戏可以使用移动电话的内嵌微型浏览器(专用于移动设备的网络浏览器)来玩,在线或离线的方式都可以。玩家可以通过自己的手持设备或一个第三方游戏供给者的游戏Web站点的方式在线玩这样的游戏,或下载它们后离线玩。这一类游戏又有很多种类,例如单人或者多人游戏,网络游戏,离线游戏,街机游戏,等等。

  在这三种类型中,浏览器游戏是今天最流行的移动游戏类型,这是因为它们具有创新性和丰富的多媒体内容,引人入胜的表达与SMS游戏相比的低价位优势。本文将重点讨论浏览器游戏开发。今后,术语"移动游戏"在本文专指"浏览器游戏"。

  注意:本文集中于讨论2D游戏开发。因为今天流行的大部分的数字移动电话有很有限的资源(小的屏幕,有限的内存和图形支持,繁琐的键盘输入),所以时下最适合于这些设备的也是最具有商业可行性的游戏是2D游戏。但是,随着移动电话能力的不断提高,3D游戏在不久的将来将广为流行。

  移动游戏可用C ,Java(J2ME),还有Qualcomm公司的Binary Runtime Environment for Wireless(BREW)平台来进行开发。

   二、 为什么选择Java进行移动游戏开发?

  尽管C 能够被编译成本机代码并且可以直接存取本机系统资源,以及与BREW(它允许开发者使用任何希望的语言,包括C ,Java,XML和Flash)相结合为移动游戏开发者提供端到端的解决方案,但是Java仍然是进行移动游戏开发的最流行的选择。Java,或更精确的说是Java 2微型版本(J2ME)平台,被认为是开发移动游戏的最方便的语言。(要更多地了解J2ME,请参考"What is Java 2 Micro Edition?")。J2ME如此流行的背后动力包括:

  ·J2ME遵循为大多数手持设备生产商所支持的工业标准,如今大多数的移动电话都支持Java开发。

  ·J2ME是一个自由的和开放的平台。这使得开发人员投资很少,但却提供给他们必需的灵活性以及大量的支持。

  ·它的高度可移植的特性("书写一次到处运行")保证一部为一个品牌/类型的手持设备开发的游戏应用程序,将可以工作在其它类型的支持Java的手持设备品牌/类型上。

  ·它特别为小型设备进行了优化,是轻量级的,高度安全的,因为在其上开发的应用程序不能存取或者影响运行在该手持设备上的其它应用程序。

  J2ME包含移动信息设备轮廓(MIDP)API,它的设计是为专门开发包括手机在内的移动设备应用程序,但切记它们的局限性和约束条件。而且,最新的MIDP 2.0版自己提供了一套完整的API以用于游戏开发,这使得游戏开发更为简单和快捷。

  现在,我们探索一下MIDP 2.0在移动游戏开发环境中的使用。

   三、 MIDP2.0在游戏开发中的地位

  MIDP2.0 API是一组具有特别性能的API,可用于开发安全的,内容丰富的多媒体应用软件,包括适合于移动设备的游戏程序。MIDP 2.0基于以前的MIDP 1.0之上并提供一个更好的开发平台以创建高效快速的移动设备应用程序。

  MIDP 2.0进一步提炼了MIDP 1.0的特性和有关功能。有关这些新特性的信息请参考What’s New in MIDP 2.0。新增添到MIDP上的重要特点之一是Game API,或更精确地说是javax.microedition.lcdui.game API包。通过该Game API,MIDP 2.0提供给游戏开发者现成的程序模块,这些模块在早期的MIDP 1.0时是你必须从头开始创建的。这些模块以类的形式提供,用于创建和控制各种游戏元素,如游戏画布、精灵、层等等(后文将介绍)。这样,MIDP 2.0大大减少了游戏开发者的创作时间。

  进行游戏开发必需的另外两个MIDP 2.0 API包,在本文中也作了探索,它们是javax.microedition.midlet和javax.microedition.lcdui。
javax.microedition.midlet API包是开发各种类型的移动应用程序的基础。它包含javax.microedition.midlet.MIDlet类,它是所有的基于J2ME的移动应用软件(或称为midlet)的基类,它必须由所有移动应用程序的main类加以扩展后使用。非常类似于java.applet.Applet类,MIDlet类提供创建midlet程序的必要的资源。

  javax.microedition.lcdui API包是开发各种类型的移动应用程序的用户接口所必需的。这个API提供类来创建和控制UI部件(例如屏幕,表单,文本框,单选按钮,等等)并且处理包括游戏在内的移动应用程序的输入。有使用AWT和SWING GUI开发经验的开发者会发现javax.microedition.lcdui包中的元素非常相似于这些API中的元素。

  我将在本文的示例游戏开发期间讨论这些API中的和游戏开发相关的元素。
四、 构建示例游戏

  为了更好地理解这些API和它们各自的类,你最好动手开发一个简单的移动游戏。这里是一个单人的离线游戏,通过障碍物线路的驾车游戏。玩家使用左键和右键用于改变车的方向到左边或者右边以防止与障碍物的碰撞。游戏在发生碰撞并显示得分后结束。该游戏命名为HardDrive。

  注意:虽然这个示例游戏是使用J2ME Wireless Toolkit 2.1_01和J2SE 1.4.2_07 SDK在Windows 2000平台上开发的,但是,其它版本的与另外一些平台相匹配的Wireless Toolkit和J2SE SDK也可以利用。

  现在开始构建游戏程序HardDrive。从前一节中得知,你第一个需要开发的程序是HardDriveMIDlet(HardDriveMIDlet.java),它扩展了javax.microedition.midlet.MIDlet类。

  (一) HardDriveMIDlet.java

  列表1.1:该代码片断来自于文件HardDriveMIDlet.java

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
public class HardDriveMIDlet extends MIDlet implements CommandListener {
... ... ... ... ... ... ... ...
  HardDriveMIDlet还实现了javax.microedition.lcdui.CommandListener接口来接收命令事件,它们是在应用程序执行和处理期间产生的。当发出EXIT,CANCEL,BACK,OK,STOP以及类似的命令-这些命令通过使用软按钮(在移动电话屏幕附近的特殊的按钮,除了箭头键以外)产生并被HardDriveMIDlet的commandAction()方法所处理-时,这些命令事件发生。为了提高效率,可把这些命令添加到画布上去。

  HardDriveMIDlet用作所有canvas的容器,这些canvas是一些描述可用于在移动设备屏幕上进行绘制的对象。这里,midlet包含了HardDriveCanvas,它扩展了javax.microedition.lcdui.game.GameCanvas类。GameCanvas是一个专门的画布,用于为游戏程序绘制有效的动画图像,还能够查询为实现平滑动画效果而采取的脱屏图像缓冲技术有关的关键状态。

  HardDriveMIDlet包含的另外的一个canvas是GameOverCanvas,它扩展了javax.microedition.lcdui.Canvas类。Canvas是一个简单canvas,用于绘制文本,线段以及简单的形状等。当需要在屏幕上进行简单的绘制时-例如为显示游戏初启画面,游戏结束屏幕以及游戏指令屏幕-这个canvas被扩展,而取代了繁重的绘制。一个游戏程序的midlet可以包括任何个数的canvas,但是每次仅显示一个canvas,这是通过使用javax.microedition.lcdui.Display类的setCurrent()方法来实现的。

  HardDriveMIDlet还包含3个另外的重要方法,也称作lifecycle方法。它们是startApp()、pauseApp()和destroyApp(),分别相应于该midlet的Active,Paused和Destroyed状态。在HardDriveMIDlet的startApp()方法中,实现实例化HardDriveCanvas并通过使用HardDriveCanvas类的方法addCommand()把EXIT命令添加到它上面去。

  (二) HardDriveCanvas.java

  HardDriveCanvas实现了一个java.lang.Runnable接口来使它自己可以运行在自己的线程中,这对于独立地执行游戏循环是必需的。该游戏循环被连续不断地执行,直到终止游戏的必备条件满足为止(在本例中,当汽车碰撞到障碍物上或者在任何时候当玩家使用Exit按钮退出游戏)。

  列表1.2:文件HardDriveCanvas.java中的游戏循环
public void start()
{
gameRunning = true;
Thread gameThread = new Thread(this);
gameThread.start();
}
... ... ... ...
... ... ... ...
public void run()
{
Graphics g = getGraphics();
//... ... ...一些代码
while (gameRunning) //游戏循环
{
tick();
input();
render(g);
//... ... ...一些代码
try
{
Thread.sleep(timeStep );
//... ... ... ...一些代码
}
catch (InterruptedException ie) { stop(); }
}
  列表1.2显示HardDriveCanvas.java中的游戏循环。这是一典型游戏循环,它包含了依次对tick(),input()和render()方法的调用。tick()方法检查是否停止该游戏的必需条件已经满足;如果满足,即相应地改变游戏的状态。方法input()处理游戏的键盘(keys assigned for游戏playing)输入并为每一次按键,如一个游戏元素的运动,执行必要的动作。根据其所处的状态,着色任务由render()方法来完成。

  HardDriveCanvas也使用一个javax.microedition.lcdui.game.LayerManager的实例来增加和管理多层的HardDriveCanvas,其中每一层代表一个精灵。一个精灵是一部游戏中一个基本的可视化元素,或者是一个在游戏画布上移动的character,而且它能够与其它精灵(在这个示例中,汽车或障碍物都是精灵,它们可能进行彼此碰撞。)进行交互。每一个精灵形成一个虚拟层,它可能是全部或者部分透明地置于画布之上;这些层彼此以堆栈方式堆叠。一个精灵是一个javax.microedition.lcdui.game.Sprite类的对象,它负责显示、变形和旋转精灵以及进行精灵碰撞检测。被内部使用的tick()方法使用精灵类的collidesWith()方法进行碰撞检测。HardDriveCanvas实例化一个ObstacleManager类的对象,它用于着色并移动游戏画布上的障碍物精灵并检查是否它们与汽车精灵相碰撞。

  (三) ObstacleManager.java

  ObstacleManager负责创建和管理随机出现在汽车路径上的障碍物。为了简化和便利,ObstacleManager.java硬编码了每次出现在汽车路径上的障碍物的最大数目值。这个值可以根据需要进行修改。

  列表1.3:该代码片段来自于ObstacleManager.java
private static final int MAX_OBS = 10;
//... ...一些代码
  为了在随机位置创建和显示障碍物,ObstacleManager使用了一种简单的策略。它产生最初的10个障碍物精灵,并使用LayerManager来把这些精灵添加到游戏画布上去。然后,它通过使用随机产生的x和y坐标值来设置它们的位置并开始朝着游戏画布的底部移动它们。一旦每一个障碍物到达了画布的底部而没有碰撞到汽车,它的位置就被通过使用相同的技术重新复位,而同时游戏的得分增加1。所以,ObstacleManager重用了同一个障碍物精灵并随机地显示它们。

  (四) GameOverCanvas.java

  GameOverCanvas是一个简单的canvas,它接收来自于HardDriveMIDlet游戏持续时间以及得分信息并显示之。

[1] [2]

史上最全Unity3D游戏开发教程,从入门到精通(含学习路线图) Unity现在已经用的很广泛啦,可是却一直没有什么美术向的教程。 程序员方面的内容在各个论坛都有讨论,但是美术似乎很弱势啊。 明明美术也很需要掌握引擎方面的内容嘛! 山谷里的野百合还有春天呢 我们美术也要出教程!很多同学想学习unity却不知道怎么学起走,我们为同学们定制了学习规划图,按照这个流程学习就没问题啦。 视频简介: 本套课程是史上最全套Unity3d游戏开发课程,从基础的数据类型讲起,到后期的面向对象,正则表达式,包含委托事件特性等高级课程。视频完全免费,可以在线学习及免费领取配套学习资料+源 阅读详情

相关推荐

该选哪个语言进修呢?

如今,计算机编程已经成为了许多工作领域中的必备技能。但是,现在的计算机语言有很多,这可能会让我们感到困惑:我应该从哪个语言开始呢?在这篇博客中,我们将详细分析当前流行的一些计算机语言的优缺点。

a871923942的博客 688

【纯JAVA语言做个RPG游戏】2.游戏界面及角色移动的基本实现

    继上次做的地图编辑器,我大致的做了一个4000X4000的游戏地图数组,不过只画了一部分,以后要加什么新东西继续编辑这个地图就行了,保存在了一个文件中.     现在便可以继续下一步,做出游戏的大致界面了.     现在的2D游戏界面常见的大致有两种形式:     1.一种是地图在游戏窗体上固定,人在地图中走动(也就是人相对屏幕移动了);     2.而另一种则是游戏人物位置固定...

u013166799的专栏 6217

移动游戏开发入门指南

移动游戏开发是指开发适用于移动设备(如智能手机和平板电脑)的游戏应用程序。它涉及到图形渲染、用户输入、物理模拟、游戏逻辑等方面的技术。移动游戏开发可以分为原生开发和跨平台开发两种方式。原生开发是指使用特定平台的原生开发工具和语言进行开发,如使用Java和Kotlin开发Android游戏,使用Objective-C和Swift开发iOS游戏。跨平台开发则使用统一的开发工具和语言,如Unity和Cocos2d-x,可以同时在多个平台上发布游戏。

2201_76125261的博客 558

用java学做小游戏;3人物移动

1:框架 2:人物 3:获取图片路径 4:调用图片及人物

weixin_45339692的博客 1435

Android贪吃蛇:移动游戏开发实战

在当今技术进步的浪潮下,移动游戏开发已经成为IT行业一个炙手可热的领域。第一章旨在为读者提供一个关于Android平台移动游戏开发的综述,解释其背后的原理以及在不同行业背景下的应用和重要性。Android开发环境的配置不仅仅是SDK的安装,还包括集成开发环境(IDE)的配置。目前最流行的IDE是Google官方支持的Android Studio。安装Android Studio要开始开发,你首先需要下载并安装Android Studio。访问官方网站下载最新的安装包并执行安装过程。

weixin_34162851的博客 1143

J2ME在移动游戏开发中的应用与技术要点

htmltable {th, td {th {pre {简介:Java语言以其跨平台性和性能,在游戏开发领域,特别是移动游戏方面得到广泛应用。本文详细探讨了Java在游戏开发中的应用,特别是通过J2ME平台提供的技术实现,以及MIDP和CLDC组件在游戏开发中的作用。文章还涉及了Java面向对象编程的特性、图形和动画库的使用,以及性能优化和网络功能对于移动游戏的重要性。

weixin_42186015的博客 691

java开发游戏控制移动_Java游戏点滴 - 使用KeyListener控制图形移动

乱侃我上完了一个学期的Java课程,想自己做一些Java小游戏来玩玩,才发现一个学期在课堂上学习的东西简直太少太少了。即使期末考试拿到高分,但是实际应用起来,要做一个游戏程序,发现并不是那么容易……本来想做一个超级玛丽的游戏,但是完全没有头绪……后来去找CC老师指引人生方向,得知可以先试试做《推箱子》一类的游戏,即如何控制物体移动;接下来可以试试做《贪食蛇》,即在没有用户输入的时候物体仍然在自动...

weixin_42561476的博客 638

街霸游戏源码J2ME:移动游戏开发实战指南

Java ME架构主要由配置(Configuration)、简表(Profile)和可选包(Optional Package)三部分组成。配置定义了Java ME的基础功能,例如Java虚拟机(JVM)和核心类库。简表则针对不同类型的设备提供了特定的API,如移动信息设备简表(Mobile Information Device Profile,MIDP),适用于功能较弱的移动电话。可选包则提供了额外的API和功能,如支持蓝牙和多媒体。

weixin_31800911的博客 649

Java基于智能推荐的游戏论坛管理(开题+源码)

基于智能推荐的游戏论坛管理的研究意义在于,通过引入先进的信息技术和人工智能算法,建立一套完整的游戏论坛管理和推荐系统。同时,这个系统也可以为游戏论坛的管理者提供更加全面和准确的数据支持,帮助他们更好地管理和维护游戏论坛。基于智能推荐的游戏论坛管理的目的是,通过建立一套完整的游戏论坛管理和推荐系统,解决游戏论坛管理和维护的问题,提高玩家的体验和满意度。[5]王志辉. 基于Java开发的数据库迁移方法和系统设计[J]. 电脑知识与技术, 2022, 18 (17): 19-21.

qh604的博客 1075

Java开发简易飞行游戏:躲避子弹挑战

Java作为一门成熟的编程语言,已经广泛应用于企业级开发和移动应用开发中。特别是在Android移动平台上,Java是官方支持的主要开发语言。随着智能手机的普及和移动游戏市场的蓬勃发展,Java移动游戏开发成为了一个前景广阔且充满挑战的领域。Java移动游戏的开发流程大致包括需求分析、设计阶段、编码实现、测试优化以及发布上线等环节。在设计阶段,需要规划游戏的基本构架、用户界面和游戏玩法。编码实现则涉及到Java编程、游戏逻辑编写和界面设计。

weixin_42610010的博客 1119

JAVA基于JAVA的手机游戏开发(论文+源代码)

随着通信技术的发展和手机的普及,手机游戏的开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种手机游戏。本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的过程。

Java游戏项目“超级玛丽“实战教程_体验编程乐趣

超级玛丽,我想大家都耳熟能详,没错,这是一款经典且十分流行的一款游戏,在我们的印象中就是马里奥通过移动和跳跃来顶上面的砖块,它可以踩死蘑菇的敌人,以此获得积分,最后来到城堡,拿下旗子。那么,我们如何制作一款属于自己的超级玛丽游戏呢? 近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用。J2SE称为Java标准版或Java标准平台。J2SE提供了标准的SDK开发平台。利用该平台可以开发Java桌面应用程序和低端的服务器应用程序,也可以开发Java A

N_01040709的博客 511

基于JAVA开发的2048小游戏

用Java开发出的2048小游戏,简单易上手,还有PPT介绍哦

基于Java的移动游戏开发入门(来自51CTO论坛)

一、 引言  近来,移动游戏在提供个人娱乐方面变得越来越流行。这种流行使得移动游戏给手机用户,游戏出版商和手持设备制造者带来丰厚的利润;移动游戏,在给游戏开发者和相关人员带来无数商机的同时,处于极为重要的枢纽位置。据估计,到2009年,全世界的手机玩家有望达到两亿两千万之多,移动游戏业将被规划并扩展到一个更高层次,为手机用户和手持设备制造者带来更大的利润份额。  移动游戏可以分为三大类:  ·嵌入...

daughter_wall的博客 401

开发基于Java语言的手机游戏

资源共享,成就你我!开发基于Java语言的手机游戏,希望能对你有用

UDS 诊断 - CommunicationControl(通信控制)(0x28)服务 诊断

字节参数名称字节值#1CommunicationControl(通信控制)请求SID0x28#2#3communicationType(通信类型)#4nodeIdentificationNumer(节点标识符)(高位字节)controlType 为 0x04 或 0x05 时,使用该参数#5nodeIdentificationNumer(节点标识符)(低位字节)controlType 为 0x04 或 0x05 时,使用该参数。

耳朵东金子千的博客 1818

所见即所得:四款免编程移动游戏开发引擎推荐

移动游戏的制作,可以说是整个移动应用开发中,最为复杂的。不仅仅所有的窗体和控件要自己设计开发,核心的玩法也要自己创造。而工具类应用,你可以仅仅使用大多数iOS和Android的系统控件和窗体,就能完成一个简单的应用。 无论如何,热爱游戏的人是不怕麻烦的,移动游戏的开发者亦复如是。对于游戏的整个开发流程来说,更多的是在一点点调试游戏。设置各种参数,不断的对细节进行完善。而技术并不是作出好游戏最大的

书写人生 1万+

AI大模型API中转站选型指南:12项关键指标与实战评估

随着AI大模型技术的快速迭代,企业面临着一个核心挑战:如何在基础模型频繁更新的背景下,为业务系统选择稳定可靠的API中转服务?本文基于真实生产环境测试数据,从12个关键维度系统评估主流API中转站平台,帮助技术团队在模型快速演进的生态中做出科学选型决策。 1. API中转站的核心价值与业务场景 1.1 什么是API中转站 API中转站(API Gateway/Aggregator)是连接业务系统与多个大模型厂商的中间层服务。它通过统一的接口封装了不同厂商的API协议差异,为企业提供标准化的模型调用能力。在实

weixin_29056101的博客 442
上一篇: Java学习从入门到精通-Java基础-Java-编程开发
下一篇: Java多线程程序设计入门-Java基础-Java-编程开发
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值