我正在使用libgdx学习java游戏开发并遇到以下问题。
我有一个Rectangle数组,我迭代并根据矩形的位置绘制图像。
我的问题是如何在每次渲染时绘制随机图像,但仍然保持绘制相同的随机图像,直到它离开屏幕。目前它正在绘制相同的图像,但我想知道如何绘制不同的管道图像。
谢谢
我的迭代者
Iterator<Rectangle> upperIter = upperPipes.iterator();
while(upperIter.hasNext()) {
Rectangle upperpipe = upperIter.next();
upperpipe.x -= 8 * Gdx.graphics.getDeltaTime();
if(upperpipe.x < -32) upperIter.remove();
我的抽奖方法
public void drawPipes(){
batch.begin();
for(Rectangle upperPipe: Pipes.lowerPipes) {
batch.draw(Assets.pipeImg, upperPipe.x, upperPipe.y, upperPipe.width, upperPipe.height);
batch.end();
}
答案 0 :(得分:0)
获得可重复随机数据的一个好方法是使用Random
对象(java.util.Random适合游戏使用),并为其提供非随机种子。每次放入种子并请求相同的数字类型+范围序列时,您将得到相同的(伪 - )随机数。如果您需要不同的数字,只需更改种子即可。
举个例子:
Random rand = new Random(1234);
System.out.println(rand.nextInt()); // an int from Integer.MIN to Integer.MAX
System.out.println(rand.nextInt(100)); // an int from 0 to 100
每次都会输出以下内容。
-1517918040
33
但是更改种子(在构造函数中为Random),输出值将会改变。 rand.setSeed(seed)
将重置Random以开始其序列。
当rect在屏幕上时,您可以使用它来反复生成相同的随机数集。
然而,一种更直接,更简单的方法是在创建时为每个矩形生成一个随机数,并存储该数字直到它离开:
public void drawPipes(){
for(int i = 0; i<Pipes.color.size; i++){
num = Pipes.color.get(i);
}
for(Rectangle bottomPipe: Pipes.lowerPipes) {
switch(num){
case 0:
batch.draw(Assets.redPipeImg, bottomPipe.x, bottomPipe.y, bottomPipe.width, bottomPipe.height);
break;
case 1:
batch.draw(Assets.yellowPipeImg, bottomPipe.x, bottomPipe.y, bottomPipe.width, bottomPipe.height);
break;
}
}
}
答案 1 :(得分:0)
解决!!
我创建了一个自定义管道类,只是创建了一个管道数组,每个进入数组的新管道对象都是一个随机图像。 我遍历数组,并在每个管道对象上调用draw方法。
简单而且完美无缺