以前在公号:程序员了不起(以前是:开源指北)发表的一篇文章,现在共享给小伙伴们啦~~~~
哈喽,大家好!我是指北君
。
有时候,指北君不想干活了,就玩2把斗地主消磨时间。玩过手机上的斗地主,突然觉得可以自己写个小程序模拟一把。遇事不决问GitHub,上去搜了一把,嘿,已经有大佬写了不少斗地主游戏,其中,最有意思的就是在命令行上执行命令玩斗地主,好有趣!
这个游戏项目叫做Ratel,基于Netty实现的JAVA命令行斗地主游戏,为划水摸鱼而生!在Gitee上有1400+Stars,在GitHub上有1800+Stars,还被GitHub和Gitee分别推荐了,很牛吧?
这个游戏要求具备基本JAVA知识,不然没法直接跑起来的。
一、 项目结构
目录说明如下:
1、 客户端:landlords-client
● event:客户端事件包
● handle:客户端事件处理包
● SimpleClient:客户端启动程序
2、 基础包:landlords-common
● channel:管道工具包
● entity:实体类目录
● enums:枚举类型目录
● exception:异常处理目录
● handler:业务处理,包含消息转码工具类
● helper:工具类包,包括时间工具类等
● print:打印工具包目录,包括格式化输出的工具类
● robot:机器人出牌目录,人机对战时使用
● transfer:类型转换工具包目录
● utils:基础工具类,包括集合、正则等工具类
3、 服务端:landlords-server
● event:服务端端事件包
● handler:客户端事件处理包
● robot:机器人出牌目录,人机对战时使用
● timer:定时任务目录,计算房间存活时间。
● SimpleServer:服务端启动程序
4、 服务器配置 serverlist.json:默认配置
二、 安装
首先下载打包,确保本地安装有maven及JRE环境:
git clone https://github.com/ainilili/ratel.git cd ratel mvn install package
接下来分别运行 landlords-client 和 landlords-server 的 target 文件夹下的Jar包:
java -jar landlords-server/target/landlords-server-#{version}.jar -p 1024 java -jar landlords-client/target/landlords-client-#{version}.jar -p 1024 -h 127.0.0.1
客户端亦可直接运行,程序会自动拉取Serverlist中的公网服务器:
java -jar landlords-client/target/landlords-client-#{version}.jar
注意,实际运行中请将#{version}改为当前运行版本!
运行效果如下:
客户端运行效果:
服务端运行效果:
三、 玩法介绍
1、 所有牌型
2、 示例:
● 王炸:sx
● 顺子:34567
● 三带一:3334
● 飞机:333444a2
● 单张10:0或者t
● 单张A:a或者1
● 封顶顺子:34567890jqka
● 不想出牌: pass或p
● 退出: exit或者e
3、 协议支持
● TCP
● Websocket
Websocket协议的地址为 ws://host:port/ratel,Websocket的端口需要在原端口基础上加1 (如果tcp端口为1024,则ws端口需要为1025)
四、 指北君有话说
这个开源项目提供全部源代码,方便大家下载和使用。
其实,这个游戏最大的意义在于,让大家在玩的同时,激发对JAVA学习的兴趣。有兴趣的可以研究一下他们的代码,学习大佬的开发经验。通过对源代码的学习,可以提高自己的水平。
欢迎加入交流群,你可以摸鱼、划水、吐槽、咨询。 还有简历模板、各种技术面试资料等100G的资源等着你领取哦。 公号:程序员了不起,后台回复 fff112马上加入,快来一起来聊一聊吧!
项目地址
https://gitee.com/ainilili/ratel
以上就是本次推荐的全部内容,我是指北君
,感谢各位的观看。