{"id":13292196,"url":"https://github.com/ton9q/final-game-mongo","last_synced_at":"2025-03-10T06:34:19.230Z","repository":{"id":34872306,"uuid":"170938704","full_name":"ton9q/final-game-mongo","owner":"ton9q","description":"https://game-js-mongo.herokuapp.com/","archived":false,"fork":false,"pushed_at":"2022-06-01T01:16:17.000Z","size":90814,"stargazers_count":0,"open_issues_count":20,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-03-02T20:46:34.462Z","etag":null,"topics":["audio","browser-game","canvas","css","dom","eslint","express","heroku-deployment","html","javascript","jest","jquery","landing-page","mlab-data-api","modal-dialog","mongoose","requestanimationframe","rolling-scopes-school","server-rendering","webpack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ton9q.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-15T22:51:01.000Z","updated_at":"2020-01-11T22:17:05.000Z","dependencies_parsed_at":"2022-08-08T02:15:19.709Z","dependency_job_id":null,"html_url":"https://github.com/ton9q/final-game-mongo","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ton9q%2Ffinal-game-mongo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ton9q%2Ffinal-game-mongo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ton9q%2Ffinal-game-mongo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ton9q%2Ffinal-game-mongo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ton9q","download_url":"https://codeload.github.com/ton9q/final-game-mongo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242805790,"owners_count":20187996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","browser-game","canvas","css","dom","eslint","express","heroku-deployment","html","javascript","jest","jquery","landing-page","mlab-data-api","modal-dialog","mongoose","requestanimationframe","rolling-scopes-school","server-rendering","webpack"],"created_at":"2024-07-29T17:07:28.992Z","updated_at":"2025-03-10T06:34:14.209Z","avatar_url":"https://github.com/ton9q.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"| Deadline  | Folder name |\n|-----------|-------------|\n| 23:59 08.01.2019 | game |\n\n# Game (JavaScript + HTML or Canvas/WebGl/SVG).\n## Функциональные требования\nВам необходимо сделать упрощенный клон игры https://www.prodigygame.com/  \nПример геймплея: https://www.youtube.com/watch?v=XXUIRnQ4EJ4  \nЦелевая аудитория: дети 6-8 лет.\n\n### Минимальная функциональность:\n  1) Экран дуэли\n  2) Модальный диалог выбора заклинания\n  3) Экран задачи\n  4) Экран таблицы рекордов\n  \n### Пример геймплея по шагам:\n1. Битва начинается, у игрока и монстра по 100hp или более.\n2. Игрок выбирает заклинание первым. Выбор заклинания осуществляется посредством модального диалога. Название и последующая анимация заклинаний - на ваше усмотрение. Виды заклинаний также на ваше усмотрение - могут, как наносить урон, так и лечить. \n3. Игрок переходит к экрану задачи. В случае успешного решения - заклинание применяется, иначе - переход хода к монстру. \n4. Монстр применяет заклинание, наносит урон игроку.\n5. Если игрок победил - битва со следующим монстром. Если проиграл - показывается таблица рекордов, с количеством побежденных монстров и именем героя. \n\n### Варианты экрана \"задача\":\n 1) Решение базовых арифметических примеров. В данном случае генерируется случайная пара чисел и случайная операция с ними.  Например, 25 + 67 или 130 - 7, или 7 x 11 и т.д.\n 2) Перевод с анлийского на русский. В данном случае игрок видит случайное английское слово (например, \"cat\") и должен ввести перевод. Правильных переводов может быть несколько (кот, кошка, котик и т.д.) Словарь должен находится в отдельном файле и легко конфигурироваться. Админку управления словарем делать не надо.  \n 3) Буквы слова перемешаны, необходимо, используя drag\u0026drop, восстановить порядок. Например, lleyow -\u003e yellow. Пример интерфейса - https://jqueryui.com/sortable/\n 4) Аудирование. https://mdn.github.io/web-speech-api/speak-easy-synthesis/ Произносится слово, необходимо его вписать.\n 5) Balloon Burst. Геймплей можно посмотереть https://learnenglishkids.britishcouncil.org/en/tricky-words/strong-angry-king развернул вкладку Game \n 5) Любые другие\n \n### Монстры:\n1) Автогенеренное имя. Имя получается путем слияния элементов из трех массивов. \n   В первом массиве прилагательное - \"ужасный\", \"злобный\", \"сопливый\" и т.д. \n   Во втором - \"Огр\", \"Гном\", \"Гоблин\" и т.д.\n   В третьем - \"Том\", \"Макс\", \"Дима\" и т.д.\n   В итоге - \"Злобный Огр Том\"\n 2) Автогенеренное тело - \"из частей\". Вы определяете несколько \"голов\", \"туловищ\", \"ног\", \"оружия\", из которых собирается итоговый монстр. \n Пример - https://drive.google.com/open?id=12TYpEwRPKjwkC3Q61aAqmxL8wsbVw6pP\n \n ### Примеры работ студентов прошлого набора\n- https://yanaselin.github.io/cyrodiil-ways/\n- https://anton-yatskevich.github.io/stickman-warriors-game/dist/\n- http://rini.surge.sh/\n- https://olegkoleda.github.io/epicgame/\n \n## Технические требования:\n1) Поддержка Сhrome последней версии. \n2) Язык - JS/ES2015+ или TypeScript\n3) Использование любых игровых движков/фреймворков (например, https://phaser.io/) - запрещено. \n   Библиотеки и фреймворки типа react/angular/vue/jquery/bootstrap использовать можно.\n4) Финальная версия игры должна быть доступна по ссылке. Самый просто способ - выложить на GitHub pages. (e.g. https://themarkmarrone.github.io/petrovich/, https://spider-shooter.github.io)\n5) Landing page. Должна содержать следующую информацию:\n   - Название игры\n   - Скриншоты геймплея\n   - Ссылку для запуска игры\n   - Информацию об авторе \n   - Если игру делали два человека - четкое разделение того, кто и что делал. \n \n### Требования к коммитам, PR, репозиторию\nhttps://github.com/rolling-scopes-school/docs/blob/master/stage2-tasks-requirements.md\n  \n### Требования к качеству кода\n- Не использовать вложенные SetTimeout, синхронизацию кода на тайм-аутах и т.д. Использовать промисы/async/await где это возможно.\n- Не использовать magic number на именованные константы.\nНапример, вместо `if (event.keyCode === 32 || event.keyCode === 13) {….}` использовать `if (event.keyCode === KeyboardEvent.SPACE || key === KeyboardEvent.ENTER ) {….}` и т.д.\n- Не использовать функции, которые длиннее 40 строк (без учета объявления переменных).\n- Минимальное использование тернарных операторов.\n- Использовать чистые функции (pure functions), где это возможно. Если раньше не слышали, можно начать знакомство [тут](https://medium.com/@jamesjefferyuk/javascript-what-are-pure-functions-4d4d5392d49c) или [тут](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-pure-function-d1c076bec976) \n- Использовать осмысленные имена переменных. Избегать однобуквенных имен (i,n,j,d и т.д), абстрактных названий (obj, arr, num, item1 и т.д.)\n\n### Cтуктура проекта. Пример организации файлов и папок:\nИспользование webpack - обязательно! Директории компонентов хранят все необходимые ресурсы и стили. Например, при удалении папки `modal-dialog` будут удалены стили относящееся к данному диалогу. \n    \n    dist\n    src\n    ├── components                \n    │   ├── loading\n    │   ├── modal-dialog\n    │   ├── tasks\n    │   │   ├── engToRu\n    │   │   │   ├── index.html   # component template\n    │   │   │   ├── index.scss   # component related styles\n    │   │   │   ├── index.js     # component logic\n    │   │   ├── simpleMath\n    │   │   │   ├── index.html\n    │   │   │   ├── index.scss\n    │   │   │   ├── index.js\n    ├── screens\n    │   ├── home\n    │   │   ├── images\n    │   │   ├── index.html       # home screen template\n    │   │   ├── index.scss       # home screen styles\n    │   │   ├── index.js         # home screen logic\n    │   ├── login\n    │   ├── battle\n    │   ├── score\n    ├── app.js                   # main entry point.\n    webpack.config.js\n    README.md\n    \nЗамечания по использованию webpack:\n- нет смысла оборачивать код в Immediately-invoked Function Expression.\n- нет смысла использовать 'use strict'.\n\n# Процесс сдачи и критерии оценки\n### Процесс сдачи: \n - Финальную оценку и проверку выполняет НЕ ваш ментор. Списки \"студент-проверяющий\" будут оглашены после дедлайна.\n - У вас будет до 30 минут на презентацию работы\n - Другие студенты могут присутствовать/ задавать вам вопросы.\n - Формат - оффлайн или онлайн в зависимости от локации/возможностей принимающего\n - Отправить ссылку на на Landing Page c игрой в google форму: https://docs.google.com/forms/d/e/1FAIpQLSc3izOitQg5luYM_WqxLG-_CZ5B7JNETSouCMmLFue4ITkRIw/viewform\n \n\n### Критерии оценки:\n- Есть Landing page +15 баллов\n- Используется Webpack и требуемая структура проекта +15 баллов\n- Есть кастомный компонет \"модальный диалог\", который используется для выбора заклинаний, игровых настроек и т.д. +5 баллов\n- Есть несколько видов заклинаний (два и более) и их анимация с аудио эффектом +15 баллов.\n- Есть автогенерация монстров (имя и тело) + 15 баллов\n- Есть экран задачи +15 баллов. За второй еще +15. За третий еще + 10. За последующие +5 баллов. Задачи не из списка *Варианты экрана \"задача\"* оцениваются в 5 баллов максимум. Всего в игре может быть максимум 15 видов задач. Итого: максимальная оценка за этот пункт - 100 баллов. \n- Есть экран \"таблица рекордов\" +10 баллов \n- Возможность играть используя только клавиатуру (без мышки/тачпада/курсора и т.д.) +25 баллов\n- Есть разумное количество юнит тестов: +25 баллов\n- Сохранение таблицы рекордов реализовано с использованием node.js/express/mongodb +35 баллов \n- Нарушение общих требований к выполнению тасков в RSSchool stage#2, качеству кода: -50 баллов и более по усмотрению принимающего ментора\n\n#### Useful links:\n1) https://habrahabr.ru/post/184666/  \n2) http://opengameart.org/\n3) http://robinbobin.livejournal.com/4066704.html\n4) https://cdn.scratch.mit.edu/scratchr2/static/__787158ad1362201586979068ba002765__/help/ru/howto/fly-intro.html\n5) https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript\n\n### Видео разбор от одного из студентов RSSchool 2018Q1\n- https://www.youtube.com/watch?v=R_iSXbgNWc8\u0026feature=youtu.be\n- https://www.youtube.com/watch?v=1_phuaJ5ZNM\u0026feature=youtu.be\n\n### Материалы лекции от @davojta c разбором часто встречающихся ошибок при выполнении данного задания\n- https://github.com/rolling-scopes-school/lectures/blob/master/lectures/refactoring.md\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fton9q%2Ffinal-game-mongo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fton9q%2Ffinal-game-mongo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fton9q%2Ffinal-game-mongo/lists"}