admin管理员组

文章数量:1567560

2024年7月25日发(作者:)

JAVA游戏软件修改大全

自己修改一般JAVA的文件,其实很简单,并不需要多少的专业知识就可以做到了。

最重的是你有心机和耐心从头到尾把本文看完,并动手自己实践就可以了。

一。基础准备。

1。JAVA游戏当然是需要在JAVA模拟器上运行的。到现在为止,SMARTPHONE上

能用的模拟器无非只有DM2和JMM3这两个模拟器。对这两个模拟器,我们可以说是又

爱又恨,各有缺失,又各有优点。大家想必都很清楚,我也不再多说。只是我不象大多数

人那样,只用其中一个,我是两者兼顾。因为各有优点,两个一起用当然能弥补对方的不

足。而且两个装在机器里并不怎么占地方,除非还有人在用十六M的卡或者是还没有买卡。

然后都在开始里建立快捷方式就可以用得很方便了。

我是这样用的[下载的游戏两个模拟器都装,然后试运行,那个运行的完美就留住,再

把另一个模拟器里的删掉。]

2。现在还没有专门为SP手机量身定做的JAVA游戏,而网上所有的JAVA游戏都不

是只为同一部机器所定制的,各款手机屏幕的尺寸都不尽相同,所以当你搬过来自己的机

器上可能不能全屏运行,因为是以128x128,128X160等的分辨率为标准设计的,这样

可能因为游戏没有以全屏方式运行,会有画面一部分被按键提示栏之类的物体遮挡,玩起

来当然不爽。所以JAVA全屏补丁自然就要先有准备了。

3。我们知道Nokia的游戏占了所有游戏的大部分,而且许多好玩的游戏都只开发了

Nokia的平台,所以目前很多游戏都是只有Nokia的版本,而要玩Nokia的游戏并不容

易,Nokia的游戏都使用了Nokia专用的API,因此不能直接放在我的手机上运行,以前

我们只能望着流口水,但现在不同了,可喜可贺,我们有了Nokia API的模拟包!就是“com

文件夹”,但是这个模拟包还不够完善,加入后JMM3运行时很容易造成死机现象。所以

我们还是要小心点,或者等更完善的COM包。

4。还有痛苦的事情是,游戏明明可以运行,没有声音不止,连按键控制都失效。这样

子就很难玩,这当然是因为游戏按键不兼容造成的。游戏的控制按键是根据KeyCode来

识别按键的。所有品牌的手机的控制按键的KeyCode都不同,好象只有数字键的KeyCode

是一样的。如DM2的游戏就经常出现左右软键不其作用。象这样的情况就比较麻烦,但

也并不是完全没有办法的事,我们可以自行修改,但是这就需要比较专业的东西了。如果

你想这这一点,那么你就需要进修一下JAVA语言相关的知识了。

这里我附上一篇在网上转过来的文章,或许帮助,我放在最后面了。

5。其它软件:这是最后的准备了。 (1)WinRAR解压软件,这个每人电脑都应该

有了吧。 (2)文件编辑软件,有两个选择,一个是WINDOWS自带的记事本,第二个

也是最好的选择:UltraEdit-32 Text软件,这个软件相信很多人都知道吧,其实用起来也

很简单,而且有中文xx版的。

二。实战操作。

1。修改名字。

这一点只对DM2有用,因为JMM3自己便有更改名字的功能。假如你的DM2模拟

器里装了很多游戏,那些英文名字乱七八糟的,看起来不但不舒服,要用起来也不方便。

如果全部该成了了中文名字就便于识别了。

首先,选择用WINRAR打开你要编辑的JAR文件,然后找到里面的META-INF文件

夹,这里面有个索引文件——MF,所有的基本信息都在这里面了。我们要做的就是把这

个文件拖出来,然后修改里面的信息。只要用UltraEdit-32 Text打开就可以看到了。

我列出需要改的地方:MIDlet-Name,游戏名称。MIDlet-Vendor:提供商的名称 。

然后保存即可。最后把这个文件再重新拖进JAVA文件里覆盖就可以了。

不过这里需要注意一点。纯英文的游戏改成中文名后安装会显示“应用程序错误的”,

我们只要找一个中文游戏或电子书的文件,打开用你要改的纯英文游戏

文件,把里面所有的东西复制,再粘贴到那个中文的文件

里就可以。

2。替换自己喜欢的图片和声音。

方法很简单,打开要修改的文件,再仔细看一遍,你就会发现每个JAVA文件里或多

或少都会有MID和NPG文件,MID是铃声格式,也就是游戏的声音。NPG是图象文件,

