forked from drsalnikov/ecmascript-hackathon-guessmelody
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspecification.html
85 lines (78 loc) · 11.3 KB
/
specification.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<ul>
<li>Название сайта: <b>Угадай мелодию</b>.</li>
<li>Описание: Угадай мелодию — это онлайн-игра, в которой игроку нужно угадывать исполнителей, названия и жанры определённых мелодий.</li>
</ul>
<hr>
<h3 class="m-t-2 m-b-2">Описание функциональности</h3>
<h4 class="m-t-2 m-b-2">1. Экраны приложения</h4>
<ul>
<li id="guess-melody-1-1"><a href="#guess-melody-1-1">1.1.</a> Приложение состоит из нескольких последовательно переключающихся экранов. В ходе игры пользователь переходит от первого экрана к последнему.</li>
<li id="guess-melody-1-2"><a href="#guess-melody-1-2">1.2.</a> Часть экранов отвечает за игровой процесс: экран начала игры и экран игрового шага.</li>
<li id="guess-melody-1-3"><a href="#guess-melody-1-3">1.3.</a> Другая часть экранов отвечает за вспомогательные сценарии, такие как сравнение результатов игрока с его предыдущими играми.</li>
</ul>
<h4 class="m-t-2 m-b-2" id="guess-melody-2">2. Приветственный экран</h4>
<ul>
<li id="guess-melody-2-1"><a href="#guess-melody-2-1">2.1.</a> На приветственном экране показываются правила игры и кнопка старт для начала новой игры.</li>
</ul>
<h5 class="m-l-2">Дополнительно</h5>
<ul>
<li id="guess-melody-2-2"><a href="#guess-melody-2-2">2.2.</a> Сначала должны загрузиться все аудиофайлы, которые будут проиграны в процессе игры. В течение загрузки аудиофайлов пользователь видит приветственный экран без возможности начать игру.</li>
<li id="guess-melody-2-3"><a href="#guess-melody-2-3">2.3.</a> После завершения загрузки всех файлов, пользователю показывается кнопка начала игры.</li>
<li id="guess-melody-2-4"><a href="#guess-melody-2-4">2.4.</a> Вид прелоадера можете реализовать по собственному желанию от крутящейся стрелки, до заблокированной кнопки.</li>
<li id="guess-melody-2-5"><a href="#guess-melody-2-5">2.5.</a> Если во время загрузки игры, статистики или мелодий возникают ошибки, то эти ошибки отображаются в специальном окне с ошибками.</li>
</ul>
<h4 class="m-t-2 m-b-2">3. Игровые экраны</h4>
<ul>
<li id="guess-melody-3-1"><a href="#guess-melody-3-1">3.1.</a> В течение игры пользователь видит поочерёдно 10 игровых экранов.</li>
<li id="guess-melody-3-2"><a href="#guess-melody-3-2">3.2.</a> По ходу игры пользователю нужно ответить на все предложенные вопросы. При этом даётся возможность ошибиться два раза.</li>
<li id="guess-melody-3-3"><a href="#guess-melody-3-3">3.3.</a> При каждой ошибке в верхнем правом углу высвечивается красная нота.</li>
<li id="guess-melody-3-4"><a href="#guess-melody-3-4">3.4.</a> Если игрок ошибается третий раз, ему засчитывается поражение и он перемещается на экран с результатами.</li>
<li id="guess-melody-3-5"><a href="#guess-melody-3-5">3.5.</a> На прохождение всей игры пользователю отводится пять минут. Оставшееся до конца игры время показывается в индикаторе обратного отсчёта: таймер с цифрами.</li>
<li id="guess-melody-3-5-1"><a href="#guess-melody-3-5-1">3.5.1.</a> Игровое время идёт непрерывно и не зависит от того воспроизводится сейчас какой-либо трек или нет.</li>
<li id="guess-melody-3-5-2"><a href="#guess-melody-3-5-2">3.5.2.</a> Если игрок не успевает ответить на все вопросы за отведённое время, ему засчитывается поражение.</li>
<li id="guess-melody-3-5-3"><a href="#guess-melody-3-5-3">3.5.3.</a> Когда осталось менее 30 секунд таймер должен начать мигать красным цветом.</li>
<li id="guess-melody-3-6"><a href="#guess-melody-3-6">3.6.</a> В левом верхнем углу экрана появляется ссылка на <a href="#guess-melody-2">приветственный экран</a>. Нажатие на эту ссылку возвращает пользователя на этот экран. При нажатии на эту ссылку, пользователю сначала показывается диалоговое окно с предупреждением, что вся его игра будет потеряна.</li>
</ul>
<h5 class="m-l-2">Виды игровых экранов</h5>
<ul>
<li id="guess-melody-3-7"><a href="#guess-melody-3-7">3.7.</a> <b>Выбор исполнителя:</b>
<ul>
<li>При переходе на этот экран композиция начинает проигрываться автоматически.</li>
<li>Пользователю предлагается выбрать одного исполнителя из нескольких предложенных вариантов.</li>
</ul>
</li>
<li id="guess-melody-3-8"><a href="#guess-melody-3-8">3.8.</a> <b>Выбор всех песен определённого жанра:</b>
<ul>
<li>При переходе на этот экран первая композиция начинает проигрываться автоматически.</li>
<li>В этом режиме пользователю даётся четыре композиции, каждую из которых можно запустить самостоятельно.</li>
<li>Среди предложенных песен нужно выбрать только те, которые относятся к определённому жанру.</li>
<li>В каждый момент времени может играть не более одной композиции.</li>
<li>Правильный ответ засчитывается только в случае, когда пользователь правильно выбрал все композиции.</li>
<li>Если он допускает хотя бы одну ошибку, ответ считается неправильным.</li>
</ul>
</li>
</ul>
<h5 class="m-l-2">Дополнительно</h5>
<ul>
<li id="guess-melody-3-10"><a href="#guess-melody-3-10">3.10.</a> Реализовать индикацию времени при помощи круглого индикатора отсчёта времени. В базовом варианте игры время показывается только при помощи таймера с цифрами, добавьте к нему индикацию при помощи круглой бегущей полосы вокруг экрана с вопросами.</li>
<li id="guess-melody-3-11"><a href="#guess-melody-3-11">3.11.</a> Реализуйте механизм отладки. Таким образом, что открыв приложение в режиме отладки можно увидеть визуально правильные ответы, чтобы было проще проверять работу приложения.</li>
</ul>
<h4 class="m-t-2 m-b-2">4. Экран с результатами</h4>
<ul>
<li id="guess-melody-4-1"><a href="#guess-melody-4-1">4.1.</a> После прохождения игры пользователю показывается экран с результатами игры с сообщением об успехе или проигрыше и предложением сыграть ещё раз.</li>
<li id="guess-melody-4-2"><a href="#guess-melody-4-2">4.2.</a> При нажатии на кнопку <code>Попробовать ещё раз</code> пользователь сразу попадает на первый вопрос с тем же набором вопросов, что и в прошлый раз.</li>
<li id="guess-melody-4-3"><a href="#guess-melody-4-3">4.3.</a> За каждый из ответов игроку начисляются баллы: за правильный ответ 1 балл, за быстрый правильный ответ (менее 30 секунд) — 2 балла. За каждую совершённую ошибку вычитается 2 балла. Количество баллов показывается в конце игры.</li>
<li id="guess-melody-4-4"><a href="#guess-melody-4-4">4.4.</a> В случае успеха, игроку показывается статистика: какое место в рейтинге он занял и насколько его результат лучше результатов других игроков. Статистика показывается в виде фразы <i>Вы заняли 2 место из 10. Это лучше чем у 80% игроков</i>. Результат игрока рассчитывается следующим образом:
<ul>
<li>результат игрока добавляется в список результатов;</li>
<li>список сортируется по убыванию количества набранных очков;</li>
<li>определяется позиция результата игрока в списке;</li>
<li>за n берётся процент, который составляет количество результатов, идущих за результатом игрока в списке. Например, если игрок показал второй лучший результат из десяти, <code>n</code> будет равным 80%.</li>
</ul>
</li>
<li id="guess-melody-4-5"><a href="#guess-melody-4-5">4.5.</a> В конце игры результаты пользователя отправляются на сервер для синхронизации с данными других пользователей.</li>
</ul>
<h5 class="m-l-2">Дополнительно</h5>
<ul>
<li id="guess-melody-4-6"><a href="#guess-melody-4-6">4.6.</a> Реализуйте правильную форму склонения существительных: <i>за 1 минут<b>у</b></i>, <i>за 2 минут<b>ы</b></i>, <i>за 25 секунд</i>, <i>1 ошиб<b>ку</b></i>, <i>5 ошиб<b>ок</b></i> и т.д.</li>
</ul>