Тренинг для работы с мышкой

advertisement
Московский автомобильно-дорожный институт
(государственный технический университет)
XVII Научно-практическая конференция школьников МЦАДО
Тренинг для компьютерной мыши
(секция «Информатика»)
Автор: Кирюшин Дима,
лицей №1550, 11 класс
Руководитель: Воробьева В.В., Дружерукова Л.В.
Москва
2011г.
2
Содержание
Содержание .............................................................................................................. 2
Введение ................................................................................................................... 3
Интерфейс программы ............................................................................................ 4
Описание процесса игры ........................................................................................ 5
Начало игры.......................................................................................................... 5
Объекты, участвующие в игре........................................................................... 6
Игра с легким уровнем сложности ........................................................................ 7
Первый уровень игры .......................................................................................... 7
Основные отличия всех уровней игры .............................................................. 8
Второй уровень игры ........................................................................................... 8
Четвертый уровень игры: .................................................................................... 9
Методы тренировки владения компьютерной мышью ..................................... 10
с легким уровнем сложности ............................................................................ 10
со средним и тяжелым уровнем сложности .................................................... 10
Особенности игры ................................................................................................. 11
Основные процедуры и функции ........................................................................ 12
3
Введение
Моя программа позволяет обучать как новых пользователей, которые
никогда не работали с компьютером, так и умелых пользователей, которые
могут проверить свои навыки и по возможности улучшить их.
Наше
общество
с
компьютеризированным.
каждым
Людям
днем
все
чаще
становится
все
более
приходится
работать
за
компьютером. Но есть такие люди, которые по неким причинам не хотят
работать за компьютером. В основном это пожилые жители городов и
жители отдаленных поселков и деревень. В возрасте трудно учиться чему-то
новому, особенно когда это «новое» кажется таким трудным и непонятным.
По этому я решил создать свою программу. Почему же я решил создать
программу обучающую работать с компьютерной мышью, а не работать на
клавиатуре или же работать с интерфейсом программного обеспечения
компьютера, спросите вы. По тому, что я считаю, что работа с мышью это
основа основ работы на компьютере и именно от владения компьютерной
мышью зависит скорость последующего обучения пользователя.
Мой проект построен на принципе игры, чтобы привлечь внимание
(заинтересовать) новых пользователей не нагружая их информацией, которая
им сейчас не нужна, давая только основные навыки владения компьютерной
мышью.
И, конечно же, чтобы привлечь внимание пользователей умеющих работать с
компьютером, ведь они скорее предпочтут провести время за игрой, а не за
тестом, чтобы узнать, на что они способны.
4
Интерфейс программы
 Текстовое меню
Текстовое меню включает в себя «Новая игра», «Опции», «Об игре»,
«Выйти».
 Поле голубого цвета
Это игровое поле, в котором будут располагаться различные объекты во
время игры.
 Меню результатов и настроек
 Меню результатов:
-Уровень игры
-Выбранный уровень сложности
-Подсказки
 Меню настроек включает в себя:
-Частоту изменения направления и скорости движения каждые N
секунд
-Среднюю скорость движения: N
-Количество вызываемых кубиков: N
-Сохранение настроек при новой игре: да/нет
5
 Поля попаданий и промахов
Здесь отображаются попадания и промахи игрока во время игры. В начале
каждого нового уровня (и новой игры) эти параметры обнуляются. В конце
игры выводится общая статистика промахов и попаданий за все пройденные
уровни.
 Клавиша «Пауза»
Приостанавливает игру до ее возобновления повторным нажатием на
клавишу.
 Поле жизней базы и поля отображения состояния защитных
кубиков
Здесь отображается состояние жизней базы (от 0 до 3) и положение
защитных кубиков (активное/неактивное).
Описание процесса игры
Целью игры является защита базы игрока от ударов по ней вражеских
кубиков и уничтожение этих кубиков.
Защита осуществляется путем постановки на пути движущихся кубиков
своих (защитных) кубиков. Уничтожение вражеских кубиков осуществляется
путем клика по ним.
Начало игры
Начнем новую игру, нажав на «Новая игра» в текстовом меню.
Нам представлен выбор из трех уровней сложности и свободной игры.
В каждом уровне сложности имеется по пять уровней игры.
6
Объекты, участвующие в игре:
 Вражеские кубики
Эти кубики зеленого цвета двигаются по полю. Получают повреждения при
клике по ним (левая клавиша мыши). После получения некоторого
количества повреждений - разрушаются (количество повреждений нужных
для разрушения варьируется в зависимости от уровня сложности и от уровня
игры).
 Стационарные кубики
Эти кубики серого цвета случайным образом и в разном количестве
появляются в начале каждого уровня (могут не появиться вообще). Они не
могут быть уничтожены.
 Защитные кубики
