Разработка игры «Крестики-нолики» с ИИ: Сравнительный анализ и реализация в Mathcad и VBA

Игра «Крестики-нолики», несмотря на свою кажущуюся простоту, является классическим примером решаемой детерминированной игры, что делает её идеальным полигоном для изучения основ алгоритмизации и искусственного интеллекта. По статистике, из 255 168 возможных игровых последовательностей на поле 3×3, почти 18% заканчиваются ничьей при идеальной игре обоих противников. Это подчеркивает не только математическую предсказуемость игры, но и актуальность разработки компьютерного оппонента, способного демонстрировать «интеллектуальное» поведение, ведь задача ИИ — либо выиграть, либо свести партию вничью.

В контексте академического образования, разработка логических игр с элементами искусственного интеллекта представляет собой ценный практический опыт для студентов IT и инженерных специальностей. Она позволяет не только закрепить теоретические знания в области программирования и алгоритмизации, но и развить навыки проектирования пользовательских интерфейсов и тестирования программного обеспечения, что в конечном итоге повышает их квалификацию как будущих специалистов.

Цель данной работы — разработка и описание процесса создания игры «Крестики-нолики» с возможностью игры против компьютера. В рамках исследования будут рассмотрены две различные среды разработки: Mathcad и VBA (Visual Basic for Applications). Такой подход позволит не только продемонстрировать универсальность алгоритмических решений, но и провести сравнительный анализ специфики каждой среды, выявить их преимущества и недостатки для реализации подобных проектов. В ходе работы будут подробно освещены теоретические основы игры, алгоритмы принятия решений компьютерным противником (в частности, алгоритм Минимакс), аспекты проектирования пользовательского интерфейса и методики тестирования программы. Структура исследования направлена на максимальную детализацию каждого этапа разработки, обеспечивая академическую глубину и практическую ценность материала.

Теоретические основы и базовые понятия

Любой проект, будь то инженерное сооружение или программный продукт, начинается с определения его фундаментальных составляющих. В нашем случае это ключевые термины и концепции, которые станут краеугольным камнем для понимания всего процесса разработки игры «Крестики-нолики» в выбранных средах, позволяя сформировать единое терминологическое поле.

Определение игры «Крестики-нолики» и её математические свойства

«Крестики-нолики» (Tic-tac-toe) — это классическая логическая игра для двух игроков, один из которых играет «крестиками» (X), а другой — «ноликами» (O). Игроки поочередно ставят свои символы в свободные клетки поля 3×3. Цель игры — первым выстроить три своих символа в ряд: по горизонтали, вертикали или диагонали.

С математической точки зрения, «Крестики-нолики» является решаемой игрой. Это означает, что при идеальной игре обоих противников результат всегда предсказуем — партия завершается ничьей. Победа одного из игроков возможна только в случае ошибки его оппонента. Общее количество возможных уникальных игровых ситуаций (последовательностей ходов) на поле 3×3 составляет 255 168. Анализ этих комбинаций показывает следующее распределение исходов:

  • Победа первого игрока (крестики): 131 184 комбинации (51,41%)
  • Победа второго игрока (нолики): 77 904 комбинации (30,53%)
  • Ничья: 46 080 комбинаций (18,06%)

Эти цифры наглядно демонстрируют, что при оптимальной стратегии игра склоняется к ничьей, однако при наличии даже минимальных просчётов у противника, шанс на победу значительно возрастает, что делает стратегическое мышление игрока и эффективность ИИ критически важными аспектами. Именно поэтому разработка эффективного алгоритма для компьютерного оппонента является центральной задачей.

Ключевые термины в разработке ПО

Прежде чем углубляться в детали реализации, необходимо четко определить основные понятия, которые будут использоваться на протяжении всего исследования:

  • Алгоритм игры: Это формализованная последовательность правил и шагов, описывающая логику игрового процесса. В контексте компьютерного противника, алгоритм игры определяет, как программа анализирует текущее состояние игрового поля, принимает решения о следующем ходе и реагирует на действия пользователя. Он включает в себя правила определения победы, ничьей и стратегию выбора оптимального хода, что позволяет компьютеру имитировать интеллектуальное поведение.
  • Пользовательский интерфейс (UI): Сокращение от User Interface. Это совокупность графических, текстовых, звуковых и тактильных элементов, через которые пользователь взаимодействует с программой. Для игры «Крестики-нолики» UI включает визуализацию игрового поля (сетка 3×3), отображение символов (крестиков и ноликов), кнопки управления (например, «Новая игра») и сообщения о результате партии. Эффективный UI должен быть интуитивно понятным и обеспечивать комфортное взаимодействие, что напрямую влияет на удовлетворённость пользователя.
  • VBA (Visual Basic for Applications): Это событийный язык программирования, разработанный компанией Microsoft. Он глубоко интегрирован в приложения Microsoft Office (такие как Excel, Word, Access) и предназначен для автоматизации задач, создания пользовательских функций и расширения стандартного функционала этих приложений. VBA позволяет разработчикам создавать полноценные пользовательские интерфейсы с помощью форм (UserForms) и элементов управления, реагирующих на действия пользователя, что особенно удобно для прототипирования бизнес-приложений.
  • Mathcad: Это мощное программное обеспечение для инженерных вычислений, разработанное компанией PTC. Mathcad является отраслевым стандартом, предоставляя инженерам и ученым интуитивно понятную среду для выполнения, документирования и совместного использования сложных математических расчетов. Его уникальность заключается в возможности отображать вычисления, текст, данные и изображения в одном документе в естественном математическом формате, что значительно упрощает анализ и верификацию результатов. Современные версии Mathcad Prime также поддерживают создание интерактивных элементов с использованием внешних скриптов, расширяя его применимость за пределы чистых вычислений, например, в области интерактивных моделей и симуляций.

Понимание этих базовых терминов является отправной точкой для дальнейшего углубления в методологию разработки игры «Крестики-нолики» в различных программных средах.

Алгоритмизация логики игры с компьютерным противником

Создание компьютерного противника, способного эффективно играть в «Крестики-нолики», требует тщательной алгоритмизации. Речь идет не просто о случайных ходах, а о продуманной стратегии, которая позволит машине либо выиграть, либо свести партию вничью при идеальной игре соперника, что делает алгоритм центральным элементом «интеллекта» игры.

Обзор базовых алгоритмов и эвристик

В отличие от сложных игр, где ИИ может использовать нейронные сети или машинное обучение, для «Крестиков-ноликов» достаточно более простых, но эффективных алгоритмов и эвристических стратегий. Эвристика — это практический метод, который, хоть и не гарантирует оптимального решения, но является достаточно хорошим для конкретной задачи.

