2016-01-08 14 views
0

我正在尋找第二雙眼睛來幫助我仔細檢查,如果我這樣做是正確的,或者如果有人知道更好的方法來做到這一點。試圖得到它,所以如果一個塊是另一個塊,它會改變紋理,使其看起來更好

我想要做的就是獲得它,這樣如果一個塊被放置在另一個塊旁邊,紋理將更新以使它看起來像2個塊被連接。所有塊都在第一次產生時放置,沒有添加或移除,直到地面完成,然後移除所有塊,然後重新添加到下一層。

這段代碼我需要幫忙的是,它檢查周圍的所有塊,爲該塊保存一個4位數的整數,然後檢查該整數並決定生成哪個紋理。

如果整數是1000,那麼它上面有一個塊,如果它是100,那麼在它下面有一個塊,如果它是10,則左邊有一個塊,如果右邊有一個塊,則爲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並[a],XA [A],亞並[a]

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

說XA [A]爲20,用於上面的代碼,如果40與斧任何塊座標是在地圖上,它會說有其上方的塊,固定這通過添加

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

但是,由於某些原因,有沒有紋理產生的隨機孔,並且有隨機的地方它不會檢測到另一個塊如here所示。如果有人知道如何解決這個錯誤,我非常想聽聽我會如何解決這個問題。

相關問題