Разработка методического указания по информатике для 10 классаСоздание интерактивных кроссвордов в MS Power Point с использованием VBA



Создание интерактивных кроссвордов в MS Power Point с использованием VBA



Данный ресурс поможет Вам научиться составлять и воплощать в презентациях интерактивные кроссворды (естественно предметная область не имеет значения), которые очень удобно и интересно проводить с помощью проектора.
Задавшись целью сделать такой кроссворд, где после ввода слова и нажатия кнопки «ПРОВЕРИТЬ» слово должно оставаться и как-то выделяться цветом, если оно верное, иначе стираться и снова можно вводить слово.
Казалось бы, все просто: под каждую букву слова отводится отдельный Textbox и по нажатию «ПРОВЕРИТЬ» описывается процедура обработки этого Textboxа – или стирать или красить. Однако в кроссворде много пересечений слов – соответственно еще больше различных комбинаций для проверки – в общем, кода обработки боксов будет много (это мы увидим дальше)

Для исполнения выбрана среда MS PPT, с ней умеют работать практически все учителя, кроме того, имеется встроенный редактор Visual Basic (VBA), который нам и будет нужен для обработки событий

Конечно, создать такой кроссворд легко учителю информатики, но по алгоритму, изложенному ниже, это несложно сделать любому учителю.