Основные эвристические стратегии для игры «Крестики-нолики» включают:

  1. Занятие центральной клетки: Центральная клетка (позиция (1,1) в массиве 3×3) является наиболее стратегически важной, так как участвует в четырех из восьми выигрышных комбинаций (одна горизонталь, одна вертикаль, две диагонали). Поэтому, если центр свободен, компьютер должен стремиться занять его в первую очередь, что максимально увеличивает его шансы на победу.
  2. Угловые ходы: Угловые клетки также имеют большое значение, так как каждая из них участвует в трех выигрышных комбинациях. Занятие углов может создать мощные угрозы или предотвратить их, обеспечивая гибкость в стратегии.
  3. Создание «вилок»: «Вилка» — это ход, который создает две или более потенциально выигрышные комбинации одновременно, что позволяет игроку обеспечить победу на следующем ходу, независимо от ответа противника. Например, если игрок «X» занимает две соседние клетки, а затем ставит третий «X» таким образом, что он завершает две линии одновременно, это «вилка», и противник не сможет заблокировать обе угрозы одним ходом.
  4. Блокировка выигрышных комбинаций противника: Компьютер должен постоянно анализировать игровое поле и, если противник близок к созданию выигрышной линии (например, имеет два символа подряд), немедленно блокировать эту линию, занимая недостающую клетку, тем самым предотвращая проигрыш.
  5. Блокировка «вилок» противника: Если противник сам создает «вилку», компьютер должен попытаться занять одну из «угрожающих» клеток, чтобы предотвратить неминуемый проигрыш, минимизируя ущерб.

Эти эвристики могут быть объединены в иерархическую систему, где каждая следующая стратегия применяется, если предыдущая не дала результата или не применима. Однако для создания действительно непобедимого противника, который не допускает ошибок, требуется более строгий алгоритм, способный предвидеть все возможные сценарии.

Детальное описание алгоритма Минимакс

Одним из наиболее эффективных и общепринятых алгоритмов для реализации логики игры с компьютерным противником в таких играх, как «Крестики-нолики», является алгоритм Минимакс (Minimax). Его суть заключается в поочередном переборе всех возможных ходов обоих игроков до определенной глубины (или до завершения игры), при этом предполагается, что каждый игрок всегда будет выбирать ход, который максимизирует его выгоду и минимизирует выгоду противника.

Алгоритм Минимакс является рекурсивным методом и работает следующим образом:

  1. Построение дерева игры: От текущего состояния игрового поля алгоритм генерирует все возможные следующие ходы для текущего игрока. Затем для каждого из этих ходов генерируются все возможные ответы противника, и так далее, до тех пор, пока игра не закончится (победа, проигрыш или ничья) или не будет достигнута заданная глубина поиска, что обеспечивает исчерпывающий анализ.
  2. Оценка конечных состояний: Как только игра достигает конечного состояния (или заданной глубины), алгоритм присваивает этому состоянию количественную оценку:
    • +10 очков за победу компьютерного игрока.
    • -10 очков за проигрыш компьютерного игрока (победа человека).
    • 0 очков за ничью.

    Эти оценки служат для определения «ценности» каждой ветви дерева.

  3. Обратный проход (Backtracking): Алгоритм затем «поднимается» по дереву игры от конечных состояний к текущему, используя принцип Минимакс:
    • Если очередь хода принадлежит максимизирующему игроку (т.е. компьютеру), он выбирает ход, который приводит к максимальному количеству очков из всех возможных следующих состояний.
    • Если очередь хода принадлежит минимизирующему игроку (т.е. человеку), он выбирает ход, который приводит к минимальному количеству очков (так как человек стремится минимизировать выгоду компьютера).

    Этот процесс гарантирует, что компьютер всегда выбирает наилучший возможный ход.

Таким образом, на каждом шаге алгоритм предполагает, что оба игрока действуют оптимально, пытаясь максимизировать свой выигрыш и минимизировать выигрыш оппонента. В результате, алгоритм Минимакс позволяет компьютеру выбрать лучший ход, который либо приведет к его победе, либо, если победа невозможна, к ничьей, делая его непобедимым противником.

Применение дерева игровых состояний

Дерево игровых состояний — это концептуальная структура, представляющая все возможные последовательности ходов и состояний игрового поля в игре. Для «Крестиков-ноликов» на поле 3×3 это дерево достаточно компактно: как уже упоминалось, оно включает 255 168 узлов (возможных игровых ситуаций).

Применение дерева игровых состояний критически важно для алгоритма Минимакс:

  • Полный перебор: Для такой игры, как «Крестики-нолики», дерево может быть полностью построено и проанализировано. Это означает, что алгоритм Минимакс может точно определить оптимальный ход на каждом этапе, не прибегая к эвристикам, кроме оценки конечных состояний, что обеспечивает его непогрешимость.
  • Определение тактик: Анализ этого дерева позволяет выявить все выигрышные стратегии для первого игрока, выигрышные стратегии для второго игрока (в случае ошибки первого) и ситуации, приводящие к ничьей. Например, известно, что первый игрок (крестики) может гарантировать ничью, если начнет с центральной клетки.
  • Оптимизация поиска: Хотя 255 168 узлов кажется большим числом, существуют методы оптимизации поиска в дереве Минимакс, такие как альфа-бета отсечения. Этот метод позволяет сократить количество узлов, которые необходимо оценить, отсекая ветви дерева, которые заведомо не приведут к лучшему результату. Это значительно ускоряет процесс принятия решений, особенно если глубина поиска велика, что делает алгоритм более практичным.

Построение и анализ дерева игровых состояний лежит в основе способности компьютерного противника играть на экспертном уровне, обеспечивая, что машина всегда делает оптимальный ход. Что из этого следует? Такой подход гарантирует, что ИИ не просто «умеет играть», но и способен предвидеть последствия каждого хода, предотвращая проигрыш и стремясь к победе или ничьей.

Разработка игры в среде VBA (Microsoft Office Excel)

VBA, интегрированный в приложения Microsoft Office, предлагает мощные возможности для создания интерактивных приложений, включая игры. Его событийная модель и развитые средства для работы с пользовательскими формами делают его удобным инструментом для реализации «Крестиков-ноликов» непосредственно в Excel, что позволяет быстро прототипировать и развёртывать решения.

Проектирование пользовательского интерфейса в VBA

Пользовательский интерфейс игры «Крестики-нолики» в VBA традиционно создается с помощью UserForm (пользовательской формы) в интегрированной среде разработки Visual Basic Editor (VBE). VBE открывается в Excel с помощью комбинации клавиш Alt + F11.

