2016-01-08 6 views
0

Я ищу вторую пару глаз, чтобы помочь мне дважды проверить, правильно ли я делаю это или кто знает лучшего способа сделать это.Попытка получить его так, если блок рядом с другим, он меняет текстуру, чтобы она выглядела лучше.

То, что я пытаюсь сделать, это получить его так, чтобы, если блок размещен рядом с другим, текстура обновится, чтобы сделать его похожим на 2 блока. Все блоки размещаются, когда пол сначала генерируется, ни один не добавляется или не удаляется до тех пор, пока пол не будет завершен, затем все блоки будут удалены, а затем добавлены для следующего этажа.

Что этот код мне нужен с помощью справки, это то, что он проверяет все блоки вокруг него, сохраняет целое число из 4 цифр в массиве int для этого блока, а затем проверяет это целое число и решает, какую текстуру сгенерировать.

Если целое число равно 1000, то над ним находится блок, если он равен 100, то под ним находится 10, а слева - 1, 1 - справа. Так что, если есть блок со всех сторон было бы 1111.

часть, где я уверен, что программа Мессинг так что вам не нужно искать через все, чтобы найти проблему:

public Block(String num, int x, int y) { 
    setName(num); 

    xa[xnum] = x; 
    ya[ynum] = y; 

    while (a < xnum){ 
     blockDirection[a] = 0; 
     n = 0; 
     while (n < xnum){ 

      if (xa[a] + 20 == xa[n] && !(right)){//right 
       blockDirection[a] += 1; 
       right = true; 
       n++; 
      } 
      if (xa[a] - 20 == xa[n] && !(left)){//left 
       blockDirection[a] += 10; 
       left = true; 
       n++; 
      } 
      if (ya[a] + 20 == ya[n] && !(down)){//down 
       blockDirection[a] += 100; 
       down = true; 
       n++; 
      } 
      if (ya[a] - 20 == ya[n] && !(up)){//up 
       blockDirection[a] += 1000; 
       up = true; 
       n++; 
      } 
      n++; 
     } 
     up = false; 
     down = false; 
     left = false; 
     right = false; 
     System.out.println(blockDirection[a] + ", " + xa[a] + ", " + ya[a] + " printed from Block class"); 
     a++; 
    } 
    if (a == xnum){ 
     AssignDone = true; 
    } 
} 
выход

консоль:

Image of game board with tile coords

blockDirection [а], ха [а], я [а]

0, 60, 60 printed from Block class 
0, 60, 60 printed from Block class 
0, 140, 60 printed from Block class 
0, 60, 60 printed from Block class 
0, 140, 60 printed from Block class 
0, 60, 140 printed from Block class 
0, 60, 60 printed from Block class 
0, 140, 60 printed from Block class 
0, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
0, 60, 60 printed from Block class 
0, 140, 60 printed from Block class 
0, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
0, 0, 60 printed from Block class 
10, 60, 60 printed from Block class 
0, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
0, 0, 60 printed from Block class 
1, 40, 60 printed from Block class 
10, 60, 60 printed from Block class 
0, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
0, 0, 60 printed from Block class 
1, 40, 60 printed from Block class 
10, 80, 60 printed from Block class 
10, 60, 60 printed from Block class 
0, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
0, 0, 60 printed from Block class 
1, 40, 60 printed from Block class 
11, 80, 60 printed from Block class 
10, 100, 60 printed from Block class 
10, 60, 60 printed from Block class 
0, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
0, 0, 60 printed from Block class 
1, 40, 60 printed from Block class 
11, 80, 60 printed from Block class 
10, 100, 60 printed from Block class 
0, 140, 0 printed from Block class 
1010, 60, 60 printed from Block class 
1000, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
1000, 0, 60 printed from Block class 
1001, 40, 60 printed from Block class 
1011, 80, 60 printed from Block class 
1010, 100, 60 printed from Block class 
0, 140, 0 printed from Block class 
100, 140, 40 printed from Block class 
1010, 60, 60 printed from Block class 
1000, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
1000, 0, 60 printed from Block class 
1001, 40, 60 printed from Block class 
1011, 80, 60 printed from Block class 
1010, 100, 60 printed from Block class 
0, 140, 0 printed from Block class 
100, 140, 40 printed from Block class 
1010, 60, 80 printed from Block class 
1010, 60, 60 printed from Block class 
1000, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
0, 140, 140 printed from Block class 
1000, 0, 60 printed from Block class 
1001, 40, 60 printed from Block class 
1011, 80, 60 printed from Block class 
1010, 100, 60 printed from Block class 
0, 140, 0 printed from Block class 
100, 140, 40 printed from Block class 
1110, 60, 80 printed from Block class 
1010, 60, 100 printed from Block class 
1010, 60, 60 printed from Block class 
1001, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
1, 140, 140 printed from Block class 
1000, 0, 60 printed from Block class 
1001, 40, 60 printed from Block class 
1011, 80, 60 printed from Block class 
1010, 100, 60 printed from Block class 
1, 140, 0 printed from Block class 
101, 140, 40 printed from Block class 
1110, 60, 80 printed from Block class 
1010, 60, 100 printed from Block class 
1010, 160, 60 printed from Block class 
1010, 60, 60 printed from Block class 
1001, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
1, 140, 140 printed from Block class 
1000, 0, 60 printed from Block class 
1001, 40, 60 printed from Block class 
1011, 80, 60 printed from Block class 
1010, 100, 60 printed from Block class 
1, 140, 0 printed from Block class 
101, 140, 40 printed from Block class 
1110, 60, 80 printed from Block class 
1010, 60, 100 printed from Block class 
1010, 160, 60 printed from Block class 
10, 160, 140 printed from Block class 
1010, 60, 60 printed from Block class 
1001, 140, 60 printed from Block class 
10, 60, 140 printed from Block class 
1, 140, 140 printed from Block class 
1000, 0, 60 printed from Block class 
1001, 40, 60 printed from Block class 
1011, 80, 60 printed from Block class 
1010, 100, 60 printed from Block class 
1, 140, 0 printed from Block class 
101, 140, 40 printed from Block class 
1110, 60, 80 printed from Block class 
1010, 60, 100 printed from Block class 
1010, 160, 60 printed from Block class 
10, 160, 140 printed from Block class 
10, 60, 180 printed from Block class 

