Вы когда-нибудь играли в версию Dou Dizhu для командной строки?

Java GitHub
Вы когда-нибудь играли в версию Dou Dizhu для командной строки?

Эта статья подходит для людей с базовыми знаниями Java.Следуя этой статье, вы можете использовать и быстро собрать проект командной строки для борьбы с арендодателем.

Автор этой статьи: HelloGitHub-Цинь люди

от HelloGitHub«Объяснение проектов с открытым исходным кодом»серия, сегодня я представляю вам проект с открытым исходным кодом Command Line Fighting Landlord——ratel

Адрес исходного кода проекта:GitHub.com/Люблю тебя, Лили/Люди…

1. Введение в проект

Я думаю каждый может поиграть в Fighting the Landlord Сегодня я поделюсь open source проектом борьбы с Landlord с командной строкой на Java! Проект основан на Netty, высокопроизводительной асинхронной платформе NIO, управляемой событиями. Давайте вместе запустим этот проект и посмотрим на его код.

2. Структура проекта

Структура каталогов проекта выглядит следующим образом:

Описание каталога:

  1. Клиент:landlords-client
    • событие: пакет событий клиента
    • handle: пакет обработки клиентских событий
    • SimpleClient: Средство запуска клиента
  2. Базовый пакет:landlords-common
    • канал: Инструментарий конвейера
    • сущность: каталог классов сущностей
    • enums: каталог типов перечисления
    • исключение: каталог обработки исключений
    • обработчик: бизнес-обработка, включая класс инструментов транскодирования сообщений
    • helper: пакет классов инструментов, включая классы инструментов времени и т. д.
    • print: распечатывает каталог набора инструментов, включая классы инструментов для форматированного вывода.
    • robot: список воспроизведения роботов, используемых в битвах между человеком и машиной.
    • передача: Каталог инструментов преобразования типов
    • utils: базовые классы инструментов, включая коллекции, обычные и другие классы инструментов
  3. Сервер:landlords-server
    • событие: пакет событий на стороне сервера
    • обработчик: пакет обработки клиентских событий
    • robot: список воспроизведения роботов, используемых в битвах между человеком и машиной.
    • таймер: Каталог запланированных задач для расчета времени выживания комнаты.
    • SimpleServer: стартовый сервер
  4. конфигурация сервераserverlist.json: распределение по умолчанию

3. Реальная боевая операция

3.1 Запуск проекта

  1. Построить проект

    git clone https://github.com/ainilili/ratel.git
    cd ratel
    mvn install package
    
  2. запустить клиент и сервер

    java -jar landlords-server/target/landlords-server-1.1.0.jar -p 1024
    java -jar landlords-client/target/landlords-client-1.1.0.jar -p 1024 -h 127.0.0.1
    
  • Эффект работы клиента

  • Эффект работы сервера

3.2 Начать борьбу с арендодателем

Клиент и сервер запущены, можно начинать веселиться.

Для входа в игру есть три меню:

  • Живое действие (PvP): требуется, чтобы три человека присоединились к комнате, прежде чем вы сможете начать.
  • Человеко-машинный режим (PvE): присоединяется один человек, двое других — машины.
  • Настройка: Вы можете установить стиль отображения карты.

Эффект операции следующий:

Уведомление

  1. Сяо ВанS, корольX.
  2. название бренда
    poker-> |10   |J  |Q  |K  |A    |2 |S  |X  |
    alias-> |T t 0|J j|Q q|K k|A a 1|2 |S s|X x|
    

4. Принцип работы

4.1 Как работает Нетти

отserverНапример:

  1. Инициализировать для создания 2EventLoopGroupparentGroupИспользуется для событий установления соединения Acceptpt и отправки запросов.childGroupИспользуется для обработки событий чтения и записи ввода-вывода и бизнес-логики.

  2. на основеServerBootstrap(Сервер запускает загрузочный класс), настраиваемEventLoopGroup,ChannelТип, параметры подключения, конфигурация входящие, исходящие событияhandler

  3. Привязываем порт и начинаем работать

4.2 Работа с командной строкой

java -jar xxx.jar -p/port 1024

ВидетьServerМетод входа , видно, что-p 1024находится через входmainпараметр.-pи-portпредставлены в виде портов.

public static void main(String[] args) throws InterruptedException {
	if(args != null && args.length > 1) {
		if(args[0].equalsIgnoreCase("-p") || args[0].equalsIgnoreCase("-port")) {
			ServerContains.port = Integer.valueOf(args[1]);
		}
	}
}

4.3 Правила Дудижу

Файл правил Дудижу:landlords-common/helper/PorkerHelper.java

distributePokerПодход заключается в создании коллекции карт сделок. Есть 54 игральные карты, разделенные на 3 стопки по 17 карт и стопку по 3 карты.

public static List<List<Poker>> distributePoker(){
	Collections.shuffle(basePokers);
	List<List<Poker>> pokersList = new ArrayList<List<Poker>>();
	List<Poker> pokers1 = new ArrayList<>(17);
	pokers1.addAll(basePokers.subList(0, 17));
	List<Poker> pokers2 = new ArrayList<>(17);
	pokers2.addAll(basePokers.subList(17, 34));
	List<Poker> pokers3 = new ArrayList<>(17);
	pokers3.addAll(basePokers.subList(34, 51));
	List<Poker> pokers4 = new ArrayList<>(3);
	pokers4.addAll(basePokers.subList(51, 54));
	pokersList.add(pokers1);
	pokersList.add(pokers2);
	pokersList.add(pokers3);
	pokersList.add(pokers4);
	for(List<Poker> pokers: pokersList) {
		sortPoker(pokers);
	}
	return pokersList;
}

5. Наконец

Как говорится: Интерес учит учиться Когда человеку интересно что-то делать, ему постепенно это начинает нравиться. Программирование такое же. Может быть, вы думаете, что программирование скучно, потому что вы думаете, что программирование вас не интересует. Так как же заинтересовать нас программированием? Затем вернемся к теме этой статьи, благодаря моему обмену контентом, пусть больше друзей почувствуют прелесть проектов с открытым исходным кодом и заинтересуются программированием.

На этом этапе обучения вы сможете быстро построить проект Landlord. Разве программирование не особенно интересно? Быстро пригласите своих друзей присоединиться к проекту и весело провести время в Command Line Fighting Landlord~

6. Ссылки


«Объяснение серии проектов с открытым исходным кодом»——Пусть больше не боятся люди, интересующиеся проектами с открытым исходным кодом, и пусть инициаторы проектов с открытым исходным кодом больше не остаются в одиночестве. Следите за нашими статьями, и вы откроете для себя радости программирования, насколько легко им пользоваться, и узнаете, как легко участвовать в проектах с открытым исходным кодом. Добро пожаловать, чтобы оставить сообщение, чтобы связаться с нами, присоединиться к нам, позволить большему количеству людей влюбиться в открытый исходный код и внести свой вклад в открытый исходный код ~