Шаги по проектированию UI:

  1. Создание UserForm: В VBE выберите Insert -> UserForm. Это создаст новую пустую форму, которая станет основным окном вашей игры.
  2. Добавление элементов управления: Панель Toolbox (если она не видна, активируйте её через View -> Toolbox) содержит различные элементы управления. Для игрового поля 3×3 мы можем использовать девять элементов Label (Надпись), которые будут представлять собой отдельные клетки.
    • Разместите 9 Label элементов на UserForm в виде сетки 3×3.
    • Для каждого Label установите свойство Caption пустым (по умолчанию), а свойство BorderStyle установите в fmBorderStyleSingle. Это создаст видимые границы для каждой клетки, имитируя игровое поле.
    • Переименуйте Label элементы для удобства, например, lblCell00, lblCell01, …, lblCell22 (где первый индекс — строка, второй — столбец).
    • Добавьте также кнопки для управления игрой, например, cmdNewGame (Новая игра) и cmdExit (Выход), используя элемент CommandButton.
    • Для отображения текущего хода или сообщений о результате игры можно использовать ещё один Label или TextBox.

Пример структуры элементов на форме:

lblCell00 lblCell01 lblCell02
lblCell10 lblCell11 lblCell12
lblCell20 lblCell21 lblCell22

Кнопка: Новая игра
Кнопка: Выход

Реализация игровой логики и обработка событий

Ядром игровой логики является представление игрового поля и реакция на действия пользователя.

  1. Представление игрового поля: Игровое поле 3×3 удобно представлять с использованием двумерного массива в VBA. Например, Dim field(2, 2) As Integer может хранить состояния клеток.
    • 0 может обозначать пустую клетку.
    • 1 — крестик (X).
    • 2 — нолик (O).

    Использование числовых значений вместо символов упрощает логические операции и снижает вероятность ошибок.

  2. Обработка хода игрока: Ход игрока реализуется через обработку событий. Для Label элементов, представляющих клетки, можно использовать событие DblClick (двойной щелчок) или Click.
    • При двойном щелчке по свободной клетке, программа должна:
      • Проверить, свободна ли клетка.
      • Записать символ текущего игрока в соответствующий элемент массива field.
      • Обновить Caption соответствующего Label на форме (например, «X»).
      • Проверить, не привел ли этот ход к победе или ничьей.
      • Передать ход компьютеру.
  3. Проверка выигрышных комбинаций и ничьей: После каждого хода необходимо проверять состояние игрового поля. В игре «Крестики-нолики» на поле 3×3 существует 8 возможных выигрышных комбинаций:
    • 3 по горизонтали (0,0-0,2; 1,0-1,2; 2,0-2,2)
    • 3 по вертикали (0,0-2,0; 0,1-2,1; 0,2-2,2)
    • 2 по диагонали (0,0-2,2; 0,2-2,0)

    Функция проверки должна перебирать эти комбинации и определять, заняты ли они одним и тем же символом. Если победитель найден, игра останавливается, и выводится сообщение. Если все клетки заняты и победитель не найден, объявляется ничья. Сообщения пользователю, например, о результате игры или о некорректном ходе, отображаются с использованием команды MsgBox. Какой важный нюанс здесь упускается? Важно не только проверить факт победы, но и корректно обработать смену игрока и предотвратить дальнейшие ходы после завершения партии.

Интеграция алгоритма Минимакс в VBA

Интеграция алгоритма Минимакс в VBA требует создания рекурсивной функции, которая будет оценивать ходы.

Примерная структура функции Минимакс (псевдокод на VBA):

' Глобальные переменные или передаваемые параметры:
'   board(2,2) As Integer  ' Игровое поле
'   player As Integer      ' Текущий игрок (1 для X, 2 для O)

Function Minimax(ByRef board() As Integer, ByVal player As Integer) As Integer
    ' 1. Проверить терминальные состояния (победа/проигрыш/ничья)
    Dim score As Integer
    score = EvaluateBoard(board) ' Функция для оценки текущего состояния поля
    If score <> 0 Then
        Minimax = score
        Exit Function
    End If

    If IsBoardFull(board) Then ' Проверка на ничью (поле заполнено)
        Minimax = 0
        Exit Function
    End If

    ' 2. Рекурсивный перебор ходов
    If player = 1 Then ' Максимизирующий игрок (компьютер - X)
        Dim bestScore As Integer
        bestScore = -1000 ' Инициализация очень низким значением

        For row = 0 To 2
            For col = 0 To 2
                If board(row, col) = 0 Then ' Если клетка свободна
                    board(row, col) = player ' Сделать ход
                    bestScore = Application.Max(bestScore, Minimax(board, 2)) ' Рекурсивный вызов для противника
                    board(row, col) = 0      ' Отменить ход (откат)
                End If
            Next col
            Next row
        Minimax = bestScore

    Else ' Минимизирующий игрок (человек - O)
        Dim bestScore As Integer
        bestScore = 1000 ' Инициализация очень высоким значением

        For row = 0 To 2
            For col = 0 To 2
                If board(row, col) = 0 Then
                    board(row, col) = player
                    bestScore = Application.Min(bestScore, Minimax(board, 1))
                    board(row, col) = 0
                End If
            Next col
        Next row
        Minimax = bestScore
    End If
End Function

' Функция для выбора лучшего хода компьютера
Function FindBestMove(ByRef board() As Integer, ByVal player As Integer) As String
    Dim bestScore As Integer
    Dim bestMoveRow As Integer, bestMoveCol As Integer
    bestScore = -1000 ' Для максимизирующего игрока (компьютер)

    For row = 0 To 2
        For col = 0 To 2
            If board(row, col) = 0 Then
                board(row, col) = player
                Dim currentScore As Integer
                currentScore = Minimax(board, GetOpponent(player)) ' Оценить этот ход
                board(row, col) = 0 ' Отменить ход

                If currentScore > bestScore Then
                    bestScore = currentScore
                    bestMoveRow = row
                    bestMoveCol = col
                End If
            End If
        Next col
    Next row
    FindBestMove = CStr(bestMoveRow) & "," & CStr(bestMoveCol) ' Возвращаем координаты лучшего хода
End Function

Функции EvaluateBoard (оценка состояния поля), IsBoardFull (проверка на заполнение поля) и GetOpponent (определение оппонента) должны быть реализованы отдельно. Что из этого следует? Правильная реализация этих вспомогательных функций критически важна для корректной работы всего алгоритма Минимакс и обеспечения «интеллектуального» поведения компьютерного противника.

Примеры кода на VBA

Представим основные фрагменты VBA-кода, иллюстрирующие вышеописанные концепции:

1. Инициализация игрового поля и UserForm:

' Модуль UserForm1 (или вашей формы)

Dim gameBoard(2, 2) As Integer ' Двумерный массив для игрового поля
Dim currentPlayer As Integer   ' 1 = X, 2 = O (компьютер)

Private Sub UserForm_Initialize()
    Call ResetGame
End Sub

