-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrequirements.yml
131 lines (131 loc) · 14.2 KB
/
requirements.yml
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
---
functional:
- Пользователь должен иметь возможность зарегистрироваться на сайте.
- Поле ‘Nickname’ не может быть пустым, должно содержать от 3 до 16 символов
и начинаться с латинской буквы, может иметь в составе цифры и подчеркивания.
- Поле ‘Email’ не может быть пустым.
- Поле ‘Password’ не может быть пустым и должно содержать от 6 до 16 символов.
- Поле ‘Password Confirmation’ не может быть пустым и должно быть равным
значению в поле ‘Password’.
- Если на сайте уже есть пользователь с таким же именем или паролем, должно
выйти сообщение об этом и регистрация не пройдет.
- Пользователь должен иметь возможность авторизоваться на сайте по имеющемуся
логину и паролю, а так же выйти из своего аккаунта.
- Пользователь должен иметь возможность восстановить свой пароль.
- Пользователь должен иметь возможность зарегистрироваться через аккаунт на
Github и Discord.
- Пользователь должен иметь возможность попробовать игру без регистрации на
сайте.
- На главной странице авторизованного пользователя должны быть шапка, подвал,
блок с таблицей игроков (с отображением данных об играх), блок создания игры,
общий чат, игроки онлайн и таблица лидеров.
- В подвале авторизованного пользователя слева должна отображаться форма
собственности компании Hexlet, а справа - версия сайта с датой и данные о
посещаемости сообщества Hexlet.
- В таблице лидеров должны отображаться лидеры за неделю, месяц и все время по
рейтингу от большего к меньшему
- В общем чате на главной странице можно написать сообщение всем пользователям
или лично любому игроку, находящемуся онлайн
- Сайт должен быть на английском языке и иметь возможность прочитать задание
игры на русском.
- В шапке сайта авторизованного пользователя в левом углу должен быть логотип
сайта, а в правом - количество игроков онлайн, значок приглашений и кнопка
входа в личный профиль.
- При нажатии на логотип сайта, должна открываться главная страница сайта
- На кнопке личного профиля должны отображаться имя пользователя, рейтинг и
аватар пользователя или заменяющий его значок.
- В личном профиле должны быть следующие разделы - My Profile, Settings, Users
rating, Tasks, Tournaments.
- В разделе ‘My profile’ должны быть 2 вкладки – ‘Statistics’и ‘Completed games’.
Во вкладке ‘Statistics’ отображаются личные данные пользователя - логотип, язык
программирования, дата присоединения к проекту, общая статистика активности,
данные о пройденных играх и их общее количество. Во вкладке ‘Completed games’
отображаются все игры, в которых принимал участие игрок, а так же уровень игры,
соперник и дата поединка.
- В настройках пользователь должен иметь возможность изменить имя, язык
программирования, клан, а так же режим и уровень громкости.
- В разделе ‘Users rating’ должна отображаться таблица рейтинга игроков с
постраничным выводом и возможностью менять количество строк на странице, а
так же с возможностью перехода в начало и конец списка. Должно отображаться
общее количество игроков. Рейтинг должен отображаться за неделю, месяц и все
время В таблице должно быть имя игрока, номер места в рейтинге и ссылка
на профиль на Github игрока, если он привязан. Должна быть фильтрация по
убыванию и возврастанию у значений в столбцах (Rank, Reting, Games played,
Joined). Должен быть отдельный фильтр, добавляющий в таблицу игры с ботом и
фильтр поиска по ‘Username’.
- В разделе ‘Tasks’ должна отображаться таблица со всеми созданными
пользователями заданиями и данными о пользователе и задании. Пользователь
должен иметь возможность создать новое задание для игры, а так же открыть для
просмотра уже созданное.
- В разделе ‘Tournaments’ должна отображаться таблица турниров с названием
турнира, его типом, уровнем сложности, статусом и датой начала. Должна быть
ссылка на страницу, где можно прочитать подробное его описание и
присоединиться к турниру, а так же участвовать в общем чате турнира.
- На сайте авторизованного пользователя должна быть ссылка ‘SourceCode’, которая
приводит на страницу проекта в Github, где можно завести отчет об ошибке или
предложить какую-либо новую функциональность, а так же посмотреть или
проверить то, что уже было заведено другими пользователями.
- Должны быть ссылки на главную страницу сайта Hexlet, а так же ссылки на
присоединение к общему чату игроков в Telegram и Discord.
- На главной странице авторизованного пользователя должны быть 3 вкладки -
Lobby, Tournaments, History.
- В “Lobby’ отображается таблица текущих игр и приглашений в игру другими
пользователями.
- В ‘Tournaments’ отображаются текущие и прошедшие турниры с возможностью зайти
в них и просмотреть информацию о турнире или присоединиться к предстоящему. На
этой странице расположен блок создания нового турнира.
- В ‘History’ хранится история всех прошедших игр.
- Доступ к просмотру подробной информации о прошедших играх и турнирах, а так же
тестирование собственных заданий должны быть только для премиум подписчиков.
- Пользователь должен иметь возможность играть с другим пользователем, другом
или ботом.
- При подключении к игре с другим пользователем, пользователь находится в режиме
ожидания второго игрока. Игра высвечивается как "доступная для подключения" у
других пользователей. Второй пользователь нажимает "Connect to game" и обоих
перебрасывает в игру.
- На сайте должна быть предоставлена возможность двум игрокам соревноваться друг
с другом в решении задач и видеть написание своего кода в редакторе слева, а с
кодом соперника справа в режиме онлайн.
- Во время игры должен отображаться таймер убывания времени игры, имена игроков
и счет (после окончания игры или если игра повторяется неоднократно). Наверху
должен находиться таймер игры, ниже – задание, справа – чат, в котором можно
общаться с соперником и другими зрителями.
- Во время игры любой игрок может поменять язык программирования на другой.
- В любой игре должна быть кнопка ‘Show guide’, нажатие на которую, расскажет и
покажет все поля, обозначения и кнопки. При запуске игры, guide должен
появиться автоматически.
- При создании игры, должны быть 4 уровня сложности; выбор игры с другим
пользователем, с другом или ботом; установка лимита времени на игру, а так же
выбор задания (любого задания из выпадающего списка, рандомный выбор и по
тегам).
- Каждый игрок должен иметь кнопку "Run" для проверки своего решения. Попыток
проверки - не ограничено. Когда при проверке кода окажется, что решение
правильное, игра считается законченной в пользу этого игрока. Должна быть
кнопка "Give up", нажатие на которую до окончания времени игры, приравнивается
к проигрышу. Должна быть кнопка сброса написанного кода.
- Когда один из игроков находит верное решение, обоим игрокам высвечивается
модальное окно, в котором написано, кто является победителем этой игры.
- После окончания игры игрок может выйти из игры по нажатию кнопки "Back to
home". Кнопка "Run" у победителя будет более неактивна, но он может остаться и
посмотреть ещё раз на свой код. Соперник тоже может выйти, а может доиграть до
конца.
- После окончания игры должна быть возможность сыграть эту же игру заново или
вернуться на главную страницу.
- Когда оба игрока вышли, игра считается полностью законченной и попадает в
раздел History.
- Сайт должен иметь мобильную версию.
- Сайт нужно протестировать на совместимость с последними версиями браузеров.
- Любой желающий должен иметь возможность зайти в запущенную игру в качестве
зрителя. Чтобы следить за открытыми играми без посещения сайта, можно
установить расширение для Chrome.
non-functional:
- Сайт должен быть разработан с учетом удобства использования и оптимизирован
для скорости работы.
- Сайт должен быть безопасным и защищать данные пользователя.
- Сайт должен быть удобным на мобильном устройстве.
- Важно, чтобы сайт мог обрабатывать большое количество трафика (например,
1000 одновременных пользователей).
- Сайт нужно протестировать на совместимость с последними версиями браузеров.
implisit:
- Пользователь не должен иметь возможность редактировать данные (кроме личных
настроек) на сайте.