2014-03-04 54 views
0

我正在学习与libgdx的java游戏开发,并有以下问题。绘制随机图像libgdx

我有一个Rectangle数组,我遍历并根据矩形的位置绘制图像。

我的问题是我如何绘制每个渲染的随机图像,但仍然保持绘制相同的随机图像,直到它离开屏幕。目前它正在绘制相同的图像,但我想知道如何绘制每个不同的管道图像。

谢谢

我的Iterator

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

解决!

我创建了一个自定义管道类,并且创建了一个管道数组,每个进入该数组的新管道对象都带有一个随机图像。 我迭代了数组,并在每个管道对象上调用draw方法。

简单,它完美的作品

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)将重置随机开始其序列。

当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; 
     } 
    } 
} 
+0

我遇到的问题是保持拉动直到其图像被附加到矩形的旧图像离开屏幕 – user2510952

+0

所以在图像改变每次你不是有一个问题帧,因为它每帧都选择一个新的随机图像? –

+0

我很抱歉,这正是问题所在,我没有完全理解你的答案。你能否给我书面的例子,以便我能理解你指的是什么。 thx – user2510952