2012-04-09 5 views
-1

저는 현재 아래 코드와 같이 10 개의 다른 인스턴스를 하드 코딩하고 있습니다.하지만 더 많이 만들고 싶습니다. 새로운 레벨에 동일한 레이아웃을 사용하는 대신, 각 블록에 대해 임의의 X 값을 생성하는 방법이 있는지 궁금합니다. 레벨 100,000 픽셀 너비가 충분할 것입니다.하지만 레벨을 계속해서 변경하는 시스템을 아는 사람이라면 그 사실을 알고 싶습니다. 나는 (제거 관련이없는 코드) 현재 블록을 정의하는 방법이 기본적으로 :임의로 레벨을 생성하려면 어떻게합니까?

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() 호출. 당신은 그것을 위해 인터넷 검색을 시도 했습니까 ... –

답변

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 
} 

을하지만이 나에게 지나치게 단순한 보인다. 나는 당신의 질문을 이해하지 못했거나 실제로 그렇게 간단했습니다.

편집 : 때 필요에 따라 블록을 생성하는 것입니다

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 
} 

또 다른 현명한 생각 :

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

는 당신이 루프를 수정해야합니다 이런 과제에 대한

플레이어가지도의 가장자리에 가까워 짐으로써 더 빠르게 로딩 할 수 있습니다.

+0

이것은 매우 좋게 보였고,이 블록에 ido를할지 몰라도 내 질문이었습니다. 셋 (three_quarters - 10); \t \t block2.setY (three_quarters - 10); \t \t block3.setY (three_quarters - 10); 나는 임의의 y 축에 대해 의미하지는 않지만 할당 블록, block2, 블록 3을 의미합니까 ?? –

+0

@CharltonSantana 블록을위한 3 개의 개별 변수를 가지기보다는 모든 변수 목록을 가지고 있습니다. 왜 3? 나중에 4를 원하면 다른 변수를 추가하고 초기화해야합니다. 목록을 사용하는 것이 훨씬 역동적입니다. setY 부분에 대해서는 대답을 편집 중입니다. –

+0

내가 그것을 initalise하는 방법을 모른다면 ... 당신은 나에게 말할 수 있습니까 .. 나는 또한 내가 100 블록을 원한다면 나는 100 번 (당신이 말했듯이) 편집해야하기 때문에 성가신 붕괴 감지가 여기있다. 블록 2에 대한 충돌의 일부입니다. // 왼쪽 하단의 터치 블록? \t \t \t 경우 (sprite.bottomlx block.bottomlx && sprite.bottomly block.topry) { \t \t \t \t Log.d (TAG, "Collided !!!!!!!!!!!! 1"); 여기 \t \t \t \t \t \t \t \t \t} –