我正在开发Android游戏开发,我是新手.我想开发一款免费的屏幕分辨率的游戏.如果我知道如何使用libgdx库捕获Android设备的屏幕分辨率,这对我来说已经足够了.在一些谷歌搜索后,我在不同的网站上阅读以下代码,但它不适用于libgdx.
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
width = displaymetrics.widthPixels;
Run Code Online (Sandbox Code Playgroud)
除此之外,我还使用了以下网站上给出的技术,该技术使用"OrthographicCamera"类来解决问题,并且对我也没有用.
http://www.java-gaming.org/index.php?topic=25685.0
如何获得屏幕分辨率或任何方式来调整我的游戏的屏幕分辨率.
我sprite.setSize(float x, float y)在Libgdx中的方法有问题.它不会影响精灵的大小或尺寸.无论我传递给setSize()方法,它们都是固定的.
这是我的代码:
public class GameScreen implements Screen {
OrthographicCamera camera;
SpriteBatch batch;
Texture carTexture;
Sprite carSprite;
public GameScreen()
{
}
@Override
public void render(float delta) {
// TODO Auto-generated method stub
Gdx.gl.glClearColor(0,0,0,0);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.begin();
carSprite.setSize(16, 32);
batch.draw(carSprite, 0 , 0);
batch.end();
camera.update();
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
camera.viewportWidth=width;
camera.viewportHeight=height;
camera.update();
}
@Override
public void show() {
// TODO Auto-generated method stub
camera = new OrthographicCamera(); …Run Code Online (Sandbox Code Playgroud) 几年前我参加了算法课程,我们给出了以下问题(或类似的问题):
有一个
n楼层的楼层,电梯一次只能上2层楼,一次只能下3层楼.使用动态编程编写一个函数,该函数将计算电梯从一层i到另一层所需的步数j.
使用有状态方法显然很容易,你创建一个数组n个元素,并用值填充它.你甚至可以使用一种技术上非有状态的方法,它涉及累积结果递归传递它.我的问题是如何通过使用延迟评估和打结来以非有状态的方式执行此操作.
我想我已经设计了正确的数学公式:

where i+2和i-3是否在允许的值范围内.
不幸的是我不能让它终止.如果我i+2首先放置案例然后选择一个偶数楼层,我可以让它来评估目标等级以下的均匀楼层,但就是这样.我怀疑它直接射向最高的平坦地板,其他一切,下降3级,然后重复,永远在最顶层的几层之间振荡.
所以它可能以深度优先的方式探索无限空间(或有限但有环).我无法想象如何以广泛的方式探索这个空间而不使用其间有效模仿状态方法的大量数据结构.
虽然这个简单的问题令人失望,但我怀疑在一维中看到了一个解决方案,我可能能够使它适用于问题的二维变化.
编辑:许多答案试图以不同的方式解决问题.问题本身对我来说并不感兴趣,问题在于使用的方法.Chaosmatter创建一个minimal可以比较潜在无限数字的函数的方法可能是朝着正确方向迈出的一步.不幸的是,如果我尝试创建一个表示100层楼的列表,结果计算时间太长,因为子问题的解决方案不会被重用.
我尝试使用自引用数据结构,但它没有终止,存在某种无限循环.我会发布我的代码,这样你就可以理解我的目标.如果有人能够在自引用数据结构上使用动态编程实际解决问题,我会改变接受的答案,使用懒惰来避免多次计算事物.
levels = go [0..10]
where
go [] = []
go (x:xs) = minimum
[ if i == 7
then 0
else 1 + levels !! i
| i <- filter (\n -> n >= 0 && n <= 10) [x+2,x-3] ]
: go xs
Run Code Online (Sandbox Code Playgroud)
您可以看到如何1 + levels !! i尝试引用先前计算的结果以及如何filter (\n -> n >= …
algorithm haskell dynamic-programming lazy-evaluation tying-the-knot
所以我试图用文件handle.list()方法获取目录中的文件列表,但即使目录中有文件,它也会返回一个空列表.对我来说似乎很奇怪的是它确实可以在设备上运行,但它在桌面上不起作用.我想我知道问题是什么,但我不知道如何解决它.在方法描述中,它说"在桌面上,类路径上的目录的FileType.Internal句柄将返回零长度数组.",但没有其他方法,所以你认为我能做什么?
如何在libgdx-android-desktop中更改大小?我对窗口大小感到困惑,不知道如何解决这个问题.
所以对于桌面窗口,我想要500x500,但我想要全屏,所以我不能硬编码.
出于某种原因,ANDROID_WIDTH始终等于WINDOW_WIDTH.
int WINDOW_WIDTH = 500;
int WINDOW_WIDTH = 500;
public void create() {
if (Gdx.app.getType() == ApplicationType.Android) {
int ANDROID_WIDTH = Gdx.graphics.getWidth();
int ANDROID_HEIGHT = Gdx.graphics.getHeight();
camera = new OrthographicCamera(ANDROID_WIDTH, ANDROID_HEIGHT);
camera.translate(ANDROID_WIDTH/2, ANDROID_HEIGHT/2);
camera.update();
} else {
camera = new OrthographicCamera(WINDOW_WIDTH, WINDOW_HEIGHT);
camera.translate(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
camera.update();
}
Gdx.input.setInputProcessor(new GameInputProcessor());
}
Run Code Online (Sandbox Code Playgroud) 我认真地打赌我做了一些愚蠢的事情,似乎无法注意到它.
package com.me.mygdxgame;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
public class Locked implements ApplicationListener
{
private OrthographicCamera camera;
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;
private BitmapFont font;
private CharSequence str = "Hello World!";
private float width;
private float height;
@Override
public void create()
{
width = Gdx.graphics.getWidth();
height = Gdx.graphics.getHeight();
camera = new OrthographicCamera(1, height / width);
batch = new SpriteBatch();
texture = …Run Code Online (Sandbox Code Playgroud) 触摸区http://imageshack.us/a/img836/2909/swipe1.png
在绿色区域,用户可以向上,向右,向下,向左滑动.我现在怎样才能刷卡?或向下滑动?或向右滑动或向左滑动?例如,如何获取String - > input = getSwiped(); - >输入然后是向上,向右,向下或向左
用户可以触摸两个按钮.1或2. 1表示鸭子,2表示跳跃.
我想同时检查这些输入.用户可以在同一时刻触摸并向上滑动.
我知道有一个GestureDetector.我查看了代码,但不知道如何使用滑动部分.
我知道如何检查按钮.问题只出在这里 - >如何同时检查输入以及如何向上滑动或向右滑动等.
我搜索了一个如何检查Multitouching:
for (int i = 0; i < 10; i++) {
if (Gdx.input.isTouched(i) == false) continue;
float x = Gdx.input.getX(i);
float y = Gdx.graphics.getHeight() - Gdx.input.getY(i) - 1;
//...
}
Run Code Online (Sandbox Code Playgroud) 所以我要做的是通过将pixmaps绘制到纹理来为我的游戏生成背景图像.到目前为止,我可以做到这一点,但现在我需要绘制在X轴或Y轴上翻转到纹理的像素图.但是我找不到任何可以做到的事情.pixmap类不提供该功能.然后我想我可以在纹理上绘制一个翻转的纹理区域,但到目前为止我还没有找到如何做到这一点.所以我想知道我怎么能做这样的事情,是否可以用其他java库翻转png图像,然后从翻转的图像创建一个像素图?
我使用Libgdx框架在Java中创建了一个游戏.现在我想知道是否可以在桌面(java/.jar)游戏中使用Google Play游戏服务,还是仅仅适用于移动设备?