本文适合有 Java 基础知识的人群,跟着本文可使用和快速搭建命令行斗地主项目。
本文作者:HelloGitHub-秦人
HelloGitHub 推出的《讲解开源项目》系列,今天给大家带来一款命令行斗地主开源项目—— ratel
项目源码地址: https://github.com/ainilili/ratel
斗地主我想大家都会玩吧,今天分享一个 Java 命令行斗地主的开源项目!项目是基于 Netty 实现,Netty 是一个高性能、异步事件驱动的 NIO 框架。下面就让我们一起来把这个项目跑起来,然后看看它的代码。
项目目录结构如下图:
目录说明:
landlords-client
landlords-common
landlords-server
serverlist.json
:默认配置构建项目
git clone https://github.com/ainilili/ratel.git
cd ratel
mvn install package
运行客户端和服务端
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
客户端、服务端都已启动,我们就可以开始娱乐一下了。
进入游戏有三个菜单:
运行效果如下:
注意
小王是S
,大王为X
。
牌的别名
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|
以server
为例:
EventLoopGroup
,其中 parentGroup
用于 Accetpt 连接建立事件并分发请求。childGroup
用于处理 I/O 读写事件和业务逻辑。ServerBootstrap
(服务端启动引导类),配置 EventLoopGroup
、Channel
类型,连接参数、配置入站、出站事件 handler
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]);
}
}
}
斗地主的规则文件是: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;
}
俗话说:兴趣是学习的老师,当一个人对做一件事产生兴趣时,慢慢地就开始喜欢这件事。编程也是一样的。也许你觉得编程很枯燥,那是因为你觉得编程这件事让你产生不了兴趣。那么如何让我们对编程产生兴趣呢?那就回到本文的主旨,通过我的内容分享,让更多的朋友感受到开源项目的魅力,由而对编程产生兴趣。
教程至此,你应该也能快速搭建斗地主项目了。编程是不是也特别有意思呢?快邀请你的小伙伴一起加入到命令行斗地主的项目和乐趣中吧~