13 Окт 2010

В разделе PowerPoint

PowerPoint: Сохранение очков при создании викторины в PowerPoint

PowerPoint: Сохранение очков при создании викторины в PowerPoint

PowerPoint часто используют для создания разного рода тестов и викторин. Однако слабым местом всех таких тестов является тот факт, что PowerPoint «не умеет» подсчитывать очки, «забывая», какой выбор сделал студент на предыдущем слайде. Однако стоит вспомнить, что все программы из пакета Microsoft Office работают в связке с мощнейшим Visual Basic for Applications, возможности которого вполне можно использовать и для подсчета очков в викторине. При этом при грамотном подходе вам совсем не обязательно вникать во все премудрости написания программ на Visual Basic — просто воспринимайте код, который вы увидите на этой странице за «черный ящик» и выполняйте инструкции. Из программирования нужно знать только, что для каждого важного для вашего сценария  события, такого, как  щелчок мышкой по ответу, нужно создать процедуру. В Visual Basic  процедура всегда начинается со слов  Sub Name() и заканчивается End Sub

У вас все получится!

В принципе, процесс состоит из двух шагов:

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

Один из наших других статусом MVP (Shyam) имеет все виды отличные образцы VBA и надстройки, которые помогут вам, когда вы готовы вникать в VBA. Сайт ссылка: http://www.mvps.org/skp/index.html

Вот простой макрос, который позволяет переименовать все объекты:

Sub NameShape()
Dim Name$
On Error GoTo AbortNameShape
If ActiveWindow.Selection.ShapeRange.Count = 0 Then
MsgBox "No Shapes Selected"
Exit Sub
End If
Name$ = ActiveWindow.Selection.ShapeRange(1).Name
Name$ = InputBox$("Give this shape a name", "Shape Name", Name$)
If Name$ <> "" Then
ActiveWindow.Selection.ShapeRange(1).Name = Name$
End If
Exit Sub
AbortNameShape:
MsgBox Err.Description
End Sub

В PowerPoint создайте новый макрос (на вкладке «Вид» нажимаете кнопку «макросы», пишете имя нового макроса (можно написать любое — его потом  заменим) и нажимаете «создать»:

использование макросов для подсчета очков в Powerpoint

В открывшемся окне VBA просто заменяете текст, который там был на код, напечатанный выше.

макросы microsoft office powerpoint подсчет очков

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

Dim intScore1 As Integer Dim intScore2 As Integer Dim intScore3 As Integer

Переменные объявляются при помощи ключевого слова Dim и записываются эти инструкции ДО начала всех процедур.

3. Третьим  важным моментом является создание  в презентации   макроса, который добавляет заработанные очки в требуемую переменную.   Что-то вроде такого:

Sub Player1Correct100 ()
intScore1 = intScore1 + 100
End Sub

4. Теперь необходимо вывести суммарное количество очков, которое заработал данный игрок. Напомню, что очки первого игрока хранятся в переменной intScore1.   Например, если вы создали  прямоугольник в качестве «экрана» для подсчета очков для данного игрока на слайде 3, и назвали его Player1Score (это легко сделать при помощи макроса  NameShape), то для того, чтобы вывести в нем количество очков, которое хранится в переменной  intScore1, нужно написать примерно такой код:

ActivePresentation.Slides(3).Shapes("Player1Score").TextFrame.TextRange.Text = intScore1

5. Теперь осталось объединить все, что мы описали. Вначале я объявил переменную (клчевое слово Dim). Она должна быть видимой всем процедурам, чтобы на каждом слайде мы могли добавлять (или убавлять очки. Поэтому она записана в первой строке, еще до того, как начинается описание всех процедур.

Затем идет простенькая процедура, которая должна сработать, когда игрок выбирает правильный ответ. При этом в объекте по имени Player1Score на слайде №3 количество очков увеличится на 100. Вторая процедура аналогично при неправильном ответе уменьшает количество очков на 100.

Dim intScore1 As Integer
Sub Player1Correct100()

intScore1 = intScore1 + 100

ActivePresentation.Slides(3).Shapes("Player1Score").TextFrame.TextRange.Text = intScore1
End Sub

Sub Player1InCorrect100()

intScore1 = intScore1 — 100

ActivePresentation.Slides(3).Shapes("Player1Score").TextFrame.TextRange.Text = intScore1
End Sub

6. Осталось только "привязать" эти процедуры к объектам, содержащим правильный и неправильный ответ. Для того, чтобы по щелчку мышкой по объекту срабатывала процедура надо, выделив нужный объект, на вкладке "вставка" выбрать "действие" и настроить запуск нужного макроса:
макрос powerpoint
Вот и все. Можно немного усовершенствовать викторину, добавив обнуление очков при старте, но это уже несложно сделать самостоятельно.
Удачи вам в освоении Powerpoint!
Метки:, ,

,