Используются для защиты базы от ударов по ней вражеских кубиков.
Вызываются игроком (правая клавиша мыши). Их ограниченное количество
(количество защитных кубиков варьируется от 3 до 5 в зависимости от
уровня сложности и от уровня игры). Имеют 3 жизни. После удара по ним
вражеского кубика или клика игрока теряют 1 жизнь.
Когда количество жизней кубика равно нулю он разрушается. После
разрушения кубика его можно сразу вызвать (и у него опять будет 3 жизни).
 База
Прямоугольник красного цвета. У базы 3 жизни. После удара по ней
вражеским кубиком у неё теряется 1 жизнь. Когда количество жизней базы
равно нулю - игра заканчивается.
7
Игра с легким уровнем сложности
Первый уровень игры
На первом уровне игры мы видим один кубик, который начал двигаться.
Теперь игрок должен разрушить этот кубик, кликая по нему мышью (левая
клавиша мыши). Можно заметить, что после нескольких кликов по кубику
пошли трещины, и чем больше мы кликаем по кубику, тем больше их
становится.
После уничтожения всех вражеских
кубиков на уровне выводится статистика
попаданий и промахов:
После просмотра статистики игрок переходит на следующий уровень, в
нашем случае во второй.
8
Основные отличия всех уровней игры
заключаются:
 в изменениях настроек (скорость движения кубиков, количество
защитных кубиков, частота изменения направления движения
вражеских кубиков)
 в разном количестве движущихся и стационарных кубиков.
