计算机基础和简单问题的编程

为了修改,你应该首先准备工具。这里推荐winhex(16位二进制编辑器)ultraedit,java源代码反编译,当然还有你手机对应的模拟器。至于Java环境,也可以选择安装。我现在没有。首先,我们总体来看一下全屏解决的问题。对于阿尔卡特ot735i的手机来说,长期以来饱受黑条之苦(什么是游戏时屏幕下方有黑条,moto c650等部分机器也有这种情况,直接用fulljava就可以处理,735i设置为128*128。再来看看中文字体的显示,在735i和三星x108/x608中尤为明显。winfy等专家也说过这个,这里我就简单说一下(顺便说一下,关于字体,主要是因为游戏调用的是小字体,而735i和三星用的是中字体,不能像moto一样自动调用中字体。因此,一般的中国游戏不显示任何东西...)修改的时候一般关注getfont(0,0,8)就够了。那些用getfont (0,0,16)和getfont (32,0,8)的游戏都差不多,主要区别是16的转换。从第一个类文件开始,逐个打开,在里面寻找getfont或者getfong(0,0,8)。找到后,看getfont的位置,记下来,看看修改后有什么变化。注意节目的习惯!_之后用jar文件的getfont(o,o,8拉类,用winhex打开,点击在搜索中找到编号16。一般情况下(获取font (o,o,8))输入1008(其他只是更改最后一个数字8,可以自己推送)更改为65448。下面是史酷比2修改后的对比图。注意,有些模拟器可以显示小字体,但不代表手机可以!例如,我的是...我们来看看出汗后按键的修改。一般来说,修改密钥的方法是相似的。在我改的游戏里,一般都会遇到if和case的情况。在这两种情况下,if都是比较简单的,而且不需要太多的东西就可以轻松实现,所以也是我们最喜欢的情况。呵呵,if句的主要方法和换字体一样。搜索和查找,使用winhex。往下看:阿尔卡特557/ 556moto c系列诺基亚:阿尔卡特ot735i moto v300及以后机型键值16 value键值16 value键值16 value键名左软键-21 EB左软键-6 FA左软键215软。1右软键-22 EA右软键-7 F9右软键22 16 soft2上箭头键-1 FF上箭头键-1 FF上箭头键1 01上左箭头键-2 FE左箭头键-3 FD左箭头键2 02左下箭头键。-6 FA下箭头键-2 FE下箭头键6 06下右箭头键-5 FB右箭头键-4 FC右箭头键5 05右动作(735i)/OK: 20 14选择其他数字键在手机上是一样的。具体如下:键值16二进制值键名0 key 48 30 num 0 1 key 49 31 num 1 2 key 50 32 num 2 3 key 51 33 num 3 4 key 52 34 num 4 5 key 53 35 num 5 6 key 54 36 num 6 7 key。55 37 num 7 8 key 56 38 num 8 9 key 57 39 num 9 * key 42 2A星# key 35 23磅我们要做的就是把找到的键改成我们想要的,而我们通常只需要换左右软键就可以了,所以我们通常会先搜索fa a0,这个语句反过来的意思是如果i==-6。这就是你在节目里看到的!!当然s40的游戏是这样的。如果换其他键,只需更换相应的代码即可。比如我想把557 game的左软键改成735i,在类中搜索-21或者keypressed。找到后用winhex查eba0,然后用15ao替换,大概是IF。供参考,请点击此处。我说的是案例的方法。事实上,我是新来的。刚开始,我很久都不明白,很迷茫...我在那里流汗...好在群里的yy师傅很耐心的给我解释,总算搞定了。在这里,大家要多想想,多想想,强行是不会有好下场的...我第一次改的案例游戏还是错了好几个小时...发汗...首先,大家都被一些第三方软件如记事本、word所回避,这些软件以后会有用的,所以先打开吧。当然你得判断是属于诺记鸭还是其他游戏。比如左软是-6,右软是-7,moto和Kaji是-21,-22。这个更重要。在课堂上自己判断的方法是寻找...汗(最繁琐但实用)...然后注意你发现的-6 -7或者。!来不及找好的例子了,就这么说吧,因为之前的游戏《暴富之路》还有其他问题,不方便拿来举例。我手里还有多余的游戏吗...好了,继续,现在我们用winhex打开你确认的类,寻找fffFF9或者FFFFFA。通常,光标会停在你找到的第一条FFF语句上。注意他前面的七个零和数字X,也就是000000x,其中X是多少,表示后面多少组。所谓的团就是我的名字,很好理解。大家想叫什么都可以,而群* * *有16个码,一般形式是XX XX XX XX XX XX XX XX,每八个码为一个群,每个群内的顺序不能。!立正!!来,我们来看看。这就是我们要找的数据!0000 00 02/ff ff ff fa 00 00 xx xx/xx xx xx xx/分组就是这样划分的。最好把之前的0000一起保留!好了,用鼠标圈出你刚刚在winhex中找到的16位代码,现在在工具栏中点击编辑——全部复制——16位值,点击后最小化winhex,在准备好的笔记本(word)中粘贴两次,(其中一次作为控件,另一次注意不要搞混,不管在哪里)好了,现在是根据之前机型的按钮的16位值修改!它在记事本里。具体操作就是,比如这个代码,00 000 002/FFFFFFFA 00 00 xx/XX XX XX XX XX XX/,直接替换成00 00 00 xx,其中XX代表你要更改的键值,一般就是你的左右软键的值(16位)。切记不要反着改,否则你的左右键在游戏中会被反着用。记住这里只替换ff ff ff fa或者ff ff ff f9,因为只替换左右软键。把这两个替换成00 00 00 xx就行了,然后把新替换的数据排序!!!重要!!比如:00000003/00 00 00 16/XX XX XX/00000015/YY YY YY/zzzzzzzzzzzzzzzz/ZZZZZZZZ这个需要改成0 00 00 16/ xx xx xx和00 00 00 15/YY YY YY整体交易所00 00 03/00 00 15...可以看看后面xx yy zz之类的东西,不要动,这里画了'/'符号让大家看清楚。真的改了也不可能在。好了,第一步结束了。接下来打开ue,即ultraedit,点击搜索-替换,会弹出一个对话框(说的有点多...但是,这里很容易出错...一个错误就结束了)。复制并粘贴您以前的数据,以便在搜索栏中进行比较。请记住,数据末尾不能有空格。仔细检查,并将修改后的数据粘贴到替换列中。注意这个时候鼠标最好点在ue中class文件的左上方,因为ue是从上到下搜索,然后直接替换,成功后保存,在去winhex之前最小化。然后重复操作...更改此类后,再更改下一个类,直到您更改了case -6 /-7或case -21 /-22的所有类...发汗...繁重的体力和脑力劳动以及视力工作...一般熟练之后,10分钟就把所有课都做完了,大家都很努力...改完之后,打开。顺便也可以查查自己的好数据。一般情况下(好像没什么特别的),原来的case-6 -7变成了你修改的case xx。呵呵,把你的jar文件发回来,试着运行一下。应该可以吧!最后,我要告诉你关于游戏的名字修改。这个好像是三星的一个同志说的。其实我的方法很简单。注意不是在游戏里,而是手机上的名字显示,一般是英文的。呵呵,其实你会在jar里面打开一个meta-inf文件夹,然后把里面唯一的文件manifest.mf拖到外面,想放哪里就放哪里,只要能找到就行。我通常把它放在桌面上。嗯,打开桌面上的manifest.mf。有很多东西,很多都没用,里面的一些东西阻止了一些游戏的运行!!我经常遇到这种情况。具体必备的东西如下:清单-版本:微版-配置:微版-profile: midlet-1:这些都是必备的。如果你把它们删掉,似乎游戏就不行了!!(我是这么想的,反正没试过),而且其中三个一般都保留MIDlet-name:(这是手机上显示的名称,你写什么都会显示)MIDlet-Version:(Version)MIDlet-Vendor:(附加信息,可以写自己修改的东西)除了name和Vendor,其他最好不要改,其余都是一个字。点击:文件-另存为,什么都不变,只是把格式改成utf-8,保存,尝试覆盖jar的meta-inf中原来的manifest.mf。您的中有一些游戏在ok之前不能运行吗?呵呵,不要去想那些因为功能原因无法运行的游戏。一般有三种方法可以解决被这种方式修改后无法使用的游戏:第一,彻底修改游戏程序,使其对应自己的手机,一般人...出汗...,第二,买一部新手机...第三,放弃游戏...(完)

补遗:关于jar的大小,这里不解释复杂的调音方法,因为涉及到修改整个游戏的顺序。干脆删掉一些不必要的东西,比如mid音乐!修改成功的一个例子是alest 2在改键后放了一个全屏补丁,大概是135k,即使完全删除mid也只有108k。希望这对手机内存不足的朋友有所帮助。十六进制数的表示方法,如果不使用特殊的书写形式,十六进制数16将与十六进制数10混合。任何数字:9876,你都分不清是16还是10。Java规定16十六进制数必须以0x开头。例如,0x1表示十六进制数16。而1代表十进制。再比如:0xff、0xFF、0X102A等等。x也不区分大小写。(注意:0x中的0是数字0,不是字母O)下面是一些用法示例:int a = 0x 100 f;int b = 0x 70+a;10转换成16的方法与转换成二进制的方法类似,唯一的变化是:除数由2改为16。同样是120,换算成16时,商余数120 120/167877/1607120换算成120,结果是。原码,补码,补码。我们已经知道,在计算机中,所有的数据最终都是用二进制数来表示的。我们还学习了如何将10二进制数转换成二进制数。然而,我们仍然没有学会如何用二进制表示一个负数。举个例子,假设有一个int数,值为5,那么我们知道它在计算机中表示为:000000000000000000000000000001015。转换成二进制的时候是101,但是int数占了4个字节(32位)。现在我想知道,在计算机中如何表示-5?在计算机中,负数是以它们的补数的形式表示的。什么是补语?这得从原码和反码说起。源代码:一个整数,按绝对值换算成二进制数,称为源代码。比如00000000000000000000000000000000000101就是5的原码。反码:将二进制数逐位反相,新的二进制数称为原二进制数的反码。求逆运算的意思是:本来是1,得到0;本来是0,你得到1。(1变成0;0到1)例如000000000000000000000000101的每一位取反,De 111111111111165438111 11111010。称重:111111111165438。0111 1110101010100000000000000000000000000000000000006538。反码是相互的,因此,也可以称为:1111111111165438。438+01111111010000000000000000000000000065438.补码:补码加1称为补码。也就是说,要得到一个数的补数,先得到这个补数,然后在这个补数上加上1,这个数就叫做这个补数。例如:000000000000000000000000000000001的反码是:11111165438。438+011 11 111111 11111010。所以,补码是:111111111165438。8+0111 11110+1 = 1111111111654388+01111 11111011。转换成十六进制:0xFFFFFFFB。再举个例子,我们来看看整数-1在计算机中是怎么表示的。假设这也是一个int类型,那么:1,先取1的原代码:00000000000000000000000000001 2,逆代码:11111654388+0111 11111110 3、补码:111111654388+0111111111可以看出-1在计算机中是二进制的。16十六进制是:0xFFFFFF。注:这段话出自sofy。其实16位的东西在C语言里已经很详细了。如果觉得不够,可以找本书仔细研究一下。

游戏的减肥方法——减少图片容量方法1:将多张png图片整合成一张图片。这是降低png图像容量最基本最有效的方法。比如你有10张png图片,每张都是10×15,现在你可以把它整合成一张100×15或者10×150或者x的图片,这张大png图片的容量比10张png图片的总容量要小很多。这是因为省略了9张图片的头、文件块尾等等,合并了调色板(如果10张图片的调色板完全一样,就节省了9张图片的调色板占用的容量!这不是一个小数目)方法二:减少画面中的颜色数量也是一种方法?我想说的是什么时候,谁来减。如果游戏完成后发现容量超过,就是在用优化工具减色。虽然可以缩小画面的容量,但是画面效果不一定尽如人意。因此,需要确定艺术家绘画时使用的颜色数量。手机游戏使用的是像素图,也就是一个像素一个像素点开的图像,所以可以提前指定调色板中的颜色数量。但是,最后使用优化工具也是有用的。有时候差一两个颜色,效果差别不大,但是容量可以降低。呵呵,减色真的可以算是一个办法。方法三:尽可能使用旋转和翻转。这不需要解释。方法4:使用调色板改变技术和自定义图像格式。如果前两种方法都不能满足你的容量需求,而你恰好在游戏中使用了很多不同颜色的怪物,那么你可以尝试一下换调色板技术。J2ME规范规定手机至少可以支持png格式的图片,每个png都有调色板数据。如果两张图片除了颜色(包括颜色的数量)不同之外都是一样的,只需要保存一张图片和其他图片的调色板,相比保存多张图片节省了很多容量。不过这种方法挺麻烦的。你得了解png文件的格式,然后做一个工具提取png文件中调色板数据和调色板数据块的偏移量。Image仍然用于将图像保存在内存中。如果要改变调色板,将png文件读入一个字节数组,根据png中调色板数据块的偏移量,用新的调色板替换原来的调色板数据,然后用这个字节数组创建一个变色的图像。也许你觉得保存一个png和n个调色板数据有点浪费。至少保存了1份调色板数据!如果直接提取图像数据,增加N份调色板数据,会节省更多的容量。但是使用上面的方法,我们也可以用drawImage进行渲染。如果你用这种方式自定义图像格式,你得自己写一个渲染函数,这是可以的,但是在某些机器上,put pixel的速度非常慢。或者可以自己构造png格式的数据,然后使用Image。如果你真的决定这么做,我有个小建议。不要压缩图像数据。zip压缩比你大部分时间写的压缩算法要好(见J2ME游戏开发笔记-压缩与否)。论坛上有朋友提到,用bmp格式代替png格式,jar里的图片容量更小,这也是一个道理。减少图片占用内存的计算1 png图片占用的内存与图片容量不对应。图片占用的内存计算为:宽度*高度*bpp。Bpp是系统内置的颜色位数。以诺基亚6600为例,像素格式为565***16位。所以一张100*100的图片占用100 * (16/8) = 20000字节,大概是19.5k的内存。像素格式是固定的,不能改变,所以只有降低图片的宽度和高度,才能降低内存消耗。2减少图像对象的数量可以节省大量内存。减少图像对象的数量并不意味着减少图片的数量。我的意思是在一个Image对象中保存一张完整的图片,通过setClip的方法从这个Iamge对象中选择你需要渲染的图片。但这种方法牺牲了一点速度,每帧从整合图像中切割图像的速度比不切割渲染要慢。但是对于小部分的渲染,比如精灵,用这个方法是没有问题的。这种方法的另一个问题是,你不能在集成图中释放不必要的图片,这取决于你的集成程度。从镜像容量和内存管理的角度,我一般采用二次集成的方法。比如有n个精灵。首先将每个elf的所有图片整合成一个整合图得到n个整合图,然后将这n个整合图再次整合成一个更大的整合图。所以在jar中只有一个集成图。使用时,可将大型集成图形分割并加载到n个图像对象中。这样就可以分别管理每个小精灵的图片了。3使用旋转和翻转只保存一张原图,需要时再旋转或翻转。

key修改的GetGameAction(keyCode)在中级章节中,通过修改游戏的key值,我们知道了什么是keyPressed(keyCode)。现在来说说另一种按键方式:getGameAction(keyCode)也是以简单的基础为出发点,这里就不聊太复杂的深入研究了。GetGameAction(keyCode)也就是说,这个值是从keyCode中获取的。值列表:键名KEYCODE GAMEACTION导航键:-1 1导航键:-6 6导航键左:-2 2导航键右:-5 5中键:-20 8数字键1: 49 9数字键2: 50 1数字键3: 51 6558。字键4: 52 2数字键5: 53 8数字键6: 54 5数字键7: 55 11数字键8: 56 6数字键9: 57 12从上表可以看出,如果一个游戏采用getGameAction(keyCode code)的方式,那么得到的值无论是导航键还是数字键的2、4、6、6,而且getGameAction是一个标准的API,也就是上表中的值在任何型号上都是一样的,所以移植起来也很方便(多用于动作和射击类游戏)。不过需要注意的是,getGameAction对诺基亚的左右软键有效(值未知)。但是对于MOTO(包括索尼爱立信等。),getGameAction对左右软键无效,具体值为0。所以如果此时还修改左右软键,可能会出错。另外# *键也无效,数字0未知。学习getGameAction可以更进一步修改键。虽然getGameAction的值一般不需要修改,但是阅读代码还是很有帮助的。而有些游戏会用getGameAction来判断,这个时候就需要用到这些知识了。

之后,我们来看看按钮修改。这个很重要,因为一般fulljava修改的游戏虽然可以运行,但是不能正常运行,这让很多人很痛苦。其实这只是游戏中调用相应指令的不同按钮。我们只需要修改按钮值。一般来说,修改密钥的方法是相似的。在我改的游戏里,一般都会遇到if和case。在这两种情况下,if都比较简单,而且不需要太多的东西就可以轻松实现,所以也是我们最喜欢的情况。呵呵,if语句的主要方法和换字体,搜索搜索,用winhex修改是一样的,但是对应的是faa0和f9a0,修改如下。

往下看:阿尔卡特557/ 556moto c系列诺基亚:阿尔卡特ot735i moto v300及以后机型键值16 value键值16 value键值16 value键名左软键-21 EB左软键-6 FA左软键215软。1右软键-22 EA右软键-7 F9右软键22 16 soft2上箭头键-1 FF上箭头键-1 FF上箭头键1 01上左箭头键-2 FE左箭头键-3 FD左箭头键2 02左下箭头键。-6 FA下箭头键-2 FE下箭头键6 06下右箭头键-5 FB右箭头键-4 FC右箭头键5 05右动作(735i)/OK: 20 14选择其他数字键在手机上是一样的。具体如下:键值16二进制值键名0 key 48 30 num 0 1 key 49 31 num 1 2 key 50 32 num 2 3 key 51 33 num 3 4 key 52 34 num 4 5 key 53 35 num 5 6 key 54 36 num 6 7 key。55 37 num 7 8 key 56 38 num 8 9 key 57 39 num 9 * key 42 2A星# key 35 23磅我们要做的就是把找到的键改成我们想要的,而我们通常只需要换左右软键就可以了,所以我们通常会先搜索fa a0,这个语句反过来的意思是如果i= = -6。这就是你在节目里看到的!!当然s40的游戏是这样的。如果换其他键,只需更换相应的代码即可。比如我想把moto的游戏的左软键改成735i,在类中搜索-21或者keypressed(调用键的命令)。找到后用winhex查eba0,然后用15ao替换。我说的是case的一般修改方法,比较复杂,尤其是循环性...刚开始的时候很久都没看懂,不知所措...我在那里大汗淋漓...在这里,大家要多思考,多思考。强行是没有好下场的。最好用ida-pro分析修改。

首先可以用一些第三方软件比如记事本、word等,以后会有用的。先打开它。当然你得先判断是诺基亚的游戏还是其他游戏。比如诺基亚的左软是-6,右软是-7,moto和Kaji的是-21,-22。这个更重要。在课堂上自己判断的方法是寻找...汗(最繁琐但实用)...然后注意你发现的-6 -7或者-。!现在我们用winhex打开你确认的类,找ff ff ff f9或者fffFFFFFFA。一般光标会停在你找到的第一个FFF语句上,注意它前面的七个零和数字X,即0 00 00 0x,这里X是有多少组。所谓的团就是我的名字,很好理解。任何人想叫什么都可以。* * *组有16个码,一般是xx XX XX XX XX XX XX XX的形式,每8个码为一组(这里我用XX代表程序中的16位数值),各组内的顺序不能打乱!!立正!!来,我们来看看。这就是我们要找的数据!0000 00 02/ff ff ff fa 00 00 xx xx/xx xx xx xx/分组就是这样划分的。最好把之前的0000一起保留!和这个题目相关的图不错。在winhex中找到后(即先搜索),用鼠标圈出刚刚找到的16代码。现在点击工具栏中的编辑-全部复制-16十进制值。点击后,最小化winhex,在准备好的记事本(word)中粘贴两次。(其中一个作为对照。注意不要搞混了,不管在哪里)好了,现在按照之前机型的按键的16位数数值修改!它在记事本里。具体操作就是,比如这个代码,00 000 002/FFFFFFFA 00 00 xx/XX XX XX XX XX XX/,直接替换成00 00 00 xx,其中XX代表你要更改的键值,一般就是你的左右软键的值(16位)。记住,不要改正错误。记住这里只替换ff ff ff fa或者ff ff ff f9。因为只替换了左右软键,所以只要把这两个替换成00 00 00 xx就行了,然后把新替换的数据排序!!!重要!!比如:00000003/00 00 00 16/XX XX XX/00000015/YY YY YY/zzzzzzzzzzzzzzzz/ZZZZZZZZ这个需要改成0 00 00 16/ xx xx xx和00 00 00 15/YY YY YY整体交易所00 00 03/00 00 15...可以看后面xx yy zz之类的东西,不要动,这里的'/'符号是画出来让大家看清楚的,真的改了就不能有了。

第一步结束了。接下来,打开ue,即ultraedit,点击搜索-替换。会弹出一个对话框(说的有点过分...然而,这里很容易出错...一个错误就结束了)。将您之前的比较数据复制并粘贴到搜索栏中,请记住,数据末尾不能有空格。仔细检查,并将修改后的数据粘贴到替换列中。注意,此时最好在ue中的class文件左上方点击鼠标,因为ue是自上而下搜索,然后直接点击替换,成功后保存,最小化后再去winhex。首先会有一个对话框提示你更新数据,点击'是'。然后重复操作...更改此类后,再更改下一个类,直到您更改了case -6 /-7或case -21 /-22的所有类...发汗...繁重的体力和脑力劳动以及视力工作...一般熟练之后,10分钟就把所有课都做完了,大家都很努力...改完之后,打开。顺便也可以查查自己的好数据。一般情况下(好像没什么特别的),原来的case-6 -7变成了你修改的case xx。呵呵,把你的jar文件发回来,试着运行一下。应该可以吧!

最后说一下游戏的名字修改。这好像是三星同志说的。其实我的方法很简单。注意不是在游戏里,是手机上的文件名,一般是英文的。呵呵,其实你会在jar里面打开一个meta-inf文件夹,然后把里面唯一的文件manifest.mf拖到外面,想放哪就放哪,只要找到就行。我通常把它放在桌面上。嗯,打开桌面上的manifest.mf。有很多东西,很多都没用,里面的一些东西阻止了一些游戏的运行!!我经常遇到这种情况。具体需要的东西如下:微版-配置:微版-profile:midlet-1:midlet-name:(这是手机上显示的名字。写什么都显示)MIDlet-Version:(Version)MIDlet-Vendor:(附加信息,可以写自己修改之类的)除了名字和厂商,最好点:File-Save as,什么都不变,只是把格式改成utf-8,保存,返回jar的meta-inf时覆盖原来的Mani。