Private Sub ResetGame()
    Dim i As Integer, j As Integer
    For i = 0 To 2
        For j = 0 To 2
            gameBoard(i, j) = 0 ' Очистить поле
            Me.Controls("lblCell" & i & j).Caption = "" ' Очистить надписи на форме
        Next j
    Next i
    currentPlayer = 1 ' Первый ход всегда у игрока-человека (X)
    Me.lblMessage.Caption = "Ваш ход (X)" ' Например, есть lblMessage на форме
End Sub

Private Sub cmdNewGame_Click()
    Call ResetGame
End Sub

Private Sub cmdExit_Click()
    Unload Me
End Sub

2. Обработка хода игрока (двойной щелчок по клетке):

' Для каждой клетки (например, lblCell00)
Private Sub lblCell00_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call MakeMove(0, 0)
End Sub
' ... и так для всех 9 клеток, меняя индексы

Private Sub MakeMove(ByVal row As Integer, ByVal col As Integer)
    If gameBoard(row, col) = 0 Then ' Если клетка свободна
        gameBoard(row, col) = currentPlayer ' Записать ход
        If currentPlayer = 1 Then
            Me.Controls("lblCell" & row & col).Caption = "X"
        Else
            Me.Controls("lblCell" & row & col).Caption = "O"
        End If

        If CheckWin() Then
            MsgBox IIf(currentPlayer = 1, "Крестики победили!", "Нолики победили!")
            Call ResetGame
            Exit Sub
        ElseIf CheckDraw() Then
            MsgBox "Ничья!"
            Call ResetGame
            Exit Sub
        End If

        ' Передать ход
        currentPlayer = IIf(currentPlayer = 1, 2, 1)
        If currentPlayer = 1 Then
            Me.lblMessage.Caption = "Ваш ход (X)"
        Else
            Me.lblMessage.Caption = "Ход компьютера (O)"
            Call ComputerMove ' Вызов функции хода компьютера
        End If
    Else
        MsgBox "Эта клетка уже занята! Выберите другую.", vbExclamation
    End If
End Sub

3. Функция проверки победы:

' Модуль UserForm1
Function CheckWin() As Boolean
    ' Проверка горизонталей
    For i = 0 To 2
        If gameBoard(i, 0) <> 0 And gameBoard(i, 0) = gameBoard(i, 1) And gameBoard(i, 1) = gameBoard(i, 2) Then
            CheckWin = True: Exit Function
        End If
    Next i

    ' Проверка вертикалей
    For j = 0 To 2
        If gameBoard(0, j) <> 0 And gameBoard(0, j) = gameBoard(1, j) And gameBoard(1, j) = gameBoard(2, j) Then
            CheckWin = True: Exit Function
        End If
    Next j

    ' Проверка диагоналей
    If gameBoard(0, 0) <> 0 And gameBoard(0, 0) = gameBoard(1, 1) And gameBoard(1, 1) = gameBoard(2, 2) Then
        CheckWin = True: Exit Function
    End If
    If gameBoard(0, 2) <> 0 And gameBoard(0, 2) = gameBoard(1, 1) And gameBoard(1, 1) = gameBoard(2, 0) Then
        CheckWin = True: Exit Function
    End If

    CheckWin = False
End Function

' Функция проверки ничьей
Function CheckDraw() As Boolean
    For i = 0 To 2
        For j = 0 To 2
            If gameBoard(i, j) = 0 Then
                CheckDraw = False ' Есть свободная клетка, игра не закончена
                Exit Function
            End If
        Next j
    Next i
    CheckDraw = True ' Все клетки заняты, нет победителя
End Function

4. Функция хода компьютера (вызывающая Минимакс):

' Модуль UserForm1
Private Sub ComputerMove()
    ' Здесь будет вызов FindBestMove, которая использует Minimax
    Dim bestMoveCoords As String
    bestMoveCoords = FindBestMove(gameBoard, currentPlayer)

    Dim parts() As String
    parts = Split(bestMoveCoords, ",")
    Dim row As Integer, col As Integer
    row = CInt(parts(0))
    col = CInt(parts(1))

    ' Сделать ход компьютера
    Call MakeMove(row, col)
End Sub

Эти фрагменты кода формируют основу для реализации игры «Крестики-нолики» в VBA, демонстрируя, как интегрируются UI, игровая логика и алгоритм Минимакс, позволяя создать полностью функциональную и «интеллектуальную» игру.

Разработка интерактивных элементов игры и визуализация в Mathcad

Mathcad, хотя и является инструментом для инженерных расчетов, обладает уникальными возможностями для создания интерактивных элементов и визуализации, которые могут быть адаптированы для разработки простых логических игр, таких как «Крестики-нолики». Его сила в документировании и наглядном представлении вычислений может быть использована для визуализации игрового процесса, что особенно ценно для образовательных и исследовательских проектов.

Особенности Mathcad для разработки игр

PTC Mathcad зарекомендовал себя как стандартное программное обеспечение для выполнения, документирования и обмена инженерными вычислениями. Его ключевые особенности, которые могут быть полезны в контексте разработки игр:

  • Интуитивный интерфейс: Mathcad позволяет пользователям работать с вычислениями в естественной математической нотации, что упрощает понимание и верификацию логики, в том числе и алгоритмов игры, делая процесс разработки более прозрачным.
  • Интеграция вычислений, текста, данных и изображений: В одном документе Mathcad можно объединить код алгоритма, текстовые пояснения, числовые данные игрового поля и графические элементы. Это облегчает создание подробной проектной документации, где каждый шаг алгоритма может быть снабжен комментариями и наглядными примерами.
  • Численное и символьное решение уравнений: Хотя для «Крестиков-ноликов» это не является критичным, для более сложных игр с математическими моделями (например, физическими симуляциями) Mathcad предоставляет мощные инструменты.
  • Интеграция с Microsoft Excel: Mathcad позволяет импортировать и экспортировать данные из Excel, что может быть использовано для инициализации игровых параметров или сохранения статистики, расширяя возможности анализа.

Однако стоит признать, что Mathcad не является традиционной средой для разработки игр в том смысле, как это понимается в геймдеве. Его основной фокус — это вычисления, а не динамическое управление GUI.

Проектирование пользовательского интерфейса и интерактивности в Mathcad

