АККРЕДИТОВАННОЕ ОБРАЗОВАТЕЛЬНОЕ ЧАСТНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ
ФИНАНСОВО-ЮРИДИЧЕСКИЙ УНИВЕРСИТЕТ МФЮА»
Методическая разработка
занятия по МДК.03.01 Технология разработки программного
обеспечения
Методы проектирования программ и программных систем.
Специфика применения языка UML на этапе объектно-ориентированного анализа и
проектирования
Разработчик: Калашникова
О.А., ст.преподаватель кафедры информационных систем и технологий
2018 г.
ВВЕДЕНИЕ
Путь от «программ для себя» до программных продуктов достаточно долгий,
он связан с изменениями технической и программной среды разработки и
эксплуатации программ, с появлением и развитием самостоятельной отрасли -
информационного бизнеса, для которой характерны разделение труда фирм -
разработчиков программ, их дальнейшая специализация, формирование рынка
программных средств и информационных услуг.
Программный продукт разрабатывается на основе промышленной технологии
выполнения проектных работ с применением современных инструментальных средств
программирования. Специфика заключается в уникальности процесса разработки
алгоритмов и программ, зависящего от характера обработки информации и
используемых инструментальных средств.
В связи с ростом потребности в
разнообразных программах обработки данных весьма актуален вопрос применения
эффективных технологий программирования и их перевода на промышленную основу.
Это означает:
- стандартизованность, тиражируемость и
воспроизведение различными разработчиками методов программирования;
- внедрение прогрессивных
инструментальных средств разработки программ;
- использование специальных методов и
приемов организации работ по разработке программ.
В рамках данного занятия рассматривается процесс
проектирования средствами Microsoft Visio и реализации
средствами среды программирования Visual Basic компьютерной
игры «Крестики-нолики». Игра используется в развлекательных целях и способствует развитию логического мышления пользователя, в качестве
соперника которого выступает компьютер.
Высокая производительность электронной вычислительной
машины позволяет отыскать вариант решения за доли секунды, в то время как
человек потратил бы на ту же операцию значительно больше времени. Это является
ярким показателем снижения трудоемкости работ, производимых пользователем.
Материалы занятия представлены описанием
процесса разработки программного продукта и презентацией к лекции.
ПЛАН ЗАНЯТИЯ
Дисциплина МДК.03.01
Технология разработки программного обеспечения
Тема: Методы
проектирования программ и программных систем. Специфика применения языка UML на этапе объектно-ориентированного анализа и проектирования
Тип занятия: лекция
Вид занятия: комбинированный
Цели занятия:
образовательная –
придать
направленный характер формированию практических навыков проектирования
программного продукта
развивающая-
развить навыки творческой работы, работы в
группе, логическое и абстрактное мышление, внимание, умение общаться
воспитательная –
выработать умение организовывать
последовательность действий для практического применения.
Межпредметные
связи: Теория алгоритмов, Основы программирования,
Операционные системы.
Структура
занятия
Элементы
занятия
|
Способы,
приемы и действия
|
Методы
|
преподавателя
|
студентов
|
1 Организационный момент
Задача:
- Настроить на плодотворную работу
|
- отмечает отсутствующих;
- проверяет готовность аудитории и
студентов;
- озвучивает тему и цели занятия;
- мотивирует актуальность предшествующего и
последующего материала;
- предлагает ход занятия
|
- осмысливают цели и задачи занятия;
- готовятся к занятию
|
Репродуктивные
Демонстрационные
|
2 Актуализация опорных знаний и умений
(опрос)
Задача:
- Диагностика готовности студентов к
восприятию нового материала;
- Закрепить пройденный материал
|
- проверяет знание пройденного материала;
- проводит фронтальный опрос (устно);
- подводит итоги опроса
|
- отвечают на вопросы (устно);
- приводят примеры (устно)
|
Словесно-репродуктивные
Творчески - воспроизводящие
|
3 Объяснение нового материала
Задача:
- На основе предыдущего материала овладеть
новыми знаниями;
- Формирование новых понятий, знаний,
умений, развитие мышления
|
- ставит проблемный вопрос;
- предлагает практическую ситуацию;
- предлагает опорную схему - конспект
|
- осмысливают основное содержание темы;
- анализируют практическую ситуацию и комментируют
ее;
- составляют опорную схему-конспект
|
Исследовательские
Творчески - воспроизводящие
Самостоятельная работа
|
4 Закрепление знаний, умений и навыков
Задача:
- Систематизировать приобретенные знания
|
- проверяет и анализирует результат работы;
- опорную схему-конспект;
- задает вопросы на закрепление;
- подводит итог, выставляет оценки
|
- комментируют полученную схему-конспект (устно);
- отвечают на вопросы;
- обсуждают проблемный вопрос;
- оценивают свою работу
|
Творчески - воспроизводящие
Словесно-репродуктивные
Проблемные
|
5 Домашнее задание
Задача:
- На основе пройденного материала
подготовиться к освоению новых знаний
|
- рекомендует закреплять пройденный
материал;
- спроектировать модель системы по заданию;
- освоить опорную схему-конспект
|
- записывают задание;
- задают дополнительные вопросы по заданию
|
Самостоятельная работа
|
Вопросы и задания:
- при опросе:
Раскрыть основные понятия UML языка, описать назначение и
основные средства UML.
- при
объяснении: Выделить критерии классификации методов проектирования и программирования
программных продуктов, дать понятие объектно-ориентированного анализа и
проектирования. На конкретном примере показать специфику использования средств UML языка на этапе объектно-ориентированного анализа и проектирования
программных продуктов.
- при
закреплении: Разработать проект программного продукта.
Средства обучения:
Раздаточный
материал, презентация по материалу занятия, мультимедийный проектор, экран,
ноутбук.
ХОД ЗАНЯТИЯ
1.
Организационный момент.
2.
Подготовка к изучению нового
материала (ознакомление с планом и целью занятия).
3.
Изучение нового материала
(просмотр электронного материала занятия с использованием мультимедиа
проектора: слайды, текст лекции).
4.
По ходу занятия студенты
конспектируют определения и отвечают на вопросы.
5.
Закрепление темы занятия (реализация
проекта программы средствами среды разработки, работа с раздаточным материалом).
6.
Подведение итогов. Выставление
оценок с учетом процентного выполнения задания занятия.
7.
Задание на дом (выучить
определения, усовершенствовать интерфейсные элементы проекта).
Постановка задачи
В игре крестики-нолики в игровом поле 3х3 победитель должен
выстроить три элемента в ряд по вертикали, горизонтали или диагонали.
Построение математической модели
Игровое поле представляет собой квадрат размером 3х3 (9
клеток). Для выигрыша необходимо выстроить в ряд три крестика (или три нолика)
по вертикали, горизонтали или диагонали.
Рассмотрим линии, на которых можно выстроить выигрывающие
комбинации, и присвоим им некоторые оценки. Оценка однозначно определяется состоянием
клеток линии. Пусть программа играет крестиками. Присвоим наивысшие оценки
линиям, на которых уже стоят два крестика и имеется свободная клетка. В самом
деле, если такие линии есть, то, совершив следующий ход на клетку, принадлежащую
одной из них, программа добьется победы. На рисунке приведены примеры таких
комбинаций.
Следующие по величине оценки присваиваются линиям,
содержащим два нолика и свободную клетку, так как противник угрожает своим
следующим ходом поставить на такую линию третий нолик и добиться победы. Оценки
для остальных возможных игровых комбинаций могут быть произвольными. Меняя
порядок оценок, можно заставить программу отдавать приоритет то защите, то
атаке.
Присвоив оценки всем линиям, оценивают свободные клетки
(через линии, которым они принадлежат). При этом следует учитывать, что в
зависимости от положения клетки на игровом поле через нее может проходить
разное число линий. Оценка клетки, поэтому не может быть равна сумме оценок линий,
для нее устанавливается более сложная зависимость. Программа совершает очередной
ход на клетку, оценка которой максимальна.
В простейшем случае программа работает по следующему
алгоритму: при выборе очередного хода осуществляет несколько просмотров всех
линий; при первом просмотре ищет комбинации с максимальным приоритетом; если
таких не оказывается, выполняет второй просмотр, во время которого ищет комбинации
со следующим по порядку приоритетом и т.д. процесс продолжается до тех по, пока
не окажется, что очередная комбинация найдена. После этого оцениваются
свободные клетки, выбирается клетка с наибольшей оценкой и поиск заканчивается.
Оценки клеток определяются линиями с комбинацией, имеющей наивысший приоритет,
комбинации с меньшим приоритетом игнорируются.
Максимальный приоритет имеет линия, на которую противник
выставил три своих элемента. Таким образом, при первом просмотре программа
проверяет, не выиграл ли противник своим очередным ходом. Приоритеты остальных
комбинаций идут в порядке, описанном ранее.
Разработка алгоритма
Окном игры «Крестики-нолики» является форма. Форма содержит
строку меню и клетки, образующие игровое поле 3*3. На клетках располагаются крестики
и нолики. Внизу формы выводится информация об очереди игроков и о победителе.
Операционная система является исходным звеном, так как она
отвечает за функционирование системы в целом. Пользователь через операционную
систему открывает программу и посылает сигнал активизации к форме проекта,
вследствие чего форма загружается и получает фокус управления.
Далее фокус активности передается объекту Menu и классу
Shape. На форме пользователь видит клетки игрового поля и строку меню.
Щелчок левой кнопки мыши по меню осуществляет передачу
фокуса управления объекту Menu. Строка меню содержит переключатели, позволяющие
осуществить настройку параметров игры: выбор обозначения Пользователя и уровень
сложности игры.
После настройки параметров игры фокус передается форме,
которая обрабатывает сигналы, поступающие от объекта Menu. Если Пользователь
выбирает игру крестиками, тогда первым будет ходить именно он. Выбранный
уровень сложности определяет варианты ходов компьютера.
На форме появляется сообщение о принадлежности первого хода
одному из игроков. Фокус активности у объекта Label.
Предположим, Пользователь играет крестиками. После щелчка
левой кнопки мыши по клетке, класс Square получает фокус активности,
выполняется процедура Square(). Эта процедура осуществляет проверку возможности
поставить крестик на выбранной Пользователем клетке. Если такая возможность существует,
тогда ставится крестик и фокус активности передается обратно форме.
Форма обрабатывает поступивший сигнал и происходит
обращение к модулю (объекту Moves). Модуль содержит функции выбора хода
компьютера.
После того как определена клетка, которую должен занять
компьютер, происходит передача фокуса активности классу Shape. На клетке
рисуется нолик. Заключительным действием является передача фокуса управления
форме.
Описание реализации программы
Игра начинается с выбора в меню Настройка обозначения
пользователя: Х или О с помощью переключателей Играть X или Играть О, а также
один из трех уровней сложности с помощью переключателей Уровень1, Уровень2, Уровень3.
Первоначально в процедуре Initialize оговаривается, что
выбран первый уровень мастерства и пользователь играет крестиками, а компьютер
– ноликами. При умолчании будут выбраны именно эти условия игры.
Private Sub Initialize ()
SkillLevel
= 1
mnuOptionsLevel(SkillLevel).Checked
= True
PlayerX =
PLAYER_HUMAN
PlayerO =
PLAYER_COMPUTER
mnuOptionsPlayX.Checked
= True
StartNewGame
End
Sub
Если пользователь выбирает игру крестиками, то для выбранной
им клетки свойство «Видимость Х» будет верным, если же пользователь выбирает
игру ноликами, то свойство «Видимость О» будет верным.
Private Sub
DrawSquare(i As Integer)
Select Case
Board(i)
Case PlayerX
X1(i).Visible
= True
X2(i).Visible
= True
Case PlayerO
O(i).Visible =
True
End Select
End Sub
При выборе игры крестиками происходит обращение к процедуре
mnuOptionsPlayX, в которой переключатель, соответствующий
Х принимает значение True(Верно), а переключатель, соответствующий О – значение
False(Ложь).
Private Sub
mnuOptionsPlayX_Click()
PlayerX =
PLAYER_HUMAN
PlayerO =
PLAYER_COMPUTER
mnuOptionsPlayX.Checked
= True
mnuOptionsPlayO.Checked
= False
StartNewGame
End Sub
При выборе игры ноликами происходит обращение к процедуре
mnuOptionsPlayО, в которой переключатель, соответствующий
О принимает значение True(Верно), а переключатель, соответствующий Х – значение
False(Ложь).
Private Sub
mnuOptionsPlayO_Click()
PlayerX =
PLAYER_COMPUTER
PlayerO =
PLAYER_HUMAN
mnuOptionsPlayX.Checked
= False
mnuOptionsPlayO.Checked
= True
StartNewGame
End Sub
После каждого выбора обозначения игрока и уровня сложности
происходит запуск новой игры обращением к процедуре StartNewGame.
Private Sub
StartNewGame()
Dim i As
Integer
For i = 1 To
NUM_SQUARES
Board(i) =
PLAYER_NONE
X1(i).Visible
= False
X2(i).Visible
= False
O(i).Visible =
False
Next i
NextPlayer =
PlayerX
GameInProgress
= True
PlayerHasMoved
End Sub
В процедуре StartNewGame все клетки игрового поля очищаются
от крестиков и ноликов, то есть свойство «Видимость» как крестиков, так и
ноликов становится ложным (False). Новую игру начинает
Игрок Х. Далее делается первый ход. Для этого необходимо обращение к процедуре
PlayerHasMoved. Эта процедура также используется при подготовке к передаче хода
следующему игроку.
Суть процедуры PlayerHasMoved заключается в том, что если
ход должен делать компьютер, то происходит передача управления процедуре
MakeComputerMove, которая отвечает за осуществление компьютером хода. Если же
ход должен делать человек, тогда происходит обращение к процедуре
MakeHumanMove. Эта процедура выдает на форме сообщение «Ваш ход».
Private Sub PlayerHasMoved()
If
NextPlayer = PLAYER_COMPUTER Then
MakeComputerMove
If GameOver()
Then Exit Sub
End If
MakeHumanMove
End Sub
При обращении к процедуре MakeComputerMove на форме
появляется сообщение «Ход компьютера». Указатель мыши принимает вид песочных
часов. Далее происходит выбор компьютером хода посредством обращения к функции
PickComputerMove и ставится соответствующее обозначение на выбранной им клетке.
Затем управление передается следующему игроку, то есть человеку. Указатель мыши
принимает стандартный вид.
Private Sub
MakeComputerMove()
Dim Square As
Integer
Msg.Caption =
"Ход компьютера"
Msg.Refresh
MousePointer =
vbHourglass
Square = PickComputerMove
Board(Square)
= NextPlayer
DrawSquare
Square
NextPlayer =
PLAYER_HUMAN
MousePointer =
vbDefault
End Sub
Если происходит обращение к процедуре MakeHumanMove, на форме появляется сообщение «Ваш ход».
Private Sub
MakeHumanMove()
Msg.Caption =
"Ваш ход"
End Sub
Для того, чтобы пользователь мог поставить крестик или
нолик необходима процедура Square. Она работает следующим
образом. Сначала проверяется – в действии ли игра. Затем необходимо
удостовериться, что очередь игрока-человека и что никто не владеет выбираемой
клеткой. И только после этого происходит захват клетки для игрока.
Private Sub Square_Click(index As Integer)
If
Not GameInProgress Then Exit Sub
If NextPlayer
<> PLAYER_HUMAN Then Exit Sub
If
Board(index) <> PLAYER_NONE Then Exit Sub
Board(index) =
NextPlayer
DrawSquare
index
If GameOver()
Then Exit Sub
NextPlayer =
PLAYER_COMPUTER
PlayerHasMoved
End Sub
Следующий шаг – обращение к функции GameOver. Если игра закончена, то происходит выход из процедуры, если нет, то
происходит подготовка к следующему ходу (обращение к процедуре PlayerHasMoved).
Рассмотрим упомянутую нами выше функцию GameOver.
Функция GameOver использует обращения к функции
Winner(Победитель). Функция Winner позволяет выявить игрока, который одерживает
победу. Эта функция ищет победу игрока в строке, в столбце, по диагонали и
«запоминает» победителя. Если победителя нет, то
в игре – ничья.
Private
Function Winner() As Integer
Dim i As
Integer
For i = 1 To 7
Step 3
If Board(i)
<> PLAYER_NONE Then
If Board(i) =
Board(i + 1) And Board(i) = Board(i + 2) Then
Winner =
Board(i)
Exit Function
End If
End If
Next i
For i = 1 To 3
If Board(i)
<> PLAYER_NONE Then
If Board(i) =
Board(i + 3) And Board(i) = Board(i + 6) Then
Winner =
Board(i)
Exit Function
End If
End If
Next i
If Board(1)
<> PLAYER_NONE Then
If Board(1) =
Board(5) And Board(1) = Board(9) Then
Winner =
Board(1)
Exit Function
End If
End If
If Board(3)
<> PLAYER_NONE Then
If Board(3) =
Board(5) And Board(3) = Board(7) Then
Winner = Board(3)
Exit Function
End If
End If
Winner =
PLAYER_NONE
For i = 1 To
NUM_SQUARES
If Board(i) =
PLAYER_NONE Then Exit Function
Next i
Winner =
PLAYER_DRAW
End Function
GameOver проверяет есть победитель или нет. Если победителя
еще нет, то игра не оканчивается и происходит выход из этой функции (возвращение
к игре). Если это не так, игра останавливается и в случае победы игрока Х
выдается сообщение «Х выиграли», в случае победы игрока О выдается сообщение «О
выиграли», или, в противном случае, выдается сообщение «Ничья». На этом игра оканчивается.
Private
Function GameOver() As Integer
Dim pl As
Integer
Dim i As
Integer
Dim color As
Long
pl = Winner()
If pl =
PLAYER_NONE Then
GameOver =
False
Exit Function
End If
GameInProgress
= False
If pl =
PlayerX Then
Msg.Caption =
"X выиграли"
ElseIf pl =
PlayerO Then
Msg.Caption =
"O выиграли"
Else
Msg.Caption =
"Ничья"
End If
Beep
GameOver =
True
End Function
Важнейшей функцией программы является функция выбора
компьютером хода – PickComputerMove.
Первоначально в этой функции происходит проверка выбранного
уровня сложности с помощью оператора Select Case. Если происходит выбор первого
уровня сложности, то компьютер совершает произвольный ход.
При выборе второго уровня сложности, компьютер делает свой
ход, после того как осуществит определенные вычисления (в порядке значимости):
¾
победный ход;
¾
ход, который преграждает победу пользователя в
следующем ходе.
Если ни один из вышеупомянутых вариантов не применяется, то
компьютер делает произвольный ход.
Для третьего уровня сложности компьютер делает свой ход,
после того как осуществит вычисления (в порядке значимости):
¾
победный ход;
¾
ход, который преграждает победу пользователя в
следующем ходе;
¾
ход, который преграждает победу пользователя после
двух ходов.
Если ни один из вышеперечисленных вариантов не применяется,
тогда компьютер делает стандартный ход.
Public Function
PickComputerMove()
Dim pick As
Integer
Select Case
SkillLevel
Case 1
PickComputerMove
= MakeRandomMove
Exit Function
Case 2
pick = MakeWinningMove
If pick = 0
Then
pick =
MakeSavingMove
Else
PickComputerMove
= pick
Exit Function
End If
If pick = 0
Then
PickComputerMove
= MakeRandomMove
Else
PickComputerMove
= pick
End If
Case 3
pick =
MakeWinningMove
If pick = 0
Then
pick =
MakeSavingMove
Else
PickComputerMove
= pick
Exit Function
End If
If pick = 0
Then
pick =
MakeSavingMove2
Else
PickComputerMove
= pick
Exit Function
End If
If pick = 0
Then
PickComputerMove
= MakeStandardMove
Else
PickComputerMove
= pick
End If
End Select
End Function
При выборе победного хода происходит обращение к функции,
которая осуществляет вычисление победного хода – MakeWinningMove.
Эта функция действует следующим образом.
Сначала осуществляется поиск хода, который выиграет в строке.
Для этого первая, четвертая, седьмая компьютерные и свободные клетки принимают
значение 0. Это первые клетки строк, следовательно, вторая и третья клетки каждой
строки будут иметь значения 1 и 2 соответственно. Далее проверяем клетки 0, 1,
2 в каждой строке. Если клетка занята компьютером, то компьютер занимает
следующую за ней клетку. Если же клетка никем не занята, то следующая после нее
клетка будет также свободна. После этого при условии, что компьютер занимает
последнюю клетку строки, и свободная клетка не занимает первую клетку строки,
то компьютер делает победный ход, занимая свободную клетку.
Далее осуществляется поиск хода, который выиграет в
столбце. Принцип действия тот же, что и при поиске выигрышного хода в строке.
Отличие состоит лишь в том, что «нулевыми» клетками будут начальные клетки
столбцов – 1, 2, 3.
Затем программа ищет ход, который выиграет по диагонали.
Поиск хода осуществляется аналогично. Рассматриваются клетки 1, 5, 9 и 3, 5, 7,
то есть клетки, составляющие диагонали игрового поля. На этом поиск победного хода завершается.
Public Function
MakeWinningMove() As Integer
Dim
computersquares As Integer
Dim freesquare
As Integer
Dim Square As
Integer
Dim i As
Integer
For Square = 1
To 7 Step 3
computersquares
= 0
freesquare = 0
For i = 0 To 2
Select Case
Board(Square + i)
Case
PLAYER_COMPUTER
computersquares
= computersquares + 1
Case
PLAYER_NONE
freesquare =
Square + i
End Select
Next
If
computersquares = 2 And freesquare <> 0 Then
MakeWinningMove
= freesquare
Exit Function
End If
Next
For Square = 1
To 3
computersquares
= 0
freesquare = 0
For i = 0 To 6
Step 3
Select Case
Board(Square + i)
Case
PLAYER_COMPUTER
computersquares
= computersquares + 1
Case
PLAYER_NONE
freesquare =
Square + i
End Select
Next
If computersquares
= 2 And freesquare <> 0 Then
MakeWinningMove
= freesquare
Exit Function
End If
Next
computersquares
= 0
freesquare = 0
For i = 1 To 9
Step 4
Select Case
Board(i)
Case
PLAYER_COMPUTER
computersquares
= computersquares + 1
Case PLAYER_NONE
freesquare = i
End Select
Next
If
computersquares = 2 And freesquare <> 0 Then
MakeWinningMove
= freesquare
Exit Function
End If
computersquares
= 0
freesquare = 0
For i = 3 To 7
Step 2
Select Case Board(i)
Case
PLAYER_COMPUTER
computersquares
= computersquares + 1
Case
PLAYER_NONE
freesquare = i
End Select
Next
If
computersquares = 2 And freesquare <> 0 Then
MakeWinningMove
= freesquare
Exit Function
End If
End Function
Если вариантом выбора является ход, который преграждает
победу пользователя в следующем ходе, то происходит обращение к функции
MakeSavingMove. В функции MakeSavingMove, аналогично предыдущей функции,
сначала осуществляется поиск хода, который предотвратит выигрыш пользователя в
строке, далее – поиск хода, который предотвратит выигрыш в столбце, а затем –
по диагонали. Эта функция анализирует ходы пользователя, после чего компьютер
занимает ту клетку, которая могла бы стать победоносной для человека.
Public Function
MakeSavingMove() As Integer
Dim
humansquares As Integer
Dim freesquare
As Integer
Dim Square As
Integer
Dim i As
Integer
For Square = 1
To 7 Step 3
humansquares =
0
freesquare = 0
For i = 0 To 2
Select Case
Board(Square + i)
Case
PLAYER_HUMAN
humansquares =
humansquares + 1
Case
PLAYER_NONE
freesquare =
Square + i
End Select
Next
If
humansquares = 2 And freesquare <> 0 Then
MakeSavingMove
= freesquare
Exit Function
End If
Next
For Square = 1
To 3
humansquares =
0
freesquare = 0
For i = 0 To 6
Step 3
Select Case
Board(Square + i)
Case PLAYER_HUMAN
humansquares =
humansquares + 1
Case
PLAYER_NONE
freesquare =
Square + i
End Select
Next
If
humansquares = 2 And freesquare <> 0 Then
MakeSavingMove
= freesquare
Exit Function
End If
Next
humansquares =
0
freesquare = 0
For i = 1 To 9
Step 4
Select Case
Board(i)
Case
PLAYER_HUMAN
humansquares =
humansquares + 1
Case
PLAYER_NONE
freesquare = i
End Select
Next
If
humansquares = 2 And freesquare <> 0 Then
MakeSavingMove
= freesquare
Exit Function
End If
humansquares =
0
freesquare = 0
For i = 3 To 7
Step 2
Select Case
Board(i)
Case
PLAYER_HUMAN
humansquares =
humansquares + 1
Case
PLAYER_NONE
freesquare = i
End Select
Next
If
humansquares = 2 And freesquare <> 0 Then
MakeSavingMove
= freesquare
Exit Function
End If
End Function
При выборе хода, который преграждает победу пользователя
после двух ходов, происходит обращение к функции MakeSavingMove2. В этой
функции предполагается, что пользователь занимает клетку 5. Далее если первая
клетка занята пользователем, а седьмая свободна, компьютер занимает седьмую свободную
клетку. Если же седьмая клетка занята, а четвертая свободна, компьютер занимает
четвертую свободную клетку. Аналогичным образом рассматриваются клетки (3, 9, 6), (7, 1, 4), (9, 3, 6).
Public Function
MakeSavingMove2() As Integer
Dim pick As
Integer
Select Case
Board(5) = PLAYER_HUMAN
Case True
If Board(1) =
PLAYER_HUMAN Then
If Board(7) =
PLAYER_NONE Then
pick = 7
ElseIf
Board(4) = PLAYER_NONE Then
pick = 4
End If
ElseIf
Board(3) = PLAYER_HUMAN Then
If Board(9) =
PLAYER_NONE Then
pick = 9
ElseIf
Board(6) = PLAYER_NONE Then
pick = 6
End If
ElseIf
Board(7) = PLAYER_HUMAN Then
If Board(1) =
PLAYER_NONE Then
pick = 1
ElseIf
Board(4) = PLAYER_NONE Then
pick = 4
End If
ElseIf
Board(9) = PLAYER_HUMAN Then
If Board(3) =
PLAYER_NONE Then
pick = 3
ElseIf
Board(6) = PLAYER_NONE Then
pick = 6
End If
End If
End Select
MakeSavingMove2 = pick
End Function
Для осуществления произвольного хода происходит обращение к
функции MakeRandomMove. Эта функция определяет произвольным образом клетку, и
если она свободна, то компьютер занимает выбранную клетку.
Public Function
MakeRandomMove() As Integer
Dim pick As
Integer
Dim Square As
Integer
Do Until pick
<> 0
Square =
Int(Rnd * 8) + 1
If
Board(Square) = PLAYER_NONE Then pick = Square
Loop
MakeRandomMove = pick
End Function
Если вариантом выбора является стандартный ход, то
происходит обращение к функции MakeStandardMove. Она
осуществляет следующие действия:
-
переход в середину игрового поля (клетка 5);
-
переход в угол игрового поля (клетки 1, 3, 7, 9);
-
переход в имеющуюся в наличии клетку (2, 4, 6, 8).
Public Function
MakeStandardMove() As Integer
Dim Square As
Integer
Dim pick As
Integer
If Board(5) =
PLAYER_NONE Then
MakeStandardMove
= 5
Exit Function
End If
For Square = 1
To 9 Step 2
If
Board(Square) = PLAYER_NONE Then
MakeStandardMove
= Square
Exit Function
End If
Next
For Square = 2
To 8 Step 2
If
Board(Square) = PLAYER_NONE Then
MakeStandardMove
= Square
Exit Function
End If
Next
End Function
ВЫВОДЫ
ПО РЕЗУЛЬТАТАМ ЗАНЯТИЯ
Результаты открытого занятия показали эффективность
применения мультимедийных технологий в образовательном процессе.
Были отмечены следующие положительные моменты:
а) студенты:
- легче усваивают новый материал, так как нет лишней
информации;
- проявляют больше самостоятельности, активности и
творчества при выполнении различных заданий на протяжении всего урока;
- с интересом знакомятся с представленной мультимедийным
проектором коллекцией изображений, текстов и данных, сопровождающихся
различными визуальными эффектами;
- учатся работать в группе, слушать друг друга, корректно
вести себя по отношению друг к другу.
б) преподаватель:
- имеет возможность активизировать мыслительную деятельность
учащихся, отказавшись от постоянных повторов информации и сосредоточив свое
внимание на индивидуальной работе, как с отдельными студентами, так и на работе
с группой в целом;
- может уделить больше времени на обсуждение вопросов по
теме;
- имеет возможность применить на занятии элементы
развивающего обучения, опираясь на разнообразный наглядный материал,
представленный на занятии мультимедийным проектором.
СПИСОК
ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Майк МакГрат.
Программирование на Visual Basic для начинающих. (2017) PDF Издательство: Эксмо.
2. UML. Основы. Третье издание.
Краткое руководство по стандартному языку объектного моделирования. (2006) Издательство:
Символ- Плюс.
3. Александр Леоненков. Самоучитель
UML, 2-е издание. (2004) Издательство: БХВ-Петербург.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.