Разработка методического указания по информатике для 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 - ов













ШАГ 2



Сейчас открываем MS PPT и создаем там такую же таблицу ( с номерами)

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

( При необходимости, щелкнув правой кнопкой по боксу и выбрав СВОЙСТВА, можно изменить размер и цвет шрифта)


Дальше нам надо поместить на слайд еще 13 боксов – ведь в нашем кроссворде 14 букв

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


Итак, боксы под буквы созданы, и они находятся точно на своих местах согласно таблицы.

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


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





[pic]



ШАГ 3


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


- проверить

- очистить

- выход

Их также берем с панели ЭЛЕМЕНТЫ УПРАВЛЕНИЯ и помещаем на слайд

Щелкнув правой по каждой кнопке и выбрав СВОЙСТВА, зададим нужный размер и цвет шрифта и фон кнопки

Изменим надписи на кнопках на нужные: Правой – Объект CommandButtonEdit


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


[pic]



ШАГ 4


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


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










Оно занимает боксы 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




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

[pic]

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)


Это проверка всех боксов:

Е [pic] сли бокс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 не трогаем – в нем буква «р» от слова «архимед»

[pic]

Else


TextBox2.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

TextBox5.Text = ""


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


[pic]

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




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











Алгоритм примерно такой же, только букв (и боксов) не 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. Слово «архимед» не угадано – тогда, если слово герц и тесла до этого было угадано, то чистим все, кроме боксов 4 и 10 (там буквы от угаданных слов)

  3. Слово «архимед» не угадано – тогда, если только слово тесла было до этого угадано, то чистим все, кроме бокса 10

  4. Слово «архимед» не угадано – тогда, если только слово герц было до этого угадано, то чистим все, кроме бокса 4

  5. Иначе ( ничего не угадано), то чистим все боксы 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


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

[pic]

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)


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




Else

If (TextBox5.Text = "ц") And (TextBox11.Text = "с") Then

TextBox1.Text = ""

TextBox6.Text = ""

TextBox7.Text = ""

TextBox8.Text = ""

TextBox14.Text = ""

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










Else

If (TextBox5.Text = "ц") Then

TextBox1.Text = ""

TextBox6.Text = ""

TextBox7.Text = ""

TextBox8.Text = ""

TextBox10.Text = ""

TextBox14.Text = ""


И [pic] наче (слово архимед не угадано, но до этого угадано слово герц ) – то чистим боксы 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 не трогаем – там буквы от угаданного слова тесла



[pic]



TextBox1.Text = ""

TextBox4.Text = ""

TextBox6.Text = ""

TextBox7.Text = ""

TextBox8.Text = ""

TextBox10.Text = ""

TextBox14.Text = ""

End If

End If

End If

End If


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

[pic]



Заметьте:

Если слово пересекается с одним словом – то надо описывать 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


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



[pic] [pic]





ШАГ 7



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


И еще:

- очень важно! Кроссворд содержит команды (макросы), поэтому при его запуске кнопки могут не работать – система безопасности Вашего MS PPT блокирует запуск макросов (исполнение кода)

Что сделать: открыть MS PPT, зайти МЕНЮ – СЕРВИС – МАКРОС – БЕЗОПАСНОСТЬ и установить низкий уровень безопасности, затем закрыть PPT и запустить кроссворд – кнопки заработают

- чтобы при случайном щелчке мыши по слайду не происходила смена слайда, снимите галочку смены слайда по щелчку

- лучше сохраните кроссворд в виде демонстрации PPT (файл – сохранить как – тип файла - демонстрация PPT – (это для учащихся они ничего не смогут испортить в коде, у Вас конечно останется еще и обычный файл презентации, где можно все править)








ЗАКЛЮЧЕНИЕ


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


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


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