Конечно же, есть трудности:
Самое первое – это запастись терпением - для создания одного кроссворда на 15-20 слов у меня уходить 5-6 часов (а у вас по началу может и еще больше () т.к. приходится писать очень много кода, хотя в основном применяется копирование кода и его подправка
Второе – алгоритм одного кроссворда нельзя использовать для второго: разные слова, пересечения и т.д (т.е второй кроссворд имеет совершенно другой код и на него опять надо 5-6-7... часов
Третье – все это потом разгадается за 15-20 минут
А большой плюс в том, что можно этому научить ребят, и они столько кроссвордов сделают и по любой предметной области ...
И еще плюс – кроссворд получается «живой» (а не статический, как на бумаге)
Итак, если не пропало желание и есть время, которого не жалко, то ниже я постараюсь по шагам на конкретном примере рассмотреть алгоритм создания такого кроссворда:
(Может у кого - то есть другой, менее трудоемкий способ)



















ШАГ 1

Составляем кроссворд на бумаге, это не составляет труда: чертим на тетради в клетку слова. Для примера возьмем самый простой кроссворд из 3 слов (этого вполне достаточно для уяснения алгоритма )

Например, такой:


а




г
е
р
ц





х






и






м





т
е
с
л
а



д














Нарисуем вторую точно такую же таблицу (кроссворд), где буквы заменим цифрами (это будут номера наших TextBox - ов



1




2
3
4
5





6






7






8





9
10
11
12
13



14

















ШАГ 2


Сейчас открываем MS PPT и создаем там такую же таблицу ( с номерами)
Берем на панели ЭЛЕМЕНТЫ УПРАВЛЕНИЯ элемент Textbox (там он называется ПОЛЕ) и помещаем его на слайд – у нас появился Textbox № 1(дальше будем его звать «бокс»), помещаем, конечно же в то место таблицы, где № 1
( При необходимости, щелкнув правой кнопкой по боксу и выбрав СВОЙСТВА, можно изменить размер и цвет шрифта)

Дальше нам надо поместить на слайд еще 13 боксов – ведь в нашем кроссворде 14 букв
Удобнее всего ухватившись правой кнопкой за бокс № 1 перетащить его на место бокса № 2 и выбрать копировать – появится бокс № 2 - и так до бокса № 14

Итак, боксы под буквы созданы, и они находятся точно на своих местах согласно таблицы.
Сейчас таблицу можно убрать (выделить и вырезать), подобрать цвет фона слайда и оформление

В результате у нас получится примерно так:







ШАГ 3

Сейчас создадим 3 кнопки

- проверить
- очистить
- выход
Их также берем с панели ЭЛЕМЕНТЫ УПРАВЛЕНИЯ и помещаем на слайд
Щелкнув правой по каждой кнопке и выбрав СВОЙСТВА, зададим нужный размер и цвет шрифта и фон кнопки
Изменим надписи на кнопках на нужные: Правой – Объект CommandButton – Edit

Получается так:




ШАГ 4

Приступаем к написанию кода для кнопки ПРОВЕРИТЬ – это самая длительная часть работы по созданию кроссворда

Начнем со слова «герц»


а




г
е
р
ц





х






и






м





т
е
с
л
а



д







1




2
3
4
5





6






7






8





9
10
11
12
13



14















Оно занимает боксы 2, 3, 4, 5 и пересекается со словом «архимед»
Делаем двойной щелчок по кнопке ПРОВЕРИТЬ и мы оказываемся в редакторе VBA, где видим процедуру обработки события нажатия на кнопку, куда надо вставить необходимый код

Private Sub CommandButton1_Click()

{ Сюда надо вставить код}

End Sub

Давайте сначала разберем алгоритм проверки и действий, затем запишем код:

Надо проверить значения боксов 2,3,4,5 и

- если слово внесено верно, то в боксе 2 должна быть буква «г», в 3 – «е», в 4 – «р», в 5 – «ц», тогда боксы покрасим

иначе (слово не угадано) может быть два случая:
если слово «архимед» до этого угадано, то надо очищать боксы 2,3,5, а бокс 4 не трогать – ведь там буква «р» от слова «архимед», а его стирать нельзя – оно ведь угадано

иначе (пересекающее слово «архимед» до этого не угадано), то надо очищать боксы 2,3,4,5


Пишем код для слова «герц»:

'2 по горизонтали «герц»

If (TextBox2.Text = "г") And (TextBox3.Text = "е") And (TextBox4.Text = "р") And (TextBox5.Text = "ц") Then
TextBox2.BackColor = RGB(0, 255, 255)
TextBox3.BackColor = RGB(0, 255, 255)
TextBox4.BackColor = RGB(0, 255, 255)
TextBox5.BackColor = RGB(0, 255, 255)



Else
If (TextBox1.Text = "а") Then
TextBox2.Text = ""
TextBox3.Text = ""
TextBox5.Text = ""


Else

TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""

End If
End If



Разъяснение кода:

If (TextBox2.Text = "г") And (TextBox3.Text = "е") And (TextBox4.Text = "р") And (TextBox5.Text = "ц") Then
TextBox2.BackColor = RGB(0, 255, 255)
TextBox3.BackColor = RGB(0, 255, 255)
TextBox4.BackColor = RGB(0, 255, 255)
TextBox5.BackColor = RGB(0, 255, 255)

Это проверка всех боксов:
Если бокс2 содержит текст «г» И бокс3 – «е» И бокс4 – «р» И бокс5 – «ц» (т.е слово угадано), то делаем цвет фона всех боксов голубым (TextBox2.BackColor = RGB(0, 255, 255)) ...

Else
If (TextBox1.Text = "а") Then
TextBox2.Text = ""
TextBox3.Text = ""
TextBox5.Text = ""

Иначе, если слово «герц» не угадано и в боксе1 буква «а» (т.е слово «архимед» до этого угадано), то очищаем боксы 2,3,5, а бокс 4 не трогаем – в нем буква «р» от слова «архимед»

Else

TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""

Иначе (слово «герц» не угадано и слово «архимед» тоже не угадано), то чистим все боксы 2,3,4,5.


Здесь можно подумать, что это излишнее усложнение, но без рассмотрения всех этих вариантов не будут отрабатываться всевозможные возникающие ситуации и все будет стираться ( - испытал при разработке алгоритма



Следующее слово «тесла», которое содержит тоже одно пересечение с другим словом




а




г
е
р
ц





х






и






м





т
е
с
л
а



д







1




2
3
4
5





6






7






8





9
10
11
12
13



14














Алгоритм примерно такой же, только букв (и боксов) не 4 а 5

Посмотрите код и все поймете:

'3 по горизонтали «тесла»

If (TextBox9.Text = "т") And (TextBox10.Text = "е") And (TextBox11.Text = "с") And (TextBox12.Text = "л") And (TextBox13.Text = "а") Then

TextBox9.BackColor = RGB(0, 255, 255)
TextBox10.BackColor = RGB(0, 255, 255)
TextBox11.BackColor = RGB(0, 255, 255)
TextBox12.BackColor = RGB(0, 255, 255)
TextBox13.BackColor = RGB(0, 255, 255)

Else
If (TextBox8.Text = "м") Then
TextBox9.Text = ""
TextBox11.Text = ""
TextBox12.Text = ""
TextBox13.Text = ""

Else
TextBox9.Text = ""
TextBox10.Text = ""
TextBox11.Text = ""
TextBox12.Text = ""
TextBox13.Text = ""

End If
End If

Конечно, снова набирать код нет смысла (тогда нам понадобится не 6,а 26 часов( ), просто выделяем текст для слова «герц», копируем, затем вставляем ниже и подкорректируем по слову «тесла» и номерам ячеек



И, наконец слово «архимед»

Оно содержит два пересечения со словами герц и тесла




1




2
3
4
5





6






7






8





9
10
11
12
13



14







а




г
е
р
ц





х






и






м





т
е
с
л
а



д














Кроссворд мы угадываем не по порядку - произвольно, поэтому могут быть такие случаи:

Слово «архимед» угадано – тогда его красим
Слово «архимед» не угадано – тогда, если слово герц и тесла до этого было угадано, то чистим все, кроме боксов 4 и 10 (там буквы от угаданных слов)
Слово «архимед» не угадано – тогда, если только слово тесла было до этого угадано, то чистим все, кроме бокса 10
Слово «архимед» не угадано – тогда, если только слово герц было до этого угадано, то чистим все, кроме бокса 4
Иначе ( ничего не угадано), то чистим все боксы 1,4,6,7,8,10,14

В этом случае код становится больше (больше вариантов)
'1 по вертикали - архимед

If (TextBox1.Text = "а") And (TextBox4.Text = "р") And (TextBox6.Text = "х") And (TextBox7.Text = "и") And (TextBox8.Text = "м") And (TextBox10.Text = "е") And (TextBox14.Text = "д") Then

TextBox1.BackColor = RGB(0, 255, 255)
TextBox4.BackColor = RGB(0, 255, 255)
TextBox6.BackColor = RGB(0, 255, 255)
TextBox7.BackColor = RGB(0, 255, 255)
TextBox8.BackColor = RGB(0, 255, 255)
TextBox10.BackColor = RGB(0, 255, 255)
TextBox14.BackColor = RGB(0, 255, 255)

Else
If (TextBox5.Text = "ц") And (TextBox11.Text = "с") Then
TextBox1.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox14.Text = ""

Else
If (TextBox5.Text = "ц") Then
TextBox1.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox10.Text = ""
TextBox14.Text = ""

Else
If (TextBox11.Text = "с") Then
TextBox1.Text = ""
TextBox4.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox14.Text = ""

Else
TextBox1.Text = ""
TextBox4.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox10.Text = ""
TextBox14.Text = ""
End If
End If
End If
End If

Разъяснение кода:

If (TextBox1.Text = "а") And (TextBox4.Text = "р") And (TextBox6.Text = "х") And (TextBox7.Text = "и") And (TextBox8.Text = "м") And (TextBox10.Text = "е") And (TextBox14.Text = "д") Then

TextBox1.BackColor = RGB(0, 255, 255)
TextBox4.BackColor = RGB(0, 255, 255)
TextBox6.BackColor = RGB(0, 255, 255)
TextBox7.BackColor = RGB(0, 255, 255)
TextBox8.BackColor = RGB(0, 255, 255)
TextBox10.BackColor = RGB(0, 255, 255)
TextBox14.BackColor = RGB(0, 255, 255)

Если слово архимед угадано, то меняем цвет фона боксов



Else
If (TextBox5.Text = "ц") And (TextBox11.Text = "с") Then
TextBox1.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox14.Text = ""
Иначе (слово архимед не угадано, но до этого угаданы слова герц и тесла) – то чистим боксы 1,6,7,8,14, а 4 и 10 не трогаем – там буквы от угаданных слов герц и тесла









Else
If (TextBox5.Text = "ц") Then
TextBox1.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox10.Text = ""
TextBox14.Text = ""

Иначе (слово архимед не угадано, но до этого угадано слово герц ) – то чистим боксы 1,6,7,8,10,14, а 4 не трогаем – там буквы от угаданного слова герц



If (TextBox11.Text = "с") Then
TextBox1.Text = ""
TextBox4.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox14.Text = ""

Иначе (слово архимед не угадано, но до этого угадано слово тесла ) – то чистим боксы 1,4,6,7,8,,14, а 10 не трогаем – там буквы от угаданного слова тесла





TextBox1.Text = ""
TextBox4.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox10.Text = ""
TextBox14.Text = ""
End If
End If
End If
End If

Иначе (слово архимед не угадано, слова герц и тесла тоже не угаданы) – чистим все боксы



Заметьте:
Если слово пересекается с одним словом – то надо описывать 2 варианта кода (21=2)
Если с двумя – 4 варианта (22=4)
Если в тремя – 8 вариантов (23=8)
Если в четырьмя – 16 вариантов (24=16)
и так далее
В своих кроссвордах я стараюсь не делать пересечения более, чем с тремя словами – будет уйма кода (пусть и case – технологии) и замедление работы программы – оно и так уже присутствует



ШАГ 5

Если еще осталось желание, то следующий шаг – описание кода для кнопки ОЧИСТИТЬ

Он очень прост:
При нажатии на эту кнопку все боксы должны перекраситься в исходный цвет (белый RGB(255,255,255) и содержимое боксов очиститься (TextBox1.Text = "")

Делаем двойной щелчок по кнопке ОЧИСТИТЬ и пишем код:


Private Sub CommandButton2_Click()

TextBox1.BackColor = RGB(255, 255, 255)
TextBox1.Text = ""
TextBox2.BackColor = RGB(255, 255, 255)
TextBox2.Text = ""
TextBox3.BackColor = RGB(255, 255, 255)
TextBox3.Text = ""
TextBox4.BackColor = RGB(255, 255, 255)
TextBox4.Text = ""
TextBox5.BackColor = RGB(255, 255, 255)
TextBox5.Text = ""
TextBox6.BackColor = RGB(255, 255, 255)
TextBox6.Text = ""
TextBox7.BackColor = RGB(255, 255, 255)
TextBox7.Text = ""
TextBox8.BackColor = RGB(255, 255, 255)
TextBox8.Text = ""
TextBox9.BackColor = RGB(255, 255, 255)
TextBox9.Text = ""
TextBox10.BackColor = RGB(255, 255, 255)
TextBox10.Text = ""
TextBox11.BackColor = RGB(255, 255, 255)
TextBox11.Text = ""
TextBox12.BackColor = RGB(255, 255, 255)
TextBox12.Text = ""
TextBox13.BackColor = RGB(255, 255, 255)
TextBox13.Text = ""
TextBox14.BackColor = RGB(255, 255, 255)
TextBox14.Text = ""

End Sub



ШАГ 5
Наконец напишем код для кнопки ВЫХОД:

Private Sub CommandButton3_Click()
Application.Quit
End Sub

Эта команда закрывает приложение. Лучше, если сюда добавить код, который висит на кнопке ОЧИСТИТЬ, тогда, если мы забыли очистить и нажали ВЫХОД, то все равно очистится, и при следующем запуске кроссворд опять чистый


ШАГ 6

Вставляем в презентацию надпись, где описываем задания , номера слов, картинки для оформления, в результате получаем готовый кроссворд:







ШАГ 7


Таким образом надо написать код для всех слов кроссворда, а если их 15-20, то боксов получается около сотни и кода тоже много – соответственно и времени надо много

И еще:
- очень важно! Кроссворд содержит команды (макросы), поэтому при его запуске кнопки могут не работать – система безопасности Вашего MS PPT блокирует запуск макросов (исполнение кода)
Что сделать: открыть MS PPT, зайти МЕНЮ – СЕРВИС – МАКРОС – БЕЗОПАСНОСТЬ и установить низкий уровень безопасности, затем закрыть PPT и запустить кроссворд – кнопки заработают
- чтобы при случайном щелчке мыши по слайду не происходила смена слайда, снимите галочку смены слайда по щелчку
- лучше сохраните кроссворд в виде демонстрации PPT (файл – сохранить как – тип файла - демонстрация PPT – (это для учащихся они ничего не смогут испортить в коде, у Вас конечно останется еще и обычный файл презентации, где можно все править)








ЗАКЛЮЧЕНИЕ

Сейчас можно запустить и проверить действие нашего «живого» кроссворда – все должно работать

К ресурсу приложена эта презентация с кроссвордом (+ демонстрация), откройте ее и посмотрите функционирование, а также коды кнопок (делаете двойной щелчок по кнопке - и видите в редакторе ее код)

Конечно, затраты времени велики, но другого алгоритма, который бы обрабатывал десятки ситуаций и сотню боксов, и в то же время был в несколько раз короче, скорее всего нет или он очень мудреный (











1

2

3



15