可能是程序的背景或是游戏的图片。说到这里,我想大家都明白了吧。只有以相应的内容

改成相同的名字替换就可以。例如QQ的消息声音或背景都可以更改。

3。修改电子书的内容,或自己做有图像的JAVA图书。

打开后会看到有数字象1。2。3等文件夹,里面放的可能是文本或图象,我们要做的

就是简单的替换,就可以变成自己的文字书,或图书。

4。修改游戏按键设置

这个我说过比较困难,前提是你要对JAVA代码比较熟悉才行,基本流程是:

A 首先要做的是,用反编译工具反编译你要修改的游戏。

B 然后就要动手找决定性的语言。

判断按键的函数:keyPressed、keyRepeated、keyReleased。

判断按键键值的语句:IF、SWITCH。

相关的是,NOKIA的左软键键值:-6,右软键:-7。

C 复制游戏里面要修改的地方的代码,做成基本的JAVA文件,然后调试并编译通过,

生成.class文件。

D 研究.class文件,找其中代码的规律。NOKIA游戏的左右软键的键值编译完之后一

般为FA、F9(IF语句)和FFFFFFFA、FFFFFFF9(CASE语句)。你可以在你自己编的那

个JAVA程序里面把以上找到的-6、-7改成你要的键值,分别编译,对比改和不改的两

个文件的不同之处。

附:

Java游戏编程初步

现在流行的游戏似乎都是用C或C++来开发的。在java平台上几乎

没有很大型及可玩的流行游戏。由于java是个新生语言,他的许多特性还有待大家的发掘,

但是我们不能否认Java在游戏编程方面的强大性。本文将带领大家一步一步学习编写Java

游戏。最终打造属于自己的Java游戏。

一、在开始之前我们得确认你已经安装了Java

JDK,并已经安装了浏览器软件如IE。本章是以Internet为开发对象,

一步一步教大家认识Java的Thread、Applets….以及游戏编程要注意的一些方方面面。

并在每一小部分附上了相应的源代码以供大家参考,最后我们还会对我们的游戏程序进行

指导性的提示。在文章中我们还穿插了很多建设性的问题,让读者参与到我们的开发中来。

但是由于本章指在带领大家进入这个门槛,大部分知识并不会很详细说明,有兴趣的读者

可查阅相关的资料补充。在开始之前我们还得确认你已经知道类,继承和java语言的一些

基本属性了。

基本applet

Applets是一种Web浏览器上的小程序,由于applet对系统而

言绝对安全,所以它做的事比aaplication有限,但是对于客户端的程序,applets仍然是

个很强大的工具。为了浏览和运行方便,我们就以applet为开发对象。

开发Applets程序,我们得继承Applet类,并覆写必要的函数,

下面几个函数控制了Web页面上的applet生成与执行。

函数 作用

Init() 这个函数会被自动调用,执行applet的初始化动作—包括组

件在版面上的分配,你一定得覆写它

Start()

每当浏览器显示applet内容时,都会调用它,让applet开启其正规

工作(尤其是那些被stop()关闭的工作),调用init()之后也会调用这个函数

Stop()

每当浏览器不显示内容时,都会调用它。让applet关闭某些耗资源

的工作,调用destory()之后也会调用这个函数

Destroy()

浏览器将applet自网页移除之际,便会调用它,以执行”applet不

再被使用”应该做的最后释放资源等动作

Paint() 让你在Applet界面上进行相应的绘画动作,每次刷新时都会

重画

所有的applet文件源文件名和java应用程序一样都是.java为扩

展名,编译后的执行文件扩展名为.class,由于在applet中已经没有了main()函数,它是

和html自动集成,所以我们要执行applet,要在html源文件中放入一特定的标签(tag),

才能告诉网页如何装载并执行这个applet,这里有一点要注意,我们执行的网页必须能执

行java程序。

普通Html 源码格式

<HTML>

<APPLET CODE="" WIDTH=300 HEIGHT=500

</APPLET>

</HTML>

<applet code ="" width=300

height=500>这行即applet的执行处。

applet 执行文档为 ="" 告诉网页”applet

”扩展文件为

width 和 height 告诉浏览器这个显示的applet的大小

有关标签(tag)的说明,大家可在网上找到很多相关的说明文档。

线程

由于apllet,java应用程序的执行都和线程有关。我们来大概了解

一下线程的概念。

线程也称为轻型进程

(LWP)。每个线程只能在单个进程的作用域内活动、协作和数据交换,

并且在计算资源方面非常廉价。线程需要操作系统的支持,因此不是所有的机器都提供线

程。Java

编程语言,作为相当新的一种语言,已将线程支持与语言本身合为一

