2012-04-09 107 views
-1

我目前硬編碼像下面的代碼10個不同的實例,但但我想創造更多。我不知道是否有爲每個塊生成一個隨機的X值(這將是多大的水平)。一個10萬像素寬的水平將足夠好,但如果有人知道一個系統使水平繼續下去,我也想知道這一點。這基本上是我現在如何定義一個塊(除去不相干碼):如何隨機生成一個關卡?

block = new Block(R.drawable.block, 400, platformheight); 
block2 = new Block(R.drawable.block, 600, platformheight); 
block3 = new Block(R.drawable.block, 750, platformheight); 

400是X位置,我想要通過電平隨機地放置,所述platformheight變量定義的Y位置,其我不想改變。

+2

一個'for'循環和一些'Math.random()'調用。你有沒有嘗試google搜索它... – 2012-04-09 21:47:03

回答

1

考慮到每一個塊需要比前一個進一步

List<Block> blocks = new LinkedList<Block>(); 
Random rnd = new Random(System.currentTimeMillis()); 

int x = 400; 

while (youNeedMoreBlocks) 
{ 
    int offset = rnd.nextInt(400) + 100; //500 is the maximum offset, this is a constant 
    x += offset;       //ofset will be between 100 and 400 

    blocks.add(new Block(R.drawable.block, x, platformheight)); 

    //if you have enough blocks, set youNeedMoreBlocks to false 
} 

但是這看起來過於簡單化了我。要麼我不明白你的問題,要麼就是那麼簡單。

編輯:

對於這樣的任務:

block.setY(three_quarters - 10); 
block2.setY(three_quarters - 10); 
block3.setY(three_quarters - 10); 

您需要修改與循環:

List<Block> blocks = new LinkedList<Block>(); 
Random rnd = new Random(System.currentTimeMillis()); 

int x = 400; 

while (youNeedMoreBlocks) 
{ 
    int offset = rnd.nextInt(400) + 100; //500 is the maximum offset, this is a constant 
    x += offset;       //ofset will be between 100 and 400 

    Block tmp = new Block(R.drawable.block, x, platformheight); 
    tmp.setY(three_quarters - 10);     
      //do with tmp everything you need to apply to each block 

    blocks.add(tmp); 

    //if you have enough blocks, set youNeedMoreBlocks to false 
} 

另一種明智的想法是,當產生對需求的塊球員接近地圖的邊緣,所以你有更快的加載時間。

+0

這看起來很不錯,是我的問題,但是這個block.setY(three_quarters - 10)是怎麼回事? \t \t block2.setY(three_quarters - 10); \t \t block3.setY(three_quarters - 10);我不是指隨機的y軸,但我的意思是任務塊,block2,塊3? – 2012-04-09 22:21:20

+0

@CharltonSantana而不是有3個單獨的塊變量,有一個列表與他們所有。爲什麼是3?稍後如果你想要4,你需要添加另一個變量,初始化它等等。使用列表更方便。對於setY部分,我正在編輯答案。 – 2012-04-09 22:41:36

+0

我不知道如何初始化它...你能告訴我..我也有一個collsion檢測這是令人討厭的,因爲如果我想要100塊我必須複製和過去然後編輯100次(如你所說)在這裏是第2塊碰撞的一部分.. //左下方接觸塊? \t \t \t如果(sprite.bottomlx block.bottomlx && sprite.bottomly block.topry){ \t \t \t \t Log.d(TAG, 「相撞!!!!!!!!!!!! 1」); \t \t \t \t \t \t \t \t \t \t \t} – 2012-04-09 22:47:20