Загрузка данных
Private Sub CommandButton1_Click()
Dim i As Integer, k As Integer
' --- 1. Очистка и настройка доски (как у вас) ---
' Очищаем ячейки от старых фигур
Range("A1:H8").ClearContents
For i = 1 To 8
Cells(1, i).ColumnWidth = 5
Cells(i, 1).RowHeight = 31
Next i
' Закрашиваем клетки (шахматный порядок)
For i = 1 To 8
For k = 1 To 8
If (i + k) Mod 2 = 0 Then
Cells(i, k).Interior.ColorIndex = 36 ' Светлый
Else
Cells(i, k).Interior.ColorIndex = 37 ' Темный
End If
Next k
Next i
' --- 2. Расстановка фигур (Допиcано) ---
' Обозначения: Кр - Король, Ф - Ферзь, Л - Ладья, С - Слон, К - Конь, П - Пешка
' Черные фигуры (Строка 1 и 2)
Cells(1, 1).Value = "Л"; Cells(1, 2).Value = "К"; Cells(1, 3).Value = "С"
Cells(1, 4).Value = "Ф"; Cells(1, 5).Value = "Кр"; Cells(1, 6).Value = "С"
Cells(1, 7).Value = "К"; Cells(1, 8).Value = "Л"
For i = 1 To 8
Cells(2, i).Value = "П" ' Черные пешки
Next i
' Белые фигуры (Строка 7 и 8)
For i = 1 To 8
Cells(7, i).Value = "П" ' Белые пешки
Next i
Cells(8, 1).Value = "Л"; Cells(8, 2).Value = "К"; Cells(8, 3).Value = "С"
Cells(8, 4).Value = "Ф"; Cells(8, 5).Value = "Кр"; Cells(8, 6).Value = "С"
Cells(8, 7).Value = "К"; Cells(8, 8).Value = "Л"
' Делаем текст по центру
Range("A1:H8").HorizontalAlignment = xlCenter
Range("A1:H8").VerticalAlignment = xlCenter
' --- 3. Логика проверки Ладьи (Допиcано и исправлено) ---
' Предполагаем, что координаты вводятся в K1, L1 (для белой ладьи) и K2, L2 (для черного короля)
' Но на скриншоте вы берете их из ячеек 11 и 12 столбца.
Dim kr_x As Integer, kr_y As Integer
Dim l_x As Integer, l_y As Integer
Dim pathClear As Boolean
Dim msg As String
' Читаем координаты
kr_x = Cells(1, 11).Value ' Строка короля
kr_y = Cells(1, 12).Value ' Столбец короля
l_x = Cells(2, 11).Value ' Строка ладьи
l_y = Cells(2, 12).Value ' Столбец ладьи
' Проверка на пустые значения (защита от ошибок)
If kr_x = 0 Or kr_y = 0 Or l_x = 0 Or l_y = 0 Then
Cells(2, 13).Value = "Введите координаты в K1:L2"
Exit Sub
End If
' Проверяем, бьет ли ладья (по горизонтали или вертикали)
If (kr_x = l_x) Or (kr_y = l_y) Then
pathClear = True ' Изначально считаем, что путь свободен
' Проверка препятствий по вертикали (если столбцы совпадают)
If kr_y = l_y Then
Dim minRow As Integer, maxRow As Integer
minRow = Application.WorksheetFunction.Min(kr_x, l_x) + 1
maxRow = Application.WorksheetFunction.Max(kr_x, l_x) - 1
For i = minRow To maxRow
If Cells(i, kr_y).Value <> "" Then
pathClear = False ' На пути есть фигура
Exit For
End If
Next i
End If
' Проверка препятствий по горизонтали (если строки совпадают)
If kr_x = l_x Then
Dim minCol As Integer, maxCol As Integer
minCol = Application.WorksheetFunction.Min(kr_y, l_y) + 1
maxCol = Application.WorksheetFunction.Max(kr_y, l_y) - 1
For i = minCol To maxCol
If Cells(kr_x, i).Value <> "" Then
pathClear = False ' На пути есть фигура
Exit For
End If
Next i
End If
' Вывод результата
If pathClear Then
Cells(2, 13).Value = "Ладья бьет короля"
Else
Cells(2, 13).Value = "Ладья НЕ бьет (мешают фигуры)"
End If
Else
Cells(2, 13).Value = "Ладья НЕ бьет короля"
End If
End Sub