2016-12-05 15 views
1

Я хочу нарисовать квадрат, которому принадлежит выбранный номер судоку.Область красок ячеек Sudoku

Этот код для печати строк и столбцов:

   //Pintem la fila del nombre seleccionat 
      for (int i = 0; i < parent.getChildCount(); i++) { 
       TextView child = (TextView) parent.getChildAt(i); 
       if ((i/9)==x) { 
        //child.setBackgroundColor(Color.parseColor("#75FFEE")); 
        child.setBackground(getDrawable(R.drawable.contornfonsblau)); 
       } 
      } 

      //Pintem la columna del nombre seleccionat 
      for (int i = 0; i < parent.getChildCount(); i++) { 
       TextView child = (TextView) parent.getChildAt(i); 
       if ((i%9)==y) { 
        //child.setBackgroundColor(Color.parseColor("#75FFEE")); 
        child.setBackground(getDrawable(R.drawable.contornfonsblau)); 
       } 
      } 

Я хотел то же самое, но для квадрата.

EXAMPLE

ответ

0

Вы можете найти большой квадрат, который число принадлежит пути деления х и у координаты небольшой площади на 3, используя целочисленное деление, так как большие квадраты 3x3 небольших квадратов.

Итак, выполните те же сравнения, что и выше, но предварительно разделите обе стороны на 3. Кроме того, необходимо проверить как х и у:

for (int i = 0; i < parent.getChildCount(); i++) { 
    TextView child = (TextView) parent.getChildAt(i); 
    if ((((i/9)/3)==(x/3)) && (((i%9)/3)==(y/3))) { 
     child.setBackground(getDrawable(R.drawable.contornfonsblau)); 
    } 
} 

Конечно, (i/9)/3 может быть упрощена i/27, но спорны ли это более удобным для чтения.

Вы можете объединить все 3 теста в один цикл:

for (int i = 0; i < parent.getChildCount(); i++) { 
    TextView child = (TextView) parent.getChildAt(i); 
    if(((i/9)==x) || 
     ((i%9)==y) || 
     ((((i/9)/3)==(x/3)) && (((i%9)/3)==(y/3)))) { 
     child.setBackground(getDrawable(R.drawable.contornfonsblau)); 
    } 
}