Загрузка данных


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