Создание полноценного интерактивного пользовательского интерфейса для игры в Mathcad требует более творческого подхода по сравнению с VBA. Традиционно Mathcad предлагает следующие возможности:

  1. Встроенные элементы управления: Mathcad имеет базовые элементы управления, такие как кнопки, текстовые поля ввода, ползунки. Их можно использовать для:
    • Кнопок: Для начала новой игры, сброса поля.
    • Текстовых полей: Для отображения текущего хода, сообщений о победе/ничьей.
    • Матриц: Игровое поле 3×3 может быть визуализировано как матрица Mathcad. Пользователь может вводить свои ходы, изменяя значения в элементах матрицы. Однако это менее интуитивно, чем клик по клетке.
  2. Визуализация игрового поля через матрицы и текстовые блоки:
    • Клетки поля могут быть представлены элементами матрицы. После каждого хода компьютера или игрока, значения в матрице обновляются, и Mathcad автоматически пересчитывает связанные выражения.
    • Для более наглядной визуализации можно использовать символы «X» и «O» в текстовых блоках, динамически обновляемых в зависимости от значений матрицы, что улучшает восприятие.
  3. Расширенные элементы управления с Python-скриптами (Mathcad Prime 11+): Это ключевое инновационное направление, которое значительно расширяет возможности Mathcad для интерактивных приложений. Начиная с PTC Mathcad Prime 11.0.0.0, появилась возможность создавать расширенные элементы управления (Advanced Controls), используя Python (версии 3.7 до 3.13), а также VBScript и JScript.
    • Принцип работы: Эти скрипты могут взаимодействовать с сессиями Mathcad, отправляя данные на входы (inputs) рабочих листов и получая их с выходов (outputs). Это позволяет:
      • Создавать более сложные интерактивные компоненты, нежели стандартные кнопки.
      • Обрабатывать события, такие как клики мыши, и динамически изменять содержимое Mathcad-документа.
      • Например, с помощью Python-скрипта можно реализовать логику, которая при нажатии на кнопку в графическом элементе (созданном средствами Python) будет изменять соответствующую ячейку матрицы в Mathcad, представляющую игровое поле.
    • Преимущества для UI: Это открывает путь к созданию полноценного графического интерфейса игры «Крестики-нолики» непосредственно в Mathcad. Вместо того чтобы просто изменять числа в матрице, можно нарисовать интерактивные кнопки-клетки, которые будут реагировать на клики, отображать «X» или «O» и запускать игровую логику, делая процесс более интуитивным для пользователя.
    • Пример: Python-скрипт может иметь функцию, которая при вызове (например, из кнопки на рабочем листе Mathcad) принимает координаты хода, обновляет матрицу gameBoard в Mathcad и затем вызывает функцию Minimax.

Интеграция алгоритма Минимакс в Mathcad

Реализация алгоритма Минимакс в Mathcad может быть выполнена несколькими способами, но наиболее эффективным и современным подходом является использование Python-скриптов для обработки сложной логики.

  1. Чистый Mathcad (для простых алгоритмов): Теоретически, алгоритм Минимакс может быть реализован с использованием встроенных функций Mathcad для программирования (например, if, for, рекурсивные функции). Однако, из-за специфики Mathcad (ориентированность на декларативные вычисления, а не на императивное программирование), такой подход может быть громоздким и менее читабельным по сравнению с VBA или Python. Тем не менее, для оценки позиций и базового перебора это возможно.
  2. Использование Python-скриптов (рекомендуется для ИИ): Этот подход наиболее перспективен.
    • Архитектура: Основная логика алгоритма Минимакс (построение дерева, оценка, рекурсивный поиск) может быть полностью написана на Python.
    • Взаимодействие: Mathcad-документ будет служить оболочкой, которая:
      • Отображает текущее состояние игрового поля (например, как матрицу или через Advanced Controls).
      • Принимает ход игрока (например, через кнопку, связанную с Python-скриптом).
      • Передает текущее состояние поля (матрицу) в Python-скрипт.
      • Python-скрипт выполняет алгоритм Минимакс, определяет лучший ход компьютера.
      • Python-скрипт возвращает координаты лучшего хода обратно в Mathcad.
      • Mathcad обновляет игровое поле и визуализацию.
    • Преимущества: Это позволяет использовать сильные стороны каждого инструмента: Python для сложной алгоритмической логики и Mathcad для наглядного представления вычислений и документации, что делает разработку более эффективной.
    • Пример: Python-скрипт может содержать функцию calculate_minimax_move(board_state), которая получает матрицу board_state из Mathcad, выполняет Минимакс и возвращает координаты (строка, столбец) для следующего хода.

Примеры использования Mathcad для визуализации

Mathcad Prime предлагает мощные средства для 2D-графиков, которые могут быть использованы для визуализации игровых данных и стратегической аналитики.

  1. Визуализация игрового поля: Хотя само поле может быть представлено матрицей, 2D-графики могут быть использованы для:
    • Тепловых карт: После анализа дерева игры или симуляции множества партий, можно построить «тепловую карту» поля, показывающую, какие клетки статистически чаще приводят к победе или ничьей при определенных условиях. Например, центральная клетка всегда будет «самой горячей», что подтверждает её стратегическую важность.
    • Статистика ходов: Построение гистограмм, показывающих, какие ходы делались игроками (или компьютером) в различных ситуациях.
    • Прогресс игры: Линейный график, показывающий «оценку» позиции по ходу игры, где алгоритм Минимакс может оценить «выгодность» текущей позиции для компьютера. Это может быть полезно для отладки и анализа поведения ИИ.

Пример, как Mathcad может визуализировать данные:

  • Предположим, у нас есть матрица MoveValue3×3, где каждое значение представляет «ценность» хода в данной клетке для компьютера. Mathcad может построить 2D-график, где цвет каждой клетки будет соответствовать её значению, создавая визуальную тепловую карту, что наглядно демонстрирует стратегическую значимость позиций.
  • С помощью Python-скрипта в Advanced Control можно создать кнопку, которая при нажатии будет генерировать случайную матрицу (имитирующую, например, начальное заполнение поля) и затем визуализировать её в 2D-графике Mathcad, демонстрируя возможности интерактивного управления.

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

Отладка и тестирование разработанной программы

Отладка и тестирование — это неотъемлемые и критически важные этапы в жизненном цикле разработки программного обеспечения. Они обеспечивают корректную работу, стабильность и соответствие программы заявленным требованиям. Для игры «Крестики-нолики» с компьютерным противником эти процессы имеют особое значение, поскольку необходимо убедиться не только в отсутствии ошибок, но и в «интеллектуальности» искусственного интеллекта, что напрямую влияет на игровой опыт пользователя.

Инструменты отладки в VBA