остального кода (не включая часть выше):

@Override 
public void update(KTech kt, float time) { 
    if (AssignDone == true){ 
     if (a == xnum){ 
      a = 0; 
     } 
    } 
} 

@Override 
public void render(KTech kt, Renderer r) { 
    if (AssignDone){ 
     a = 0; 
     while (a < xnum){ 

      if (blockDirection[a] == 1111){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(down & up & left & right)"); 
       r.drawImage(block, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 1110){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(down & up & left)"); 
       r.drawImage(block_udl, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 1101){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(down & up & right)"); 
       r.drawImage(block_urd, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 1100){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(down & up)"); 
       r.drawImage(block_ud, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 1011){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(up & left & right)"); 
       r.drawImage(block_url, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 1010){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(up & left)"); 
       r.drawImage(block_ul, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 1001){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(right & up)"); 
       r.drawImage(block_ur, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 1000){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(up)"); 
       r.drawImage(block_u, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 111){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(down & left & right)"); 
       r.drawImage(block_ldr, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 110){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(down & left)"); 
       r.drawImage(block_dl, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 101){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(down & right)"); 
       r.drawImage(block_rd, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 100){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(down)"); 
       r.drawImage(block_d, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 11){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(left & right)"); 
       r.drawImage(block_rl, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 10){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(left)"); 
       r.drawImage(block_l, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 1){ 
       //System.out.println(xa[a] + ", " + ya[a] + " printed from Block class" + "(right)"); 
       r.drawImage(block_r, xa[a], ya[a]); 
       a++; 
      } 
      if (blockDirection[a] == 0){ 
       r.drawImage(block, xa[a], ya[a]); 
       a++; 
      } 
      a++; 
     } 
    } 
} 

Если я пропускаю любую информацию, которую Вы должны были бы, пожалуйста, дайте мне знать, спасибо за ваше время.

ответ

0

Я понял, что было сломано, поэтому я просто опубликую, что было не так. В разделе, в котором я был уверен, было неправильно, это было только проверка того, был ли блок в последовательности ординат x или y рядом с блоком.

if (xa[a] + 20 == xa[n] && !(right)){//right 
    blockDirection[a] += 1; 
    right = true; 
    n++; 
} 

говорят ха [а] 20 для кода выше, если какой-либо блок с топором координатой 40 было на карте, было бы сказать, что есть блок над ним, это исправил, добавив

&& ya[a] == ya[n] 

но все же, по какой-то причине есть случайные отверстия, где текстура не генерируется, и есть случайные места, где она не обнаруживает блок рядом с другим, как показано here. Если кто-нибудь знает, как исправить эту ошибку, мне очень хотелось бы услышать, как я буду исправлять ее.