项目开源地址:github.com/anlingyi/xe...
前言
这个项目是2020年5月开始的,当时工作不忙,有很多时间学习。 从那时起,我就学习了网络框架Netty。 我通常喜欢以项目驱动的方式学习。 既然是网络框架研究,那么项目肯定是和通信相关的。 首先想到的就是写一个聊天程序。
写一个聊天网站?
决不。 其实我之前已经写过一个网页版的聊天室了,不想再写一个网页版的聊天项目了。
写一个客户端聊天程序怎么样?
单纯写一个C端聊天程序好像不太有趣,那我还是算了吧。
是否有“重病”?
嗯……你真是个聪明的小家伙。
当时我就想,如果我能在IDEA里和其他朋友聊天不是很有趣吗?
于是,我决定写一个IDEA聊天插件。
我想在创作过程中学习Netty
2020年5月底,我基本学会了如何使用Netty实现一个简单的聊天程序。 这时候插件已经基本成型了。
找人利用并测试一下?
脑海里立刻浮现出一个“网友”的名字,我就认定是你了! ——救救主人吧。
傅师傅可以说是钓鱼高手。 这么说吧,他就是那种“在鱼塘里度过,写代码”的人。 他非常适合我的插件。 我立即将插件打包并发送给他。
” 傅老爷子也道:“? 没有说什么。 我告诉他这是一个新的钓鱼插件。 他非常兴奋。 他立即关闭了xxx网页,立即打开了IDEA。 插件安装一气呵成。 。
系统提示:福爷已进入鱼池!
傅大师非常惊讶。 我们可以在 IDEA 中聊天吗? 你是怎么做到的?
我告诉他我正在学习 Netty,想先练习一下。
帮助大师,称他为专家! 如果你想钓鱼,就钓鱼吧。 为什么要学习Netty?
误入歧途
Netty没学好,掉进了Swing的坑。
第一个版本的聊天功能实现后,为了减少聊天被发现的概率,我添加了一个模式开关,可以切换到“浑水摸鱼”模式。 该模式会将聊天内容的字体颜色设置为IDEA背景色,同时在聊天内容的左侧添加新消息红点提醒。 如果您想查看具体的消息内容,可以点击消息内容并拖动,即可显示具体内容。
我把新版本打包发给付师傅了。 傅老爷子用了之后,就觉得这东西没什么用。 他说他钓鱼一向光明正大,不需要这个东西!
我:“???他是大师!”
后来我突然突发奇想:如果我能在IDEA中在线下棋该多有趣啊?
匆忙!
第一个游戏:双陆棋
说实话,Java中的Swing确实很难用。 第一次写五子棋花了很长时间,但是效果确实不错。 我立即将插件打包并发送给付大师。
付师傅:“你周末钓鱼的时候有‘重病’吗?”
我:“那我工作日就回来!”
这家伙周末不会来鱼塘钓鱼的。 他是一个很有“原则”的人。
终于到了星期一,我不需要提醒他。 傅师傅已经在鱼塘里等我多时了。
福爷:“你钓鱼迟到了?”
我:“想玩一场精彩刺激的五子棋游戏吗?”
傅师傅:“冲锋!”
游戏结束:菜鸟安灵逸获胜!
傅老爷子从来没有下过棋,所以很生气。
付大师:“你写的什么垃圾游戏?你能玩得好吗?”
我:”...”
自从傅老师下棋输给我之后,他就很少在网上和我下棋了。 但如果没有人和我在线下棋,那么这个五子棋就只是一个摆设,因为我只实现了在线下棋。 无法从单台机器下载它。 。 。
从2020年7月开始到2021年,这段时间工作确实比较忙,插件也更新不多。
重构
从2021年8月开始,我开始重构这个项目,提高了一些功能的可扩展性,并对通信进行了加密。 重构之后,我开始考虑实现一款五子棋单机游戏(期间还写了一个“IDEA防沉迷”功能)。
如果你想写单机,你就必须写AI。 AI 不是像我这样的“CRUD Boy”想写就能写的东西。 没办法,我只能冒着“秃头”的危险去学。 看了很多资料,熬夜,终于写了一个入门级的五子棋AI。 这个AI写得真好,用户体验“太好了”! 立即将插件打包并发送给付大师。
傅大师又体验了一遍:“你的AI还挺强大的!”
我:“有没有可能你五子棋打得太厉害了?”
傅大师从来没有玩过这样的五子棋AI。 不过后来我看了很多资料,对五子棋AI做了很多优化。 从此以后,我就真的玩不下去了。
第二款游戏:斗地主
我一开始不想写斗地主,因为我不知道怎么斗斗地主,连规则都不知道。 我想写《三个王国》。 毕竟三国比斗地主有趣多了。
但仔细一想,实行三国实在是太难了。 我对 Swing 不是很熟悉。 首先编写一个规则更简单的纸牌游戏怎么样? 经过深思熟虑,我决定写一篇关于斗地主的文章。
今年端午三天假期,我在出租屋里住了三天,写了第一版斗地主。 端午节那天,我和奶奶进行了视频通话。 那时的我还沉浸在编码的“痛苦”之中! 连接后...
奶奶:“过节怎么办?你怎么一脸不高兴的样子?”
我:“不,我很高兴!”
其实我当时真的很不开心。 当我写斗地主的时候,我就已经被Swing折磨到了“生不如死”的地步。
再次,之前掘金有一篇文章《在IDEA下棋是不是太过分了?》 当时很多朋友也安装了这个插件,进入了鱼池。 在此之前,鱼塘里只有两个人,傅师傅和我。
斗地主卡第一版的设计有点太明显了。 如果你想在工作中钓鱼打牌,你不会被承包商抓住吗?
傅老爷子:“我很好,不用担心我!”
这意味着主人“异于常人”,资本家见了他就哭。
另一个突然的想法是以“十六进制”显示卡值。 在斗地主领域,西装和颜色并不重要。 花色直接显示为int,卡牌颜色设置为深色,这样不刺眼。 我真是个聪明的小孩子啊~
话又说回来,不是每个人都有时间去鱼塘钓鱼和斗地主,所以代码还是要敲的! 也就是说,付大师比较自由,每天都邀请我玩斗地主,但基本上是“三对一”的情况(因为当时斗地主只能三个人在线玩)。
让斗地主也支持单机游戏!
我得再写一篇关于AI的文章。 虽然我对写AI有点“基础”,但是斗地主的规则比五子棋复杂多了,我写不出来!
“那就简单点吧,”傅大师说道。
付大师:“就写个像马化腾一样的斗地主打牌机器人吧!能做就做,能做就照顾,这还不够吗?”
很有道理,于是我花了一个下午写了一个“愚蠢的打牌机器人”。
付师傅立即安装体验。
傅大师:“你写的什么?太蹩脚了!”
我:”...”
不得不说,真的很难! 但至少现在可以2人在线玩了。
开源
至此,这个项目可以说已经正式开源了! 开源后,鱼池里越来越热闹了。 这个项目也获得了很多朋友的star和fork。 它还收到了两个大佬@MINIPuffer和@falcon,志哥的PR。 非常感谢。 每个人! 除不可抗力因素外,该项目很可能会继续维持。 我还有好几个游戏想写,哈哈哈! 鱼塘里的鱼友也提出了自己的想法:麻将什么时候推出?
有点难。 我实在不知道怎么打麻将。 我只能说我会考虑。 但现在我还是想写三国杀卡牌游戏。 也许我写的游戏不叫这个名字,而是叫《柱子杀》? 呵呵~
付大师,你的扫雷什么时候上线啊?制作组的鸽子都没有这么好的。
插件介绍及安装
添加插件库 插件 > 设置按钮 > 管理插件存储库...
http://plugins.xeblog.cn
搜索“xechat”安装
插件主界面
查看鱼塘列表
#showServer
登录
使用login命令登录系统。
直接登录
#login {你的昵称}
指定鱼池登录
#login {你的昵称} -s {鱼塘编号}
指定服务器IP端口登录
#login {你的昵称} -h {服务器IP} -p {端口}
登录系统成功
聊天 发送文本
您可以直接通过文本框输入内容,然后按 Enter 键。
发送图片
通过复制图像文件或屏幕截图并将其粘贴到文本框中来发送。
图片发送成功后,可以点击“查看图片”
状态设置查看状态
#showStatus
设置状态
设置工作状态
#setStatus 0
工作的话就不能被邀请玩游戏啦~
模式设置查看模式
#showMode
设置模式
设置“浑水摸鱼”模式
#mode 1
当处于“浑水摸鱼”模式时,聊天内容将被隐藏。
单击消息内容并拖动即可查看。
检查天气
#weather {地名,如:北京市} [-d {0:当前,默认 | 3:未来3天 | 7:未来7天}]
游戏特色查看游戏列表
#showGame
双陆棋
#play 0
支持人机、2人在线对战,内置五子棋AI
房东
#play 1
支持人机,2~3人在线对战,内置“白痴机器人”
支持钓鱼模式
详细介绍请看:在IDEA里斗地主一点也不为过!
读
#play 2
打开文本文件
详细介绍请参见:IDEA里看书太多了!
IDEA防沉迷
打开或关闭
#alive 1|0
详细介绍请参见:XEChat-Idea:IDEA防沉迷吗?
登出
#exit
清晰的屏幕
#clean
终于
项目开源地址:github.com/anlingyi/xe...
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.fwsgw.com/a/sanguo/56688.html