java修改游戏分辨率率修改

教你使用JavaMagic来改JAVA手机游戏软件键值和改全屏_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
教你使用JavaMagic来改JAVA手机游戏软件键值和改全屏
&&Javamagic
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩10页未读,
定制HR最喜欢的简历
你可能喜欢制作游戏对游戏的循环处理无疑是重要的,只有处理对游戏的循环,才不会出现游戏的卡顿现象。我们知道游戏中的动画是由一帧帧的静止的画面形成的,那么如果每一帧的画面因为机器处理的不同使得渲染时间不同,会使得游戏卡顿。一般的小游戏的FPS在60到100之间,FPS就是游戏画面的更新速率,代表每秒钟更新画面的次数,这里我们暂且取每一帧的更新时间为0.016秒,也就是FPS约为62。如果想要达到非常流畅的效果可以增大FPS,但切记最好不要使每一帧的时间小与其渲染时间(介绍完代码后就会理解是为什么了)。
游戏更新的主循环代码和注释如下:
class MainThread implements Runnable{
GameView Game=GameMainActivity.G//将游戏的主界面传入,GameView和GameMainActivity是自己定义的类
public void run() {
//这里是真正意义上的主循环,要记录时间
//真正意义上的开始时间,0点
//经过时间
long update=0;//用于记录游戏渲染的时间
long sleep=0;//用于记录游戏线程睡眠的时间
while(true){//如果想要很好的中断游戏线程,可以把true变为自己规定的boolean变量,通过改变变量值中断游戏
long before=System.nanoTime();//得到当前时间点,注意nanoTime()得到的是个时间点其数值并不是实际意义上的时间
long t=sleep+//用于记录上一帧花费的时间
Game.updateAndRender(t/1000f);//游戏界面的更新和渲染,该方法是自己在主界面中定义的
update=(System.nanoTime()-before)/1000000L;//这里是计算渲染的总共时间 sleep=Math.max(2,16-update);//因为我们规定了每一帧的睡眠时间是
16毫秒,所以在2和渲染后还剩余的时间中取个最大值作为睡眠时间,设2是为了防止渲染时间太长
try { Thread.sleep(sleep); } catch (InterruptedException e) { e.printStackTrace();
以上便是游戏界面更新的主循环线程,之前说的FPS不要非常大是因为如果机器的性能不好,或界面需要渲染的东西很多会导致渲染时间比较长,这样每一帧更新的时间就不能很好的控制,就会导致游戏的卡顿。
之所以像上面那样设置睡眠时间是为了保证在渲染时间在可控的范围内时,每一帧的更新时间一致这样游戏才会变的流畅。
希望对大家有帮助。如果有写的不好的地方望指出。
做java游戏时,为什么出现画面卡顿的问题?
java实现捕鱼达人游戏之Java swing图形界面开发游戏项目捕鱼达人源码及实现方式详解
解决Java设计游戏的时候,画面不动和闪烁问题,双缓冲
微信小游戏 - 小游戏 vs H5 游戏性能对比和分析
没有更多推荐了,手机签到经验翻倍!快来扫一扫!
☆免费下载☆240X320分辨率▁JAVA▁触屏游戏合集(已更新到35合集)
17887浏览 / 296回复
以下合集包内的分2种类型:全和改触屏。全触屏是指官方出品时候就是全触屏触控的。改触屏是指原始版本为版,经玩家修改加触后变成触屏版或带虚拟键盘版。所有游戏都经我简单测试,只要可安装可以运行的,我都会放上来,至于具体的玩法请自测!全部游戏为和谐版或版,请个人自备报废的SIM卡或飞行模式下测试过后再玩,这样就可以最大限度地避免游戏中误触付费的情况发生!全部游戏皆收集于网络中,如有侵犯你的版权,请联系我们,我们会将相关资源及时删除!(注:本贴内游戏图片非常多,打开会很慢,请耐心等待片刻,对此给你带来的不便,请多多谅解!)
游戏太多,所以我放网盘里了,下面的TXT文件是下载地址来的,自己下吧。游戏若有更新,不再开新帖了,直接将本贴的图片和地址一起更新,敬请关注!(如果下载地址断链了,请发站内短信告知我,我很少看回帖的,谢谢!)
下面是网盘内资源的截图,我将每个合集包都打包了,自己找喜欢的下载或者全部下也行,自由选择。
以下为各合集包的游戏界面截图。(图太多,而且还要排版,可能要花几天时间才能上完)1、分辨率JAVA触屏游戏合集01&
2、240X320分辨率JAVA触屏游戏合集02
3、240X320分辨率JAVA触屏游戏合集03
4、240X320分辨率JAVA触屏游戏合集04
5、240X320分辨率JAVA触屏游戏合集056、240X320分辨率JAVA触屏游戏合集06
7、分辨率JAVA触屏游戏合集078、分辨率JAVA触屏游戏合集089、分辨率JAVA触屏游戏合集0910、分辨率JAVA触屏游戏合集1011、分辨率JAVA触屏游戏合集1112、分辨率JAVA触屏游戏合集1213、分辨率JAVA触屏游戏合集1314、分辨率JAVA触屏游戏合集1415、分辨率JAVA触屏游戏合集1516、分辨率JAVA触屏游戏合集16
17、分辨率JAVA触屏游戏合集17
18、分辨率JAVA触屏游戏合集1819、分辨率JAVA触屏游戏合集1920、分辨率JAVA触屏游戏合集2021、分辨率JAVA触屏游戏合集2122、分辨率JAVA触屏游戏合集2223、240X分辨率JAVA触屏游戏合集2324、2分辨率JAVA触屏游戏合集2425、2分辨率JAVA触屏游戏合集2526、2分辨率JAVA触屏游戏合集2627、分辨率JAVA触屏游戏合集2728、分辨率JAVA触屏游戏合集2829、分辨率JAVA触屏游戏合集2930、分辨率JAVA触屏游戏合集3031、分辨率JAVA触屏游戏合集3132、分辨率JAVA触屏游戏合集3233、分辨率JAVA触屏游戏合集3334、分辨率JAVA触屏游戏合集3435、2分辨率JAVA触屏游戏合集3536、分辨率JAVA触屏游戏合集3637、分辨率JAVA触屏游戏合集3738、分辨率JAVA触屏游戏合集3839、分辨率JAVA触屏游戏合集3940、分辨率JAVA触屏游戏合集4041、分辨率JAVA触屏游戏合集4142、分辨率JAVA触屏游戏合集4243、分辨率JAVA触屏游戏合集4344、分辨率JAVA触屏游戏合集4445、分辨率JAVA触屏游戏合集4546、分辨率JAVA触屏游戏合集4647、分辨率JAVA触屏游戏合集4748、分辨率JAVA触屏游戏合集4849、分辨率JAVA触屏游戏合集4950、分辨率JAVA触屏游戏合集50
郁闷呢,如果上图后系统会自动排版就好了。。。排版的时间是上图的3倍呢,好累!
你网盘在哪啊?LZ?
谢谢分享!!
谢谢楼主分享
谢谢楼主,你总是给我们惊喜。。。
赵刀了~~赵刀了~~赵刀了~~赵刀了~~赵刀了~~赵刀了~~
对 第2楼 luckygirl1998 说:=========================yuiiyt89568
上图后系统会自动排版就好了。。。排版的时间是上图的3倍呢,好
对 楼主 7分毒 说:=========================111
放假发圣诞节发速度发
怎么才能下?
dgdsfgdsf gdfsgdfgdsfgdffas fs大开发阶段萨拉房间里打手机发生的
你网盘在哪啊谢谢楼主
怎么下不了
这个我要支持
啊啊啊啊啊啊
好贴不顶 五雷轰顶
支持键盘翻页 ( 左右 )&
可能感兴趣的板块:
用户名/注册邮箱/注册手机号
其他第三方号登录纯java代码写的一个小案例-像素鸟.
注释也很清楚.代码挺简单,有助于激发学习兴趣,也可以自己闲暇的时间玩一玩.
代码的编译软件:Eclipse
如果你用的也是eclipse的话
直接导入文件 就可以
,如果不是的话,自己建一个项目,将代码copy里面就ok了.
JDK版本支持:jdk1.8及以上
另外一个小游戏--飞机大战:
源码下载地址:
程序运行后的图片示例:
分享16款Java小游戏源码Java applet小游戏源码
黑马程序员
JAVA自主练习 —— 模拟像素鸟
像素鸟(flapybird)的简单实现
原生JS写《像素鸟》的小游戏(下落的小鸟)
网页JavaScript特效之flappy bird(像素鸟)
使用Libgdx开发的FlappyBird(像素鸟、疯狂的小鸟)游戏源码
没有更多推荐了,当前位置浏览文章
今天,让我们进入一个能伸手触摸的世界吧。在这篇文章里,我们将从零开始快速完成一次第一人称探究。本文没有涉及复杂的数学计算,只使用到了光线投射技术。你可可以已经见识过这种技术了,比方《上古卷轴5 : 天际》、《毁灭公爵3D》。使用了光线投射就像开挂一样,作为一名懒得出油的程序员,我表示非常喜欢。你能舒畅地浸入到3D环境中而不受“真3D”复杂性的约束。举例来说,光线投射算法耗费线性时间,所以不使用优化也能加载一个巨大的世界,它执行的速度跟小型世界一样快。水平面被定义成简单的网格而不是多边形网面树,所以即便没有 3D 建模基础或者数学博士学位也能直接投入进去学习。利使用这些技巧很容易即可以做少量让人嗨爆的事情。15分钟之后,你会四处拍下你办公室的墙壁,而后检查你的 HR 文档看有没有规则禁止“工作场所枪战建模”。玩家我们从何处投射光线?这就是玩家对象(Player)的作使用,只要要三个属性 x,y,direction。JavaScriptfunction Player(x, y, direction) {
this.direction =}function Player(x, y, direction) {
this.direction =}地图我们将地图存作简单的二维数组。数组中,0代表没墙,1代表有墙。你还能做得更复杂些,比方给墙设任意高度,或者者将多个墙数据的“楼层(stories)”打包进数组。但作为我们的第一次尝试,使用0-1就足够了。JavaScriptfunction Map(size) {
this.size =
this.wallGrid = new Uint8Array(size
size);}function Map(size) {
this.size =
this.wallGrid = new Uint8Array(size
size);}投射一束光线这里就是窍门:光线投射引擎不会一次性绘制出整个场景。相反,它把场景分成独立的列而后一条一条地渲染。每一列都代表从玩家特定角度投射出的一条光线。假如光线碰到墙壁,引擎会计算玩家到墙的距离而后在该列中画出一个矩形。矩形的高度取决于光线的长度——越远则越短。绘画的光线越多,显示效果就会越平滑。1. 找到每条光线的角度我们首先找出每条光线投射的角度。角度取决于三点:玩家面向的方向,摄像机的视野,还有正在绘画的列。JavaScriptvar angle = this.fov
(column / this.resolution - 0.5);var ray = map.cast(player, player.direction + angle, this.range);var angle = this.fov
(column / this.resolution - 0.5);var ray = map.cast(player, player.direction + angle, this.range);2. 通过网格跟踪每条光线接下来,我们要检查每条光线经过的墙。这里的目标是最终得出一个数组,列出了光线离开玩家后经过的每面墙。从玩家开始,我们找出最接近的横向(stepX)和纵向(stepY)网格坐标线。移到最近的地方而后检查能否有墙(inspect)。一直重复检查直到跟踪完每条线的所有长度。JavaScriptfunction ray(origin) {
var stepX = step(sin, cos, origin.x, origin.y);
var stepY = step(cos, sin, origin.y, origin.x, true);
var nextStep = stepX.length2 & stepY.length2
? inspect(stepX, 1, 0, origin.distance, stepX.y)
: inspect(stepY, 0, 1, origin.distance, stepY.x);
if (nextStep.distance & range) return [origin];
return [origin].concat(ray(nextStep));}function ray(origin) {
var stepX = step(sin, cos, origin.x, origin.y);
var stepY = step(cos, sin, origin.y, origin.x, true);
var nextStep = stepX.length2 & stepY.length2
? inspect(stepX, 1, 0, origin.distance, stepX.y)
: inspect(stepY, 0, 1, origin.distance, stepY.x);
if (nextStep.distance & range) return [origin];
return [origin].concat(ray(nextStep));}寻觅网格交点很简单:只要要对 x 向下取整(1,2,3…),而后乘以光线的斜率(rise/run)得出 y。JavaScriptvar dx = run & 0 ? Math.floor(x + 1) - x : Math.ceil(x - 1) -var dy = dx
(rise / run);var dx = run & 0 ? Math.floor(x + 1) - x : Math.ceil(x - 1) -var dy = dx
(rise / run);现在看出了这个算法的亮点没有?我们不使用关心地图有多大!只要要关注网格上特定的点——与每帧的点数大致相同。样例中的地图是32×32,而32,000×32,000的地图一样跑得这么快!3. 绘制一列跟踪完一条光线后,我们就要画出它在路径上经过的所有墙。JavaScriptvar z = distance
Math.cos(angle);var wallHeight = this.height
height /var z = distance
Math.cos(angle);var wallHeight = this.height
height /我们通过墙高度的最大除以 z 来觉得它的高度。越远的墙,就画得越短。额,这里使用 cos 是怎样回事?假如直接用原来的距离,就会产生一种超广角的效果(鱼眼镜头)。为什么?想象你正面向一面墙,墙的左右边缘离你的距离比墙中心要远。于是本来直的墙中心就会膨胀起来了!为了以我们真实所见的效果去渲染墙面,我们通过投射的每条光线一起构建了一个三角形,通过 cos 算出垂直距离。如图:我向你保证,这里已经是本文最难的数学啦。渲染出来我们使用摄像头对象 Camera 从玩家视角画出地图的每一帧。当我们从左往右扫过屏幕时它会负责渲染每一列。在绘制墙壁之前,我们先渲染一个天空盒(skybox)——就是一张大的背景图,有星星和地平线,画完墙后我们还会在前景放个武器。JavaScriptCamera.prototype.render = function(player, map) {
this.drawSky(player.direction, map.skybox, map.light);
this.drawColumns(player, map);
this.drawWeapon(player.weapon, player.paces);};Camera.prototype.render = function(player, map) {
this.drawSky(player.direction, map.skybox, map.light);
this.drawColumns(player, map);
this.drawWeapon(player.weapon, player.paces);};摄像机最重要的属性是分辨率(resolution)、视野(fov)和射程(range)。分辨率决定了每帧要画多少列,即要投射多少条光线。视野决定了我们可以看的宽度,即光线的角度。射程决定了我们可以看多远,即光线长度的最大值组合起来用控制对象 Controls 监听方向键(和触摸事件)。用游戏循环对象 GameLoop 调使用 requestAnimationFrame 请求渲染帧。这里的 gameloop 只有三行JavaScriptoop.start(function frame(seconds) {
map.update(seconds);
player.update(controls.states, map, seconds);
camera.render(player, map);});oop.start(function frame(seconds) {
map.update(seconds);
player.update(controls.states, map, seconds);
camera.render(player, map);});细节雨滴雨滴是使用大量随机放置的短墙模拟的。JavaScriptvar rainDrops = Math.pow(Math.random(), 3)var rain = (rainDrops & 0) && this.project(0.1, angle, step.distance);ctx.fillStyle = #ctx.globalAlpha = 0.15;while (--rainDrops & 0) ctx.fillRect(left, Math.random()
rain.top, 1, rain.height);var rainDrops = Math.pow(Math.random(), 3)var rain = (rainDrops & 0) && this.project(0.1, angle, step.distance); ctx.fillStyle = #ctx.globalAlpha = 0.15;while (--rainDrops & 0) ctx.fillRect(left, Math.random()
rain.top, 1, rain.height);这里没有画出墙完全的宽度,而是画了一个像素点的宽度。照明和闪电照明其实就是明暗解决。所有的墙都是以完全亮度画出来,而后覆盖一个带有肯定不透明度的黑色矩形。不透明度决定于距离与墙的方向(N/S/E/W)。JavaScriptctx.fillStyle = #000000;ctx.globalAlpha = Math.max((step.distance + step.shading) / this.lightRange - map.light, 0);ctx.fillRect(left, wall.top, width, wall.height);ctx.fillStyle = #000000;ctx.globalAlpha = Math.max((step.distance + step.shading) / this.lightRange - map.light, 0);ctx.fillRect(left, wall.top, width, wall.height);要模拟闪电,map.light 随机达到2而后再快速地淡出。碰撞检测要防止玩家穿墙,我们只需使用他要到的位置跟地图比较。分开检查 x 和 y 玩家即可以靠着墙滑行。JavaScriptPlayer.prototype.walk = function(distance, map) {
var dx = Math.cos(this.direction)
var dy = Math.sin(this.direction)
if (map.get(this.x + dx, this.y) &= 0) this.x +=
if (map.get(this.x, this.y + dy) &= 0) this.y +=};Player.prototype.walk = function(distance, map) {
var dx = Math.cos(this.direction)
var dy = Math.sin(this.direction)
if (map.get(this.x + dx, this.y) &= 0) this.x +=
if (map.get(this.x, this.y + dy) &= 0) this.y +=};墙壁贴图没有贴图(texture)的墙面看起来会比较无趣。但我们怎样把贴图的某个部分对应到特定的列上?这其实很简单:取交叉点坐标的小数部分。JavaScriptstep.offset = offset - Math.floor(offset);var textureX = Math.floor(texture.width
step.offset);step.offset = offset - Math.floor(offset);var textureX = Math.floor(texture.width
step.offset);举例来说,一面墙上的交点为(10,8.2),于是取小数部分0.2。这意味着交点离墙左边缘20%远,离墙右边缘80%远。所以我们使用 0.2
texture.width 得出贴图的 x 坐标。试一试在恐怖废墟中逛一逛。还有人扩展了社区版。ctolsen增加了 WASD 方向键。Fredrik Wallgren 实现了 Java 移植。接下来做什么?由于光线投射器是如此地快速、简单,你能快速地实现许多想法。你能做个地牢探究者(Dungeon Crawler)、第一人称射手、或者者侠盗飞车式沙盒。靠!常数级的时间耗费真让我想做一个老式的大型多人在线角色扮演游戏,包含大量的、程序自动生成的世界。这里有少量带你起步的难题:浸入式体验。样例在求你为它加上全屏、鼠标定位、下雨背景和闪电时同时出现雷响。室内级别。使用对称渐变取代天空盒。或者者,你觉得自己很屌的话,尝试使用瓷片渲染地板和天花板。(能这么想:所有墙面画出来之后,画面剩下的空隙就是地板和天花板了)照明对象。我们已经有了一个相当健壮的照明模型。为何不将光源放到地图上,通过它们计算墙的照明?光源占了80%大气层。良好的触摸事件。我已经搞定了少量基本的触摸操作,手机和平板的小伙伴们能尝试一样 demo。但这里还有巨大的提升空间。摄像机特效。比方放大缩小、模糊、醉汉模式等等。有了光线投射器这些都显得特别简单。先从控制台中修改 camera.fov 开始。心动了吗?还不赶紧动起来,打造属于自己的游戏世界!顿时满满的自豪感,真的很想知道大家的想法,还请持续关注升级,更多干货和资料请直接联络我,也能加群,邀请码:柳猫,欢迎大家共同探讨

我要回帖

更多关于 java获取图片分辨率 的文章

 

随机推荐