Visual Basic Editor (VBE) предоставляет богатый набор инструментов для отладки VBA-кода, что делает процесс выявления и исправления ошибок относительно простым:

  1. Панель инструментов «Debug»: Содержит кнопки для основных операций отладки:
    • Run (F5): Запуск выполнения кода.
    • Break (Ctrl+Break): Приостановка выполнения в любой момент.
    • Reset (Shift+F5): Остановка выполнения и сброс всех переменных.
  2. Точки останова (Breakpoints): Устанавливаются на определенной строке кода (клавиша F9 или клик на левом поле VBE). Когда выполнение программы достигает точки останова, оно приостанавливается, позволяя разработчику исследовать состояние программы, что является фундаментом для пошагового анализа.
  3. Пошаговое выполнение кода:
    • Step Into (F8): Выполнение кода по одной строке, с заходом внутрь вызываемых процедур и функций. Идеально для глубокого анализа.
    • Step Over (Shift+F8): Выполнение кода по одной строке, но без захода внутрь вызываемых процедур. Удобно, когда вы уверены, что вызываемая функция работает корректно.
    • Step Out (Ctrl+Shift+F8): Выполнение оставшегося кода текущей процедуры/функции до её завершения и возврат на вызывающий уровень.
  4. Окно Immediate (Ctrl+G): Позволяет:
    • Немедленно выполнять команды VBA.
    • Выводить значения переменных (например, ?variableName).
    • Изменять значения переменных во время приостановленного выполнения.
    • Вызывать процедуры.
  5. Окно Locals: Отображает все переменные, находящиеся в текущей области видимости, и их текущие значения. Это критически важно для отслеживания состояния игрового поля (gameBoard), текущего игрока (currentPlayer) и других ключевых переменных во время выполнения алгоритма Минимакс.
  6. Окно Watches: Позволяет отслеживать значения конкретных выражений или переменных, даже если они не находятся в текущей области видимости окна Locals. Можно задать условия, при которых Watch вызовет точку останова, что обеспечивает гибкий контроль.

Использование этих инструментов позволяет пошагово проанализировать работу алгоритма Минимакс, убедиться в корректности расчетов оценок ходов и правильности выбора компьютером оптимальной стратегии, что является залогом эффективного ИИ.

Методы тестирования программы

Тестирование программного обеспечения — это комплексная процедура, направленная на выявление ошибок и подтверждение соответствия продукта требованиям. Для игры «Крестики-нолики» применяются следующие методы:

  1. Функциональное тестирование:
    • Цель: Проверить, что все заявленные функции игры работают корректно.
    • Примеры:
      • Проверка корректного отображения «X» и «O» на поле.
      • Правильная обработка кликов по клеткам.
      • Точное определение условий победы (все 8 комбинаций: горизонтали, вертикали, диагонали).
      • Корректное определение ничьей.
      • Правильная работа кнопок «Новая игра» и «Выход».
      • Корректное переключение ходов между игроком и компьютером.
  2. Стресс-тестирование:
    • Цель: Проверка стабильности программы при интенсивном или некорректном использовании.
    • Примеры: Многократное быстрое нажатие на клетки, многократный запуск и перезапуск игры. Для «Крестиков-ноликов» это менее критично, чем для многопользовательских систем, но позволяет выявить редкие ошибки, связанные с пограничными условиями.
  3. Тестирование совместимости (для VBA):
    • Цель: Проверка работы программы в различных версиях Microsoft Office (например, Excel 2016, 2019, 365) и на различных операционных системах (Windows).
    • Примеры: Убедиться, что UserForm и элементы управления отображаются корректно, а макросы работают без ошибок в разных средах.
  4. Комбинаторное тестирование:
    • Цель: Тестирование всех возможных комбинаций параметров или действий.
    • Примеры: Для «Крестиков-ноликов» это может быть тестирование всех возможных последовательностей ходов, ведущих к победе, проигрышу или ничьей. Однако, учитывая 255 168 комбинаций, такой полный перебор вручную нецелесообразен. Вместо этого используются техники, которые сокращают количество необходимых тест-кейсов, но охватывают наибольшее число проблемных комбинаций, что экономит время и ресурсы.
  5. Исследовательское тестирование (Плейтестинг):
    • Цель: Тестирование «на лету» без заранее созданных тест-кейсов, ориентированное на игровой опыт и эмоции пользователя.
    • Примеры: Несколько человек играют в игру, пытаясь найти нестандартные сценарии, неочевидные баги или недостатки в поведении ИИ. Оценка: насколько игра увлекательна, интуитивна, а компьютерный противник — сложен, что позволяет оценить игру с точки зрения конечного пользователя.

Сценарии тестирования для «Крестиков-ноликов»

Для обеспечения полноценного тестирования необходимо разработать конкретные сценарии:

  1. Сценарии победы игрока:
    • Игрок выигрывает по горизонтали (верхняя, средняя, нижняя).
    • Игрок выигрывает по вертикали (левая, средняя, правая).
    • Игрок выигрывает по диагонали (две).
    • Игрок выигрывает, делая «вилку».
    • Компьютер не блокирует очевидную выигрышную комбинацию игрока (если ИИ не идеален), что позволяет выявить слабые места алгоритма.
  2. Сценарии победы компьютера:
    • Компьютер выигрывает, делая очевидный ход.
    • Компьютер выигрывает, создавая «вилку».
    • Игрок не блокирует очевидную выигрышную комбинацию компьютера.
  3. Сценарии ничьей:
    • Все клетки заполнены, но нет победителя.
    • Игрок и компьютер играют идеально, партия заканчивается ничьей (самый важный сценарий для тестирования ИИ), что подтверждает корректность алгоритма.
  4. Сценарии некорректных действий пользователя:
    • Попытка походить на уже занятую клетку.
    • Попытка походить вне игрового поля (если GUI допускает).
    • Попытка сделать ход вне своей очереди (невозможно при правильной реализации, но стоит проверить).
  5. Тестирование «интеллекта» ИИ:
    • Начальные ходы: Проверить, всегда ли компьютер выбирает центр или угол на первом ходу, если это оптимально.
    • Блокировка: Убедиться, что компьютер всегда блокирует выигрышные линии игрока.
    • Создание угроз: Проверить, что компьютер создает свои собственные выигрышные комбинации и «вилки».
    • Реакция на «вилки» игрока: Убедиться, что компьютер способен обнаружить и блокировать «вилки», созданные игроком.
    • Различные уровни сложности (если предусмотрены): Если ИИ имеет разные уровни сложности (например, «легкий», «средний», «сложный» с усечением глубины поиска), каждый уровень должен быть протестирован отдельно на соответствие заявленному поведению.

Тщательное проведение отладки и применение разнообразных методов тестирования гарантирует, что разработанная игра «Крестики-нолики» будет не только функциональной, но и стабильной, а компьютерный противник будет демонстрировать ожидаемый уровень «интеллекта», что в конечном итоге обеспечивает высокое качество продукта. Действительно ли мы можем быть уверены, что наш ИИ «непобедим» при идеальной игре, или есть скрытые нюансы, которые могут привести к неожиданному проигрышу?

Сравнительный анализ Mathcad и VBA для разработки простых логических игр

Выбор среды разработки — это одно из ключевых решений на начальном этапе проекта. Mathcad и VBA, хотя и являются мощными инструментами, имеют совершенно разную архитектуру и предназначение, что определяет их сильные и слабые стороны применительно к разработке простых логических игр, и понимание этих различий критически важно для успешного выбора.

Преимущества и недостатки VBA

VBA, будучи языком, глубоко интегрированным в экосистему Microsoft Office, обладает рядом явных преимуществ для создания интерактивных приложений:

Преимущества VBA:

  • Глубокая интеграция с приложениями Microsoft Office: Это, пожалуй, главное преимущество. VBA позволяет создавать надстройки, макросы и полноценные приложения, которые органично работают внутри Excel, Word, Access и других программ. Это делает его идеальным для корпоративных решений или личных инструментов, где уже используется Office, обеспечивая бесшовное взаимодействие.
  • Событийно-ориентированная модель программирования: VBA прекрасно подходит для интерактивных пользовательских интерфейсов. Элементы управления (кнопки, текстовые поля, списки) легко связываются с событиями (клик, изменение значения), что позволяет быстро реагировать на действия пользователя и создавать динамичные интерфейсы.
  • Широкие возможности по работе с формами и элементами управления (GUI): Visual Basic Editor (VBE) предоставляет интуитивно понятный конструктор форм (UserForm) и обширную панель инструментов с готовыми элементами управления. Это позволяет разработчикам быстро создавать полноценные графические пользовательские интерфейсы без необходимости вручную рисовать каждый компонент, значительно ускоряя процесс разработки UI.
  • Легкость в освоении: Для пользователей, уже знакомых с Microsoft Excel и его концепциями (ячейки, формулы, диапазоны), освоение VBA часто происходит относительно легко, благодаря схожей логике и доступности многочисленных учебных материалов, что снижает порог входа для начинающих разработчиков.

