Тема: Пошук "сусідів" клітинки
Хай. От є матриця 10 на 10. Якісь клітинки можуть бути білими, а якісь червоними.
При натисканні на клітинку має з'явитись віконце з кількістю її сусідів.
Проблем в том, що коли в клітинки 3 сусіда, воно чомусь каже, що їх лише 2. Хоча для інших клітинок все вірно працює.
Ось код пошуку сусідів
private void method(int i, int j)
{
int count = 0;
if (i - 1 > 0 && j - 1 > 0 &&
dataGridView1.Rows[i - 1].Cells[j - 1].Style.BackColor == Color.Red)
{
count++;
}
if (i - 1 > 0 &&
dataGridView1.Rows[i - 1].Cells[j].Style.BackColor == Color.Red)
{
count++;
}
if (j - 1 > 0 &&
dataGridView1.Rows[i].Cells[j - 1].Style.BackColor == Color.Red)
{
count++;
}
if (i + 1 < dataGridView1.RowCount && j + 1 < dataGridView1.ColumnCount &&
dataGridView1.Rows[i + 1].Cells[j + 1].Style.BackColor == Color.Red)
{
count++;
}
if (i + 1 < dataGridView1.RowCount &&
dataGridView1.Rows[i + 1].Cells[j].Style.BackColor == Color.Red)
{
count++;
}
if (j + 1 < dataGridView1.ColumnCount &&
dataGridView1.Rows[i].Cells[j + 1].Style.BackColor == Color.Red)
{
count++;
}
if (i - 1 > 0 && j + 1 < dataGridView1.ColumnCount &&
dataGridView1.Rows[i - 1].Cells[j + 1].Style.BackColor == Color.Red)
{
count++;
}
if (i + 1 < dataGridView1.RowCount && j - 1 > 0 &&
dataGridView1.Rows[i + 1].Cells[j - 1].Style.BackColor == Color.Red)
{
count++;
}
MessageBox.Show(count.ToString());
}
Сусіди рахуються по прямим та по діагоналі, тобто максимальна кількість сусідів == 8
Екзешку прикріпив. Тисніть Random аби заповнити поле червоними полями, а потім поклікайте на поля і перевірте, чи показується вірна кількість сусідів.