Каждый новый уровень игры сложнее предыдущего.
Второй уровень игры
Второй уровень практически не отличается от первого уровня игры, за
исключением того, что участвуют два движущихся кубика.
На третьем уровне игры – увеличивается скорость передвижения кубиков и
количество их жизней.
9
Четвертый уровень игры:
Теперь игроку необходимо использовать защитные кубики (правая клавиша
мыши), чтобы пройти на следующий уровень.
Пройдя все пять уровней мы видим общую статистику.
Свободная игра.
Выбирая свободную игру, игрок уже самостоятельно назначает настройки
игры (скорость движения кубиков, количество защитных кубиков, частота
изменения направления движения вражеских кубиков). Данные настройки
можно менять во время игры, но количество вражеских кубиков назначается
до начала игры.
10
Методы тренировки владения компьютерной мышью
с легким уровнем сложности
1) Слежение
Игрок следит за объектом (движущимся кубиком) и ведет за ним мышку, тем
самым учится равномерно передвигать мышь.
2) Отработка клика мышью, как левой так и правой клавишей мыши
Основная работа ложится на левую клавишу мыши, а вспомогательная на
правую. Это сделано специально для того, чтобы игрок привык к тому, что
левая клавиша мыши является основной, а правая вспомогательной.
3) Отработка работы с мышью
За счет ведения курсора мыши за движущимся объектом
со средним и тяжелым уровнем сложности
1) Слежение и реакция
Ведение курсора мыши за объектом, обычно быстро движущимся и часто
изменяющим траекторию движения, что позволяет улучшить навыки реакции
и слежения.
2) Отработка клика мышью, как левой так и правой клавишей мыши
Основная работа ложится на левую клавишу мыши, а вспомогательная на
правую. Это сделано специально для того, чтобы игрок привык к тому, что
левая клавиша мыши является основной, а правая вспомогательной.
3) Отработка скорости работы с мышью
За счет ведения курсора мыши за быстро движущимся объектом.
4) Машинальная работа с мышью
Отрабатывается за счет того, что игроку приходится отрываться от
уничтожения вражеских кубиков, чтобы поставить защиту. Обычно, игрок
производит это действие уже машинально, не следя за курсором мыши во
время его движения, это можно назвать профессиональным владением мыши
(когда пользователь смотрит на начальное положение мыши и на конечное,
куда он хочет передвинуть мышь).
11
Особенности игры
* В игре три уровня сложности, что позволяет обучать как новых пользователей, никогда
не работавших на компьютере, так и умелых пользователей, которые могут проверить
свои навыки и улучшить их.
* В игре имеются 5 уровней, что позволяет растянуть процесс игры на несколько частей и
увеличивать сложность постепенно.
* Основная работа ложится на левую клавишу мыши, а вспомогательная на правую. Это
сделано специально для того, чтобы игрок привык к тому, что левая клавиша мыши
является основной, а правая вспомогательной.
* Каждый клик мыши фиксируется, если игрок кликает по вражескому кубику ему
засчитывается попадание, если он промахивается (кликает по голубому полю) ему
засчитывается промах.
* Статистика, которая выводится после прохождения каждого уровня и общая статистика,
которая выводится в конце игры, служат для того, чтобы пользователь мог посмотреть
свои навыки владения компьютерной мышью и наглядно увидеть результат тренировок,
сравнив начальные результаты и конечные.
* Есть возможность отслеживать каждый N клик (который можно выбрать самому). При
каждом N клике будет выводиться статистика.
* От уровня сложности и уровня игры зависит количество вражеских кубиков, их
здоровье, скорость их передвижения, частота изменения направления движения,
количество защитных и стационарных кубиков.
* Каждый раз вражеские кубики появляются в разных местах и движутся в разных
направлениях, так же появляется разное количество стационарных кубиков и тоже в
разных местах, что позволяет сделать каждый уровень неповторимым.
* Система повреждений вражеских кубиков позволяет оценивать степень их разрушения.
Каждый кубик имеет по 3 уровня повреждения: незначительное, среднее, сильное. Их
легко различить по размерам трещин появляющихся на кубике.
* Перед началом игры есть пауза в 1 секунду, для того чтобы пользователь мог
сориентироваться (в это время можно ставить защитные кубики, но клик по вражескому
кубику эффекта не даст).
* Пауза, позволяет приостановить игру на какое-то время, что бы потом можно было ее
продолжить.
* Периодически выводятся подсказки, которые могут помочь игроку.
12
Основные процедуры и функции
Основная форма
Private Sub Form_Load()
kkl = 10
Randomize
q = 100
vON_Click
ReDim RazlPovr(kkl - 1)
RazlPovrRND = 2
item(0).Move 1000, 1000
For asd = 1 To 6
Load item(asd)
item(asd).Move 1000, 1000
item(asd).Visible = True
Next
mBOX(0).Picture = LoadPicture(App.Path
& "\hpBOX.gif")
mBOXmask(0).Picture =
LoadPicture(App.Path &
"\hpBOXmask.gif")
For asdd = 1 To kkl - 1
Load mBOX(asdd)
Load mBOXmask(asdd)
mBOX(asdd).Move 1000, 1000
mBOXmask(asdd).Move 1000, 1000
mBOX(asdd).Picture =
LoadPicture(App.Path & "\hpBOX.gif")
mBOXmask(asdd).Picture =
LoadPicture(App.Path &
"\hpBOXmask.gif")
Next
For asdf = 1 To 10
Load zgr(asdf)
zgr(asdf).Move 1000, 1000
Next
SIzmMove = 100
sd = 1
kl = 3
ReDim mBoxL(10)
ReDim mBoxT(10)
ReDim hp(10)
'nastr.Enabled = False
nastr.Visible = False
KolPodsk = 15
ReDim Podsk(KolPodsk)
Podsk(1) = "Массив подсказок"
vbNewLine
…..
Podsk(15) = " " & vbNewLine
End Sub
&
13
Private Sub Tim_Timer()
Dim qwL As Integer, qwT As Integer
If payza = False Then
prv = False
lll = lll + 1
If lll = SIzmMove * 3 Then
stMOVE
lll = 0
End If
Pic1.Cls
For kk = 0 To kkl - 1
If HPmBOX(kk) > 0 Then
'mBOX(kk).Move (mBOX(kk).Left +
NDx(kk) * sd), (mBOX(kk).Top + NDy(kk)
* sd)
mBoxL(kk) = (mBoxL(kk) + (NDx(kk) *
sd))
mBoxT(kk) = (mBoxT(kk) + (NDy(kk) *
sd))
xq = mBoxL(kk)
yq = mBoxT(kk)
BitBlt
Pic1.hDC,
xq,
yq,
mBOX(kk).ScaleWidth,
mBOX(kk).ScaleHeight, mBOX(kk).hDC,
0, 0, vbSrcAnd
BitBlt
Pic1.hDC,
xq,
yq,
mBOXmask(kk).ScaleWidth,
mBOXmask(kk).ScaleHeight,
mBOXmask(kk).hDC, 0, 0, vbSrcPaint
'mBoxL() çà ìåñòî mBOX().Left
'mBoxT() çà ìåñòî mBOX().Top
If mBoxL(kk) + mBOX(kk).Width >=
Pic1.ScaleWidth Then
NDx(kk) = -NDx(kk)
mBoxL(kk)
=
Pic1.ScaleWidth
mBOX(kk).Width
End If
If mBoxL(kk) <= 0 Then
NDx(kk) = -NDx(kk)
mBoxL(kk) = 0
End If
If mBoxT(kk) + mBOX(kk).Height >=
Pic1.ScaleHeight Then
NDy(kk) = -NDy(kk)
mBoxT(kk)
=
Pic1.ScaleHeight
mBOX(kk).Height
End If
If mBoxT(kk) <= 0 Then
NDy(kk) = -NDy(kk)
mBoxT(kk) = 0
End If
For ii = kkl - 1 To 0 Step -1
If ii <> kkl Then fiz mBOX, kk, mBOX, ii,
False, True
Next
For i = 0 To kl - 1
fiz mBOX, kk, item, i, True, False
it i
prv = False
Next
For qq = 0 To klzgr - 1
fiz mBOX, kk, zgr, qq, False, False
Next
For nn = 0 To 0
fiz mBOX, kk, Ex, nn, True, False
exx
prv = False
If hpp < 1 Then
Exit Sub
End If
Next
If pp + pr > 0 And vONOFF = True Then
If (pp + pr) Mod q = 0 And rrr Then
abb = abb + q
abc = MsgBox("Попаданий: " & pp & ".
Промахов: " & pr & ".
Процентов
попаданий: " & (pp / (pp + pr)) * 100 &
"%", vbOKOnly, "Вы достигли " & pp + pr
& " клик(ов).")
rrr = False
End If
End If
End If
Next
End If
End Sub
14
Function fiz(fir, aa, sec, bb, Optional gggr As Boolean, Optional brrr As Boolean)
secL = sec(bb).Left
secT = sec(bb).Top
If brrr = True Then
secL = mBoxL(bb)
secT = mBoxT(bb)
End If
'mBoxL() = mBOX().Left (fir().Left)
'mBoxT() = mBOX().Top (fir().Top)
'secL = sec(bb).Left
'secT = sec(bb).Top
If mBoxL(aa) + fir(aa).Width > secL And mBoxL(aa) < secL And (mBoxT(aa) + fir(aa).Height
> secT And mBoxT(aa) < secT + sec(bb).Height) Then
If (mBoxT(aa) < secT And mBoxL(aa) + fir(aa).Width - secL < mBoxT(aa) + fir(aa).Height secT) Or (mBoxT(aa) > secT And mBoxL(aa) + fir(aa).Width - secL < mBoxT(aa) +
fir(aa).Height - secT) Then
napravlen 1, fir, aa, sec, bb
prv = True
End If
End If
If mBoxL(aa) < secL + sec(bb).Width And mBoxL(aa) > secL And (mBoxT(aa) +
fir(aa).Height > secT And mBoxT(aa) < secT + sec(bb).Height) Then
If (mBoxT(aa) < secT And secL + sec(bb).Width - mBoxL(aa) < mBoxT(aa) + fir(aa).Height secT) Or (mBoxT(aa) > secT And secL + sec(bb).Width - mBoxL(aa) < secT + sec(bb).Height mBoxT(aa)) Then
napravlen 2, fir, aa, sec, bb
prv = True
End If
End If
If mBoxT(aa) + fir(aa).Height > secT And mBoxT(aa) < secT And (mBoxL(aa) +
fir(aa).Width > secL And mBoxL(aa) < secL + sec(bb).Width) Then
If (mBoxL(aa) < secL And mBoxL(aa) + fir(aa).Width - secL > mBoxT(aa) + fir(aa).Height secT) Or (mBoxL(aa) > secL And mBoxT(aa) + fir(aa).Height - secT < mBoxL(aa) +
fir(aa).Width - secL) Then
napravlen 3, fir, aa, sec, bb
prv = True
End If
End If
If mBoxT(aa) < secT + sec(bb).Height And mBoxT(aa) > secT And (mBoxL(aa) +
fir(aa).Width > secL And mBoxL(aa) < secL + sec(bb).Width) Then
If (mBoxL(aa) < secL And mBoxL(aa) + fir(aa).Width - secL > secT + sec(bb).Height mBoxT(aa)) Or (mBoxL(aa) > secL And secL + sec(bb).Width - mBoxL(aa) > secT +
sec(bb).Height - mBoxT(aa)) Then
napravlen 4, fir, aa, sec, bb
prv = True
End If
End If
If gggr = False Then
prv = False
End If
End Function
15
Function it(bb)
If prv = True Then
hp(bb) = hp(bb) - 1
If hp(bb) < 1 Then
kol = kol - 1
Ch(bb).Value = 0
item(bb).Move 1000, 1000
Else: item(i).Picture = LoadPicture(App.Path & "\" & hp(bb) & "hp.bmp")
End If
prv = False
End If
End Function
Function exx() As Boolean
If prv = True Then
hpp = hpp - 1
Lbl.Caption = "Жизни: " & hpp
If hpp < 1 Then
exx = False
Tim.Enabled = False
EndGame pp, pr
Exit Function
End If
End If
End Function
Function napravlen(qqq, fir, aa, sec, bb)
Select Case qqq
Case 1
NDx(aa) = -NDx(aa)
mBoxL(aa) = secL - fir(aa).Width
Case 2
NDx(aa) = -NDx(aa)
mBoxL(aa) = secL + sec(bb).Width
Case 3
NDy(aa) = -NDy(aa)
mBoxT(aa) = secT - fir(aa).Height
Case 4
NDy(aa) = -NDy(aa)
mBoxT(aa) = secT + sec(bb).Height
End Select
End Function
Download