Недостатки VBA:

  • Ограниченность рамками экосистемы Microsoft Office: Приложения на VBA по своей природе не являются автономными. Они требуют наличия установленного Microsoft Office у конечного пользователя для запуска. Это ограничивает их распространение и делает невозможным создание кроссплатформенных решений, снижая универсальность.
  • Производительность: Хотя для простых логических игр, таких как «Крестики-нолики», производительности VBA обычно достаточно, для более сложных графически или вычислительно интенсивных игр она может оказаться недостаточной. VBA не оптимизирован для высокопроизводительных вычислений или сложной графики.
  • Отсутствие современных средств разработки: По сравнению с современными языками (Python, C#) и средами разработки, VBA имеет ограниченные возможности для использования продвинутых библиотек, фреймворков и современных парадигм программирования, что делает его менее привлекательным для крупномасштабных и инновационных проектов.

Преимущества и недостатки Mathcad

Mathcad — это мощный инструмент для инженерных и научных вычислений, и его сильные стороны лежат в области математики и документации. Однако его применение для разработки игр имеет свои нюансы, и важно понимать, что Mathcad не является специализированным игровым движком.

Преимущества Mathcad:

  • Мощные возможности для выполнения и документирования математических расчетов: Это его основное предназначение. Для игр с более сложной математической логикой, физическими симуляциями или статистическим анализом (как, например, оценка стратегий) Mathcad предоставляет беспрецедентные возможности, позволяя глубоко анализировать и проверять математические модели.
  • Интерактивные математические обозначения и визуализация результатов: Mathcad позволяет отображать вычисления в естественной математической нотации, что делает отладку и проверку математических моделей игры (например, алгоритма Минимакс) крайне наглядной и удобной.
  • Способность отображать вычисления, текст, данные и изображения в одном документе: Это значительно облегчает создание подробной проектной документации для курсовой работы, где код, пояснения и визуальные элементы собраны в одном месте, что повышает её академическую ценность.
  • Поддержка символьных вычислений: Mathcad может выполнять символьные преобразования, что полезно для анализа игровых стратегий или вывода обобщенных правил, расширяя аналитические возможности.
  • Интеграция с Excel: Упрощает работу с данными, которые могут быть импортированы из электронных таблиц.
  • Поддержка Python-скриптов (Mathcad Prime 11+): Это революционное изменение позволяет расширить функционал Mathcad, интегрируя с ним сложные алгоритмы, написанные на Python, включая алгоритмы ИИ и более продвинутую интерактивность, что значительно расширяет его потенциал.

Недостатки Mathcad:

  • В первую очередь предназначен для инженерных расчетов, а не для создания полноценных интерактивных приложений с богатым GUI: Хотя Mathcad Prime 11+ с Python-скриптами значительно улучшает ситуацию, его изначально архитектура не ориентирована на создание динамических, событийных графических интерфейсов, как в VBA или других языках, что может усложнить разработку сложных UI.
  • Создание сложного пользовательского интерфейса может быть более трудоемким: Разработка UI, аналогичного VBA-формам, требует использования Advanced Controls с внешними скриптами, что добавляет слой сложности и требует знания Python (или VBScript/JScript) в дополнение к Mathcad, что увеличивает время на освоение.
  • Менее интуитивен для разработки чисто игровых механик: Для игр, ориентированных на быструю реакцию, анимацию и комплексное событийное программирование, Mathcad менее подходит по сравнению с VBA или специализированными игровыми движками, так как его фокус лежит в другой области.
  • Требует специализированного программного обеспечения Mathcad для запуска: Как и VBA, Mathcad-файлы не являются автономными исполняемыми приложениями. Для их запуска необходима установленная лицензионная версия Mathcad, что ограничивает распространение.

Рекомендации по выбору среды

Выбор между Mathcad и VBA для разработки игры «Крестики-нолики» должен основываться на целях проекта, акцентах обучения и навыках разработчика:

  • Выбирайте VBA, если:
    • Основная цель — создание полноценного, интуитивно понятного графического пользовательского интерфейса с минимальными усилиями.
    • Вы хотите сосредоточиться на событийно-ориентированном программировании и взаимодействии с пользователем.
    • Проект должен быть легко интегрирован в среду Microsoft Office (например, как макрос в Excel).
    • В приоритете простота распространения для пользователей, у которых уже есть MS Office.
  • Выбирайте Mathcad, если:
    • Акцент делается на математической модели игры, детальном анализе алгоритмов и их визуализации в рамках научной или инженерной работы.
    • Вы хотите продемонстрировать возможности интеграции вычислений и документации в одном документе.
    • Вы заинтересованы в изучении новых возможностей Mathcad Prime по созданию интерактивных элементов через Python-скрипты, расширяя границы традиционного использования Mathcad.
    • Вам требуется мощная среда для символьных и численных расчетов, которые могут быть применены для анализа игровых стратегий.

Для задачи курсовой работы, где требуется академическая глубина, оба инструмента предоставляют уникальные возможности. VBA выделится простотой и эффективностью создания UI, а Mathcad — наглядностью математических выкладок и инновационными возможностями интеграции с Python для реализации ИИ. Оптимальным может быть даже демонстрация обеих реализаций для всестороннего анализа, что позволит получить наиболее полное представление о возможностях каждой среды.

Заключение

В рамках данной курсовой работы была рассмотрена всесторонняя методология разработки игры «Крестики-нолики» с интеллектуальным компьютерным противником. Мы начали с погружения в теоретические основы, определив игру как решаемую систему с предсказуемыми исходами при оптимальной стратегии. Ключевые термины, такие как «алгоритм игры», «пользовательский интерфейс», «VBA» и «Mathcad», были четко сформулированы, заложив фундамент для дальнейшего анализа, а также понимания всей сложности и многогранности поставленной задачи.

Центральное место в работе заняла алгоритмизация логики компьютерного противника. Подробно изучен алгоритм Минимакс — рекурсивный метод, позволяющий машине играть на непобедимом уровне, всегда стремясь к максимизации своего выигрыша и минимизации выигрыша оппонента. Была продемонстрирована его роль в анализе дерева игровых состояний (255 168 узлов для поля 3×3) и выработке оптимальных тактик, что подтверждает его эффективность для детерминированных игр.

Практическая часть работы включала детальное описание реализации игры в двух различных средах. В контексте VBA (Microsoft Office Excel) мы показали, как эффективно проектировать пользовательский интерфейс с помощью UserForm и элементов управления Label, представлять игровое поле двумерным массивом и обрабатывать события. Были представлены ключевые фрагменты VBA-кода для инициализации поля, обработки ходов игрока, проверки условий победы/ничьей и, что особенно важно, интеграции алгоритма Минимакс для обеспечения «интеллектуального» поведения компьютера, демонстрируя практическую применимость VBA для разработки интерактивных приложений.

При рассмотрении Mathcad был сделан акцент на его уникальных возможностях для инженерных вычислений и документации, а также на новых функциях Mathcad Prime 11+, позволяющих создавать расширенные интерактивные элементы с помощью Python-скриптов. Мы исследовали, как Mathcad может быть использован для визуализации игровых данных и интеграции алгоритма Минимакс через внешние скрипты, демонстрируя его потенциал за пределами традиционных расчетов, открывая новые горизонты для применения в образовательных и исследовательских проектах.

Критически важным этапом, обеспечивающим качество продукта, стали отладка и тестирование. Были подробно описаны инструменты отладки в VBE (точки останова, пошаговое выполнение, окна Immediate, Locals, Watches), а также методы тестирования программы, включая функциональное, стресс-, комбинаторное и исследовательское тестирование. Особое внимание уделено сценариям тестирования для «Крестиков-ноликов», включая проверку всех возможных исходов игры и «интеллекта» ИИ, что подтверждает надёжность и корректность разработанного решения.

Завершающий сравнительный анализ Mathcad и VBA выявил их сильные и слабые стороны: VBA выделяется простотой создания GUI и интеграцией с Office, в то время как Mathcad превосходит в математических вычислениях, документации и возможностях расширения через Python. Рекомендации по выбору среды были даны с учетом целей проекта и навыков разработчика, что поможет будущим специалистам сделать осознанный выбор инструментария для своих задач.

Таким образом, данная работа не только достигла поставленной цели по разработке и описанию игры «Крестики-нолики» в Mathcad и VBA, но и предоставила глубокий аналитический материал, охватывающий теоретические основы, алгоритмические решения, аспекты проектирования, реализации и тестирования. Полученный опыт и представленные методики служат ценным вкладом для студентов IT и инженерных специальностей, готовящихся к разработке собственных проектов с элементами искусственного интеллекта, и демонстрируют универсальность подходов к решению задач в различных программных средах.

Список использованной литературы

  1. Слепцова, Л.Д. Программирование на VBA в Microsoft Office 2010. – М.: ООО “Вильямс”, 2010. – 432 с.
  2. Уокенбах, Джон. Профессиональное программирование на VBA в Excel 2003. :Пер. с англ. – М. : Вильямс, 2005. – 800 с.
  3. Справочник по Visual Basic для приложений (VBA) в Office. URL: https://learn.microsoft.com/ru-ru/office/vba/library-reference/reference/visual-basic-for-applications-language-reference (дата обращения: 25.10.2025).
  4. Реализация алгоритма Минимакс на примере игры «Крестики-Нолики» // Habr. URL: https://habr.com/ru/articles/566144/ (дата обращения: 25.10.2025).
  5. Минимакс: алгоритм для решения сложных задач // IT-школа. URL: https://it-school.online/blog/minimax-algoritm/ (дата обращения: 25.10.2025).
  6. Теория игр: Minimax на C# // IT Dranik. URL: https://it-dranik.ru/theory-minimax-csharp/ (дата обращения: 25.10.2025).
  7. Основы вычислений и программирования в пакете MathCAD PRIME. Учебное пособие / Воскобойников Ю.Е., Задорожный А.Ф. URL: https://www.alfa-vit.eu/catalog/osnovy-vychisleniy-i-programmirovaniya-v-pakete-mathcad-prime-uchebnoe-posobie/ (дата обращения: 25.10.2025).
  8. Алгоритм MiniMax. Использование минимакса в Unity на примере игры Поймай Овечку // Lineri. URL: https://dtf.ru/gamedev/2085739-algoritm-minimax-ispolzovanie-minimaksa-v-unity-na-primere-igry-poymay-ovechku (дата обращения: 25.10.2025).
  9. Лебедев, В. М. Программирование на VBA в MS Excel : учебное пособие для вузов. 3-е изд., испр. и доп. URL: https://knigomania.com/programmirovanie-na-vba-v-ms-excel-3-e-izd-ispr-i-dop-uchebnoe-posobie-dlya-vuzov-lebedev-v-m/ (дата обращения: 25.10.2025).
  10. Руководство по установке и администрированию PTC Mathcad Prime 7.0.0.0 // PTC. URL: https://www.ptc.com/ru/support/mathcad/documentation/mathcad-prime-7-0-installation-and-administration-guide (дата обращения: 25.10.2025).
  11. Практические приемы программирования на VBA. Тема: игра в крестики и нолики. Практика // Intuit. URL: https://www.intuit.ru/studies/courses/2309/782/lecture/20993 (дата обращения: 25.10.2025).
  12. Игра крестики нолики на vb // Программирование и робототехника. URL: https://progrobot.ru/blog/igra_krestiki_noliki_na_vb/ (дата обращения: 25.10.2025).
  13. What’s New in PTC Mathcad Prime 11 // PTC Mathcad. URL: https://www.ptc.com/en/products/mathcad/whats-new/mathcad-prime-11 (дата обращения: 25.10.2025).
  14. Гибадуллин, А.А. Методология использования интеллектуальных компьютерных игр в обучении информационным технологиям // International Journal of Advanced Studies. 2019. URL: https://www.researchgate.net/publication/337190163_METODOLOGIA_ISPOLZOVANIA_INTELLEKTUALNYH_KOMPUTERNYH_IGR_V_OBUCENII_INFORMACIONNYM_TEHNOLOGIAM (дата обращения: 25.10.2025).

Похожие записи