天哪,看我竟然在 Java 语言里撸出了什么 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GuuJiang
V2EX    分享发现

天哪,看我竟然在 Java 语言里撸出了什么

  •  
  •   GuuJiang 2018-05-31 22:00:48 +08:00 3535 次点击
    这是一个创建于 2690 天前的主题,其中的信息可能已经有所发展或是发生改变。

    直接先上一段示例代码

    public static Iterable<Integer> range(int start, int end) { for (int i = start; i < end; ++i) { yield(i); } return null; } 

    相信懂的人已经看出来了,没错,我在 Java 语言里实现了协程(coroutine),这是个早就想写但又搁置了无数次的项目,前段时间在做微信小游戏的过程中再次享受了协程带来的便利,于是终于下定决心把这个项目写了出来,项目地址https://github.com/GuuJiang/Jacob,更多开发过程中的背景和思路可以见我在知乎上写的文章https://zhuanlan.zhihu.com/p/36614393

    有类似想法的人我并不是第一个,不过在开发这个项目的过程中除了一开始查了下 c#内部对 yield 的实现方式相关的资料以外,剩下的部分全是自己撸出来的,没有参考任何现有项目,核心就是基于 bytecode 生成,开发过程中也趟了不少 asm 库的坑

    自己感觉这个库最大的优点就是几乎无侵入性,用它来实现 coroutine 返回的是标准的 Iterable 对象,仅仅需要调用下 yield 这个起标记作用的空方法,再加上两个注解已方便处理程序识别,而在字节码处理前后调用方是不需要做任何改动,具体的示例可以参见项目中带的 samples 工程

    缺点嘛就是目前还处于玩具级别,只实现了最核心的部分,未来会考虑假如 yieldFrom, yieldBreak 等一系列特性
    V 友们如果感兴趣的话可以去使用下给点评价,觉得可以的话来一波 Star

    最后借地再次为我独立开发的小游戏打一波广告,毕竟这个小游戏也算是这个项目诞生的一个契机吧,游戏最初版本由于规则相对复杂导致流失了很多用户,针对这个问题新的版本加入了道具系统,算是变相降低了游戏难度,大家可以去体验一下,微信搜索“数字消除”或扫描下方二维码进入

    5 条回复    2018-06-05 12:26:00 +08:00
    oska117
        1
    oska117  
       2018-06-03 11:59:58 +08:00 via Android
    晚上回去试试
    cwcauc
        2
    cwcauc  
       2018-06-03 20:42:28 +08:00 via iPhone
    游戏一通瞎点比认真玩分还高。。尴尬
    GuuJiang
        3
    GuuJiang  
    OP
       2018-06-03 23:25:12 +08:00 via iPhone
    @cwcauc 感谢支持,我也发现这个问题了,主要在于 combo 的奖励太高,目前 combo 的分数是翻倍增长,而无脑点相比起刻意地计算反而更容易触发意想不到的长 combo,另外有了道具作后盾导致不用精心计算也不那么容易死,后面我会调整 combo 的计分规则并适当削弱道具,以提高可玩性
    MrFireAwayH
        4
    MrFireAwayH  
       2018-06-05 11:35:22 +08:00
    支持大佬~ 看源码中~

    一点小建议

    // the return value does not matter, offen use null

    often
    GuuJiang
        5
    GuuJiang  
    OP
       2018-06-05 12:26:00 +08:00 via iPhone
    @MrFireAwayH 感谢支持,其实不光是拼写,这句话本身语法就有点问题,晚上回去改一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2195 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 00:48 PVG 08:48 LAX 17:48 JFK 20:48
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86