Random Walker(圆圈)比其他轴更频繁地向上移动
Random Walker (circle) move up much more frequent than other axis
所以这是我的一个小项目,只是为了好玩。我尝试使用 libgdx 在 Java 中重新创建 random Walker。
现在我认为我的代码非常成功,因为它可以正常工作(也许)。
但是有一个问题,圆比其他轴更倾向于向上移动(yaxis+)。
我花了 2 天时间才找到解决方案。还是找不到我哪里做错了。
所以这是代码
{
ShapeRenderer sr;
OrthographicCamera cam;
Random r;
int rand;
float x;
float y;
@Override
public void create()
{
sr = new ShapeRenderer();
cam = new OrthographicCamera();
cam.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
r = new Random();
x = Gdx.graphics.getWidth()/2;
y = Gdx.graphics.getHeight()/2;
}
@Override
public void render()
{
cam.update();
rand = r.nextInt(3);
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
sr.begin(ShapeRenderer.ShapeType.Filled);
sr.setColor(Color.RED);
sr.circle(x, y, 10);
sr.end();
switch(rand)
{
case 0:
x = x + 100 * Gdx.graphics.getDeltaTime();
break;
case 1:
x = x - 100 * Gdx.graphics.getDeltaTime();
break;
case 2:
y = y + 100 * Gdx.graphics.getDeltaTime();
break;
case 3:
y = y - 100 * Gdx.graphics.getDeltaTime();
break;
default:
}
}```
所以你的问题是 Random.nextInt(n) 方法的上限是独占的
// Returns number between 0-9
int next = ran.nextInt(10);
所以你需要使用
rand = r.nextInt(4);
您正在做的是在 0->2 之间生成随机数,您需要它为 0->3 以包含向下的 y 轴
所以这是我的一个小项目,只是为了好玩。我尝试使用 libgdx 在 Java 中重新创建 random Walker。
现在我认为我的代码非常成功,因为它可以正常工作(也许)。
但是有一个问题,圆比其他轴更倾向于向上移动(yaxis+)。
我花了 2 天时间才找到解决方案。还是找不到我哪里做错了。
所以这是代码
{
ShapeRenderer sr;
OrthographicCamera cam;
Random r;
int rand;
float x;
float y;
@Override
public void create()
{
sr = new ShapeRenderer();
cam = new OrthographicCamera();
cam.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
r = new Random();
x = Gdx.graphics.getWidth()/2;
y = Gdx.graphics.getHeight()/2;
}
@Override
public void render()
{
cam.update();
rand = r.nextInt(3);
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
sr.begin(ShapeRenderer.ShapeType.Filled);
sr.setColor(Color.RED);
sr.circle(x, y, 10);
sr.end();
switch(rand)
{
case 0:
x = x + 100 * Gdx.graphics.getDeltaTime();
break;
case 1:
x = x - 100 * Gdx.graphics.getDeltaTime();
break;
case 2:
y = y + 100 * Gdx.graphics.getDeltaTime();
break;
case 3:
y = y - 100 * Gdx.graphics.getDeltaTime();
break;
default:
}
}```
所以你的问题是 Random.nextInt(n) 方法的上限是独占的
// Returns number between 0-9
int next = ran.nextInt(10);
所以你需要使用
rand = r.nextInt(4);
您正在做的是在 0->2 之间生成随机数,您需要它为 0->3 以包含向下的 y 轴