体,这样就对线程提供了强健的支持。

Thread 类是一个具体的类,即不是抽象类,该类封装了线程的

行为。要创建一个线程,程序员必须创建一个从

Thread 类导出的新类。程序员必须覆盖 Thread 的 run()

函数来完成有用的工作。用户并不直接调用此函数;而是必须调用

Thread 的 start() 函数,该函数再调用

run()。

但是使用Thread类实现线程,增加了程序的类层次,所以一般

程序员都由另一个java线程接口Runnable接口来实现,Runnable接口只有一个函数

run(),此函数必须由实现了此接口的类实现。

线程中有几个重要的方法是我们得了解:

(): 启动一个线程

(): 停止一个线程

(time in milliseconds): 暂停线程在一个等待

时间

二、动画技术

自由降落动画

了解了一些基本概念后,下面我们就开始我们的实质性的工作。

我们设计一个球从屏幕顶上降落到屏幕下面,程序实现比较简单,但是这是游戏动画中不

可少的一部分。在开始之前我们来看看我们的applet开始语句。

import .*;

import .*;

public class Ball

extends Applet implements Runnable

{

public void init() { }

public void start() { }

public void stop() { }

public void destroy() { }

public void run () { }

public void paint (Graphics g) { }

}

在开始函数中我们要新建程序的主线程,并启动这个线程。一旦

做好这些准备工作以后,当applet第一次被显示时,就会创建线程对象的一个实例,并把

this对象作为建构方法的参数,之后就可以启动动画了

public void start ()

{

// 定义一个新的线程

Thread th = new Thread (this);

// 启动线程

();

}

现在我们来看看线程的run方法,它在循环while(),中每隔20

毫秒重画动画场景。sleep这个方法很重要,如果在run循环中没有这部分,圆的重画动

作将执行得很快,其他方法将得不到有效执行,也即我们在屏幕上将看不到球的显示。

public void run ()

{

//

while (true)

{

// 重画applet画面

repaint();

try

{

// 暂停线程20毫秒

(20);

}

catch (InterruptedException ex)

{

}

}

}

我们接着读下去之前,有几个问题需要回答。你也许会问,浏览

器调用Java小程序的start和stop方法吗?

run 方法是如何被调用的? 情况是这样的,当浏览器启动了一个内部

线程时,就相应地启动了applet

的运行。当网页显示时,就启动了applet的start

方法。Start方法创建一个线程对象,并把applet自身传送给线程,

以实现run方法。

此时,两个线程在运行:由浏览器启动的初始线程,以及处理动

画的线程。快速查看applet的start方法,可以知道它创建了线程,并启动了它。类似地,

当网页被隐藏后,applet的stop方法就调用了线程的stop方法。

注意:在Applets和Threads中的 start/stop子程序

在Applet 和Thread 两个类中都有start和stop方法,但它们

的功能不同。一旦Applet

显示时,就调用applet的start方法,一旦applet 隐藏时,就调用

applet的stop

方法。相反,线程的start方法将调用run方法,线程的stop方法

将停止正在执行的线程。

public void paint(Graphics g)

paint() 方法所传入的参数—— cs

对象将是一个经裁剪的相关显示区的图像代表(而不会是整个显示

区)。我们对圆球图形元素的绘制就是在通过重写

paint()方法,在其中对传入的Graphics 对象g进行操作完成的。

当我们应用程序的逻辑要对系统界面进行更新时,调用

repaint()

方法来通知AWT线程进行刷新操作。repaint() 方法实际会让

AWT线程去调用另外一个方法,update。update方法在默认情况

下会做两件事,一是清除当前区域内容,二是调用其

paint()方法完成实际绘制工作。paint、repaint、update 三个方法

关系如图所示:

此主题相关图片如下:

但是如何让我们的圆运动呢?这里我们利用函数Graphics

类的fillOval函数来设置了圆的起始位置x,y。现在我们只要在线程

run方法中每单位时间增大y的值,线程将在每一个单位时间内重画圆的位置。每单位时

间y值越大,下降的速度就会越快。在屏幕上我们就将看到这个圆球做自由降落运动。

如下代码所示:

while (true)

{

// 设置动画移动速度

y +=1;

}

public void paint (Graphics g)

{

//设置球的颜色

or ();

// 从x,y位置处画一个实心的圆

al (x , y, 2 * r, 2 * r);

}

在这之前我们需要在开始处设置一些变量,定义好x,y的默认位

置值。r 在此处是我们画的圆的半径大小。

int x = 100;

int y = 20;

int r = 10;

我们的自由降落的动画就完了。是不是很简单,如果还有地方不

