2015-06-30 74 views
0

我有這樣的代碼來創建一個網格,以填補電網的盒子,當鼠標就可以了:如何網格的每個盒子分配一個ID

int cols = 10, rows = 10; 
boolean[][] states = new boolean[cols][rows]; 
int videoScale = 50; 

void setup(){ 
    size(500,500); 

} 
void draw(){ 
    // Begin loop for columns 
    for (int i = 0; i < cols; i++) { 
    // Begin loop for rows 
    for (int j = 0; j < rows; j++) { 

     // Scaling up to draw a rectangle at (x,y) 
     int x = i*videoScale; 
     int y = j*videoScale; 

     fill(255); 
     stroke(0); 
     //check if coordinates are within a box (these are mouse x,y but could be fiducial x,y) 
     //simply look for bounds (left,right,top,bottom) 
     if((mouseX >= x && mouseX <= x + videoScale) && //check horzontal 
      (mouseY >= y && mouseY <= y + videoScale)){ 
     //coordinates are within a box, do something about it 
     fill(0); 
     stroke(255); 
     //you can keep track of the boxes states (contains x,y or not) 
     states[i][j] = true; 

     if(mousePressed) println(i+"/"+j); 

     }else{ 

     states[i][j] = false; 

     } 


     rect(x,y,videoScale,videoScale); 
    } 
    } 
} 

我想分配給每個盒子像A2,B7等iD,然後在控制檯上打印鼠標所在盒子的iD。

有人可以幫我做這個嗎?我不知道如何定義一個精確的區域,並給它一個ID

+0

請只問一個具體quesiton。哪部分不工作?它在做什麼是不正確的?你能指望什麼?你有什麼嘗試?調試時發生了什麼?你有沒有嘗試記錄日誌?等等。 – Kon

+0

(對不起,Python不是Java)的一些變體:'chr(ord('A')+(num%26)'爲0到25.要得到第二個字母,你可以做'num // 26'(整數devision),然後做一個類似的轉換爲一個字母 –

+0

@Kon我的文章中的代碼工作,但沒有附加到每個框的ID我在谷歌上找不到任何地方如何分配iD到一個區域的窗戶 –

回答

1

將整數轉換爲使用ASCII的字符(表格在這裏:http://www.asciitable.com/)。

String[][] coordinates = new String[cols][rows]; 

for (int i = 0; i < cols; i++) { 
    for (int j = 0; j < rows; j++) { 

coordinates[i][j] = String.valueOf((char)(i+65)) + String.valueOf(j).toUpperCase(); 

    } 
} 

當鼠標滑過:

System.out.println(coordinates[i][j]); 
0

您已經在ij有鼠標的框座標。

String id = Character.toString((char)('A' + i)) + (1 + j); 

你也可以使用一個數組查找的ID的第一部分:只要使用類似這些轉換到一個ID。

相關問題