Проект “Виселица” #
Задача - реализовать игру “виселица” на Java. Интерфейс - консольный. Описание правил игры на Википедии.
Комментарии по проекту - https://www.youtube.com/watch?v=kqLklwFjr5g.
Работу над проектом можно обсуждать в чатах:
- Основной чат сообщества - https://t.me/zhukovsd_it_chat
- Чат сообщества по работе над проектами, где каждому проекту посвящена отдельная ветка - https://t.me/zhukovsd_projects_it_chat
Что нужно знать #
- Java - базовый синтаксис
Если испытываете трудности “не знаю с чего начать”, или “не понимаю что именно сделать”, советую лекцию про декомпозицию проектов в задачи - https://youtube.com/live/3ox5DI_xAog.
Мотивация проекта #
Проект является разминочным, и его основная цель - проверить себя на то, что от теории и решения задач уже можно переходить к реализации цельных проектов. Если приложения подобного уровня вы уже реализовывали без возникновения трудностей, проект можно пропустить.
Функционал приложения и меню консольного интерфейса #
- При старте, приложение предлагает начать новую игру или выйти из приложения
- При начале новой игры, случайным образом загадывается слово, и игрок начинает процесс по его отгадыванию
- После каждой введенной буквы выводим в консоль счётчик ошибок, текущее состояние виселицы (нарисованное ASCII символами)
- По завершении игры выводим результат (победа или поражение) и возвращаемся к состоянию #1 - предложение начать новую игру или выйти из приложения
Заметки по реализации #
Даже самая маленькая программа в Java содержит хотя бы 1 класс и точкой входа в приложение является метод этого класса.
Если у вас уже есть опыт в ООП, предлагаю написать этот проект в ООП-стиле, разбив всю логику на части и реализовав их в нескольких классах.
Если такого опыта нет, можно реализовать всё в процедурном стиле в виде статических методов класса Main.
План работы над приложением #
- Найти в интернете словарь существительных в именительном падеже, отбросить из него слишком короткие слова. Этот словарь будет источником для выбора случайного загаданного слова для каждого раунда игры
- Реализовать игровой цикл отгадывания букв и отображения текущего состояния виселицы
- Реализовать цикл по перезапуску игры после победы/поражения
Ресурсы для работы над ошибками #
- Эталонная реализация проекта похожего уровня сложности, написанного на стриме
- Реализации проекта другими студентами и мои ревью этих реализаций
- Чеклист для самопроверки с типовыми ошибками (ниже)
Чеклист для самопроверки #
❗️Спойлеры: советую не читать этот список до того момента, пока не допишете первую самостоятельную работающую версию проекта❗️
Функциональные проблемы:
- Отсутствие валидации вводимых символов (валидными могут считаться, например, только маленькие буквы кириллицы). Невалидный ввод не должен увеличивать счётчик ошибок пользователя в игровом раунде
- Повторно вводимый символ, отсутствующий в секретном слове, не должен считаться за ошибку
Проблемы и ошибки в коде:
- Использование массивов. Лучше применять коллекции
List<>,Set<> - Путь к файлу со словарем слов указан как абсолютный, следует указывать как относительный
- Недостаточная разбивка кода на функции. Одна функция должна отвечать за одну задачу, например, открывать отгаданную букву в маске загаданного слова
- Излишнее использование “глобальных” переменных (public static полей)
- Неоднозначное именование полей, переменных, методов. Несовпадение имён смысловой нагрузке
- Не следует использовать рекурсию для запусков второго и последующих игровых раундов. Следует применить цикл
Мелочи:
- Неиспользование
.gitignore, из-за чего в репозиторий попадают лишние файлы и папки (например,target,out) - Неаккуратное форматирование кода
Ревью на ваш проект #
Лучший способ получить максимум пользы от проекта - получить ревью и сделать работу над ошибками.
Делитесь ссылкой на реализованный проект в чате сообщества - https://t.me/zhukovsd_it_chat. Мы ведём коллекцию всех реализаций и ревью.
Способы получить ревью:
- Учебная подписка гарантирует 1 ревью в месяц на ваши проекты
- Заказать ревью у конкретного ментора сообщества, цены и условия
- Я спонсирую ревью 10-15 проектов в месяц
Эталонная реализация #
В рамках учебной подписки доступна эталонная реализация на данный проект:
- Эталонная реализация по шагам (5 шагов)
- Лекции по разработке проекта, суммарно 2 часа. Разобранные темы:
- Декомпозиция
- Реализация MVP
- Реализация всего требуемого по ТЗ функционала
- Дополнительный функционал - уровни сложности
- Рефакторинг в ООП стиле
- Лекция с разбором типовых ошибок и тому, как их исправить
- ТЗ альтернативного/дополнительного проекта похожего уровня сложности
- Чат для вопросов по материалам