明白,大家可在此处下载完整的代码及应用程序。看看真实的演示效果和代码。下面每一

部分我们也将在最后附上相应的源代码及应用程序下载。如果大家有兴趣,可改变y的值,

及x的值,你会得到不同的下降效果。

四、多媒体

使用多媒体声音

多媒体功能在游戏中是必不少的一部分,优美的音乐,漂亮的界

面往往是一个成功游戏必需具备的条件。

在开始之前我们先了解一下主要的小型声音文件类型:

AU -

(扩展名为AU或SND)适用于短的声音文件,为Solaris和下一代机

器的通用文件格式,也是JAVA平台的标准的音频格式。AU类型文件使用的三种典型音频

格式为:

8位μ-law类型(通常采样频率为8kHz), 8位线性类型,以及16

位线性类型。

WAV - (扩展名为WAV)由 Microsoft和

IBM共同开发,对WAV的支持已经被加进Windows 95并且被延伸

到Windows 98.

WAV文件能存储各种格式包括μ-law,a-law和 PCM

(线性)数据。他们几乎能被所有支持声音的Windows应用程序播放。

AIFF - (扩展名为AIF或IEF)音频互换文件格式是为Macintosh

计算机和Silicon

Graphics (SGI)计算机所共用的标准音频文件格式。AIFF和

AIFF-C几乎是相同的,除了后者支持例如μ-law和 IMA ADPCM类

型的压缩。

MIDI -

(扩展名为MID)乐器数字接口MIDI是为音乐制造业所认可的标准,

主要用于控制诸如合成器和声卡之类的设备。

在JDK1.0上,java只支持*.au格式的声音文件,但是java2的

API以及声音包提供了很强大的对声音技术的支持。而此部分为了让大家快速掌握游戏编

程的基本知识,我们仅使用了AudioClip接口类来实现播放"*.wav"。如果大家有兴趣可参

考sun

java网站的声音sapmle,上面提供了完备的实例和教程说明。

使用AudioClip接口比较简单,我们只要实例对象,加载声音文

件后,再在任何地方播放即可。恢复和播放声音最简单的方法是通过Applet类的play()

方法。

AudioClip接口

1.播放 play

2.循环 loop

3.停止 stop

启动和停止声音文件,或循环播放,你必须用 applet的

getAudioClip方法把它装载进入

AudioClip对象,getAudioClip方法要用一个或两个参数,当作播放

的指示。第一个或唯一的一个参数是

URL参数,用来指示声音文件的位置,第二参数是文件夹路径指针。

下列代码行举例说明加载声音文件进入剪贴对象:

下面的""是指当前目录下的声音文件。我们也可用*.au格式

的文件代替。

AudioClip co = getAudioClip(getCodeBase(), "");

getAudioClip()方法仅仅能被applet内调用。随着JAVA2的引

入,应用程序也能用Applet类的newAudioClip方法装入声音文件。前一例子可以改写

如下以用于Java应用程序:

AudioClip co = newAudioClip(“”)

我们现在可在任何地方使用方法play()播放我们的声音了。play()

一旦被调用立刻开始恢复和播放声音。但这有一点要注意:如果声音文件不能被查找,将不

会有出错信息,仅仅是沉默。

图片处理技术

图片的处理和声音的处理在一样简单。设置图片变量,得到图形,

最后绘制图形。我们就直接从代码来分析。在此我们绘制一幅applet的背景图。开始绘制

前,我们先要声明图形变量,用来存放图形文件。

Image backImage;

// 加载图片文件

backImgage = getImage (getCodeBase (),

"");

下面在我们的paint()方法中利用函数drawImage绘制我们图

形。

age (backImage, 0, 0, this);

DrawImage参数中的blackImage即我们得到的图形,而后面

的0,0分别代表图形的x坐标和y坐标.this:为图形代表的类,这里指的即picture类。在

这里建议大家使用*.gif格式的图片文件。因为如果是internet网上,文件的大小也决定了

你的applet加载时的快慢,没有人很愿意等很长时间来玩你的游戏,即使你的游戏比较出

色。源代码及演示程序下载.

大家在玩游戏时是不是见过人物图像行走?动物来回跑动的动画?

这些都是基于图形技术来实现的。我们只要把上面的代码稍微修改,用数组变量来存储我

们得到的图形文件组,再利用drawImage()方法播放出来就可实现动画图片的播放.

Image[] backImage;

// 加载图片文件

for (int i=4,i<,i++)

{

backImgage[i] = getImage (getCodeBase (),

"t1"+i+".gif");

}

大家可参考JDK包中的Animation例子,它就是一个很好的播

放一组图片文件的例子。

本文标签: 游戏线程方法