vehsamrak / artopia Goto Github PK
View Code? Open in Web Editor NEWJava Mud Server
Java Mud Server
Зоны должны подключаться из различных файлов
Отображение в комнате персонажей находящихся в ней (исключая смотрящего)
Реализовать сущность Person.
Person (игрок) связан с User (пользователь) связью 1 к 1.
Сущность и связь должны сохраняться в БД при создании персонажа.
Свойства:
Person.name
Person.cyrillicName
Person.createdAt
Выход из комнаты может быть закрыт дверью. Нужно реализовать механизм взаимодействия с подобными преградами:
При логине пользователю предлагается выбрать кодировку.
Реализовать поддержку выбора кодировки KOI8.
Пользовательский ввод и вывод должен происходить в этой кодировке для этого пользователя.
Применить DI Container для сервисов
https://github.com/google/guice
Довести покрытие тестами до 90%
https://codecov.io/github/rottenwood/artopia?branch=master
Комната может содержать предметы, которые отображаются в ней при осмотре.
Записывать в лог ввод ошибочных команд, для дальнейшего анализа.
Группировать строке, выводя количество ошибочных вводов.
Если от клиента пришла пустая команда, тред падает с эксепшеном.
Exception in thread "Thread-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at artopia.services.commands.CommandService.execute(CommandService.java:24)
at artopia.handlers.ConnectionHandler.run(ConnectionHandler.java:58)
at java.lang.Thread.run(Thread.java:745)
north, east, south, west, up, down - должны перемещать персонажа в пространстве.
Если в указанную сторону не пройти - должно выдаваться сообщение об этом.
Команда look должна отображать название и описание комнаты в которой находится юзер
Команда help должна автоматически собирать справку по всем имеющимся командам. Результатом выполнения команды должен стать вывод таблицы примерно следующего вида:
команда (алиасы) - описание
следующая команда (алиасы) - описание
Команды n, e, s, w, u, d и их русские аналоги должны находиться первыми, перед остальными командами начинающимися на эти символы
Запись в БД паролей в хэшах.
Сравнение при логине введенного пароля с данными в БД по хэшу.
Поиск команд должен учитывать сокращенный ввод команд. Алгоритм поиска - по первым буквам в алфавитном порядке.
Реализовать сущность Room.
Привязать к User его текущую комнату.
Записывать информацию о текущей комнате в БД при выходе игрока из игры.
Свойства:
Room.id
Room.name
Room.description
Room.north(Room)
Room.south(Room)
Room.east(Room)
Room.west(Room)
Room.up(Room)
Room.down(Room)
Репозиторий комнат должен загружаться из XML файлов.
При регистрации нового юзера должен создаваться и персонаж.
Должно быть предложено выбрать имя для персонажа, а так же предложен сгенерированный вариант из логина.
Персонаж после создания должен сохраняться в БД.
Возможность использовать команды "отпереть" и "запереть" в направлении двери, при этом в инвентаре должен быть подходящий ключ (id ключа задается в файле зоны)
Команда для смены кодировки
При логине пользователю предлагается выбрать кодировку.
Реализовать поддержку выбора кроме UTF, кодировки win-1251.
Пользовательский ввод и вывод должен происходить в этой кодировке для этого пользователя.
В класса списка команд должен уметь создавать объект команды (или возвращать имя класса) из алиаса команды, то есть нужно предусмотреть английскую и русскую команду, запускающую один и тот же объект.
При перемещении (north, east, etc..) должна автоматически выполняться команда look, чтобы игрок видел куда он пришел.
В данный момент возвращается null. Нужно реализовать корректную обработку
Сообщение в сервеной консоли о логине пользователя
Добавить в консоль цветной вывод
Механизм регистрации через консольные команды.
Регистрация должна инициироваться после введения нового логина, не зарегистрированного ранее. Соответственно механизм должен проверять наличие введенного логина и валидность пароля. Если введен неверный пароль - сообщение об этом и дисконнект. Если пароль введен верно - вход в игру.
При регистрации должны собираться следующие данные:
Результатом регистрации должна стать запись в БД.
Возможность смотреть на предмет, видя его описание.
Нужно чтобы все классы команд были перечислены в одном месте.
При этом поиск команд должен проводиться через класс-носитель.
Все создания строк как рускоязычных так и нет должны проходить через статический локализатор, применяющий набор фраз для конкретного языка.
Все строки должны быть собраны в отдельном XML и загружаться оттуда.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.