github项目ratel:JAVA实现斗地主

github项目推荐:ratel

技术栈:Netty

码云:https://gitee.com/ainilili/ratel
Github:https://github.com/ainilili/ratel
相关介绍:https://github.com/ainilili/ratel/blob/master/PROTOCO_CN.md

一、项目介绍

Ratel 是一个可以在命令行中玩斗地主的项目。
可以使用小巧的jar包在拥有JVM环境的终端中进行游戏,支持人人对战和人机对战两种模式,丰富你的空闲时间!

二、目录框架

客户端(landlords-client)
event:客户端事件包
handle:客户端事件处理包
SimpleClient:客户端启动程序
基础包:landlords-common
channel:管道工具包
entity:实体类目录
enums:枚举类型目录
exception:异常处理目录
handler:业务处理,包含消息转码工具类
helper:工具类包,包括时间工具类等
print:打印工具包目录,包括格式化输出的工具类
robot:机器人出牌目录,人机对战时使用
transfer:类型转换工具包目录
utils:基础工具类,包括集合、正则等工具类

服务端(landlords-server)
event:服务端端事件包
handler:客户端事件处理包
robot:机器人出牌目录,人机对战时使用
timer:定时任务目录,计算房间存活时间。
SimpleServer:服务端启动程序

来自项目开发文档,最重要的架构图:
在这里插入图片描述

三、项目运行

1、clone项目

git clone https://github.com/ainilili/ratel.git

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、开始打牌

四、Netty原理

1、初始化创建 2 个 EventLoopGroup,其中 parentGroup 用于 Accetpt 连接建立事件并分发请求。childGroup 用于处理 I/O 读写事件和业务逻辑。

2、基于 ServerBootstrap (服务端启动引导类),配置 EventLoopGroup、Channel 类型,连接参数、配置入站、出站事件 handler

3、绑定端口,开始工作

五、文章最后

想知道Netty怎么使用吗!!!
想了解如何使用适配器设计模式吗!!!
最重要的是想摸鱼打牌吗!!!
所有的一切都被放在了那里,去找吧!!!

项目需要对Netty框架有一定的了解。
Netty相关资料:https://blog.csdn.net/qq_35751014/category_9722459.html
入门项目:https://blog.csdn.net/awsl_6699/article/details/115603301

猜你喜欢

转载自blog.csdn.net/awsl_6699/article/details/115604307