神奇的笔记
对不起 我的电脑不足以预览海面模拟……… 更别提完整渲染了………
#project #game #dev
https://github.com/icela/FriceEngine/blob/cd9ed30d6fd9471d44021ff73818ab2dd4dd4ff6/src/org/frice/obj/Objects.kt#L73
回之前某个说法,FriceEngine 当然是内建了 2D 物理系统的...
不过目前貌似只见到了 2D 碰撞检测算法,包括点碰撞和(四边形)盒碰撞,暂时没有找到 2D 物理系统(废话
这样不能做需要物理系统的 2D 游戏(如,超级玛丽 XD)
https://github.com/icela/FriceEngine/blob/cd9ed30d6fd9471d44021ff73818ab2dd4dd4ff6/src/org/frice/anim/move/AccelerateMove.kt
内置的特效可以完成部分效果,这个是加速移动特效...
虽然不是特别复杂的算法,我依然一眼看不明白(((( 看来需要多学习一下... :
https://github.com/icela/FriceEngine/blob/cd9ed30d6fd9471d44021ff73818ab2dd4dd4ff6/src/org/frice/obj/Objects.kt#L73
回之前某个说法,FriceEngine 当然是内建了 2D 物理系统的...
不过目前貌似只见到了 2D 碰撞检测算法,包括点碰撞和(四边形)盒碰撞,暂时没有找到 2D 物理系统(废话
abstract class PhysicalObject(override var x: Double, override var y: Double): AbstractObject, FContainer {
var collisionBox: FShapeQuad?
override val box: FShapeQuad get() = collisionBox ?: this
override var died = false
override var isVisible = true
override var rotate = 0.0
}
找了一下没有发现外挂的物理系统(冰封:有种 PR(划掉(但的确可以自己外挂...这样不能做需要物理系统的 2D 游戏(如,超级玛丽 XD)
https://github.com/icela/FriceEngine/blob/cd9ed30d6fd9471d44021ff73818ab2dd4dd4ff6/src/org/frice/anim/move/AccelerateMove.kt
内置的特效可以完成部分效果,这个是加速移动特效...
虽然不是特别复杂的算法,我依然一眼看不明白(((( 看来需要多学习一下... :
GitHub
icela/FriceEngine
:video_game: JVM game engine based on Swing/JavaFX. - icela/FriceEngine
duangsuse::Echo
Photo
比如我要描述一些专门拿来拼字符串的逻辑,就有很多复杂的正则之类的逻辑,我相信会正则表达式的程序员很多都只会使用『匹配』这一功能,会把值 group 出来的就少很多,知道实现的又少很多,知道正则可以编译的又少很多,知道正则还能 JIT 的就更少了,你怎么又能保证没有希望使用正则代替 bnf 的愿望呢?(ice1000.org)曾经连
Regex 都不会的 duangsuse 会被喷的说(现在稍微会一点PCRE(Perl 兼容标准的)正则表达式,和数学公式有着类似的性质 — 看着优雅,部分情况下甚至理解和使用起来也方便,但是如果没有专业的训练,很难理解,并且学习后也比较容易忘记
据《ES6 标准入门》上所说,ES6 应该已经支持了
至于正则的「匹配」,举例来说,匹配 C 预处理指令们
grep -P "^\s*#.*$" ~/Projects/cJSON/cJSON.c
/^\s*#.*$/ 大概就是说匹配类似 /[\r\n]\s*#.*[\r\n]/
这个模式的意思是 /换行符 任意长度的空白字符 # 任意长度非换行符 换行符/
当然 $^ 的语义没有那么简单,可能还要以「先行(否定)断言」解释,但这里就是这个意思《深入分析 GCC》中用到了很多字符流处理工具辅助处理代码文件,比如 GAWK、SED、GREP,都和 Regexp 息息相关
正则的「Group」
const RE_DATE = /(\d{4})-(\d{2})-(\d{2})/;
// 匹配 2018-09-19而使用具名组匹配,就更加方便了
const RE_DATE = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
比之前的数字反引用 xref 方便多了 \0 \1 啊....
\k<组名>
node --use_strict --harmony正则可以编译,一般听说过 re2c 这个词法分析器生成器或在 Rust 里用过 regex 的人应该知道
> const RE_DATE = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
undefined
> RE_DATE.exec('2018-09-19')
[ '2018-09-19',
'2018',
'09',
'19',
index: 0,
input: '2018-09-19',
groups: { year: '2018', month: '09', day: '19' } ]
如果能编译成流匹配代码,自然也就可以 JIT 了
正则代替 BNF 当然也是可能的,Ohm.js 现在就使用正则 + PEG 的方式解析代码,不过完全取代可能还需要别的扩展什么的,现在原理上也不是不可能 #tech #javascript #learn
那些脑子转不过来的程序员连 Parser Combinator 都搞不懂,用 JS 写出 JS 的 Parser、写出 C 语言的 Tokenizer 和 Grammar Analyzer 就能称霸一方,你一去他们岂不是集体跪拜?然后你在社区获得了正反馈,积累来的编程语言优化经验给了你大厂的工作机会,公司的网站又快了几倍,被无所事事的同事抢了三分之二的功劳剩下的钱也够你过上学生时代希望的平淡生活了。
"连 Parser Combinator 都搞不懂" 说的是我啊(对号入座付"Tokenizer 和 Grammar Analyzer 是梗,只会这些当然是不可能称霸一方的。" 也是我(跑路
如果我不会 LALR 或者其他词条流匹配算法的话,RegularPP 就写不出来了(
当然,字典树也是一样,RegPP 的替换是基于字节流处理 C 编写的,所以需要 ByteTrie 树来完成 section-based 替换
目前想到一种基于 ArrayMap 的 ByteTrie 树结构和算法
“Perl6 和 Nimlang 可以修改自己的语法。” 如果这次我能写出 ApkBundler Scheme(以后这里都简称 ABS(
那它也可以修改自己的语法了,BreakLexer、Combinator 即是为这种特性计划的,BreakLexer 可以用于扩展词法(自定义部分词法特性、自定义运算符和关键字),Combinator 用于结合运算符(虽然后来还是打算好好学习一下 Parserc,然后就扩展了吧...
ABS 是面向流解释代码的,就是说可以即时执行匹配到的 S 表达式,所以可以随意操作字符流、词条流、S 表达式流来任意切换语言前端
[require 'inscript]
[lang inscript]
# InScript code goes here
lang 'apkbundler-scheme'
; ApkBundler Scheme code goes here
#Haha #backend #PL #java #cpp #recommended
笑哭 🙈 ice1000/algo4j/jni/math/BigInt.cpp#3
笑哭 🙈 ice1000/algo4j/jni/math/BigInt.cpp#3
我的高精度 简洁简洁最简洁 逃课去机房我情不自禁 测试测试 在那垃圾的电脑上测试
月光下我看到测试全通过 有时很快有时很慢 感到一种力量驱使我的手速 有了高精度
负数都不怕 加法减法 乘法除法 乘方取余不压位 为了方便输出 为了方便输出 为了方便输出
GitHub
ice1000/algo4j
:horse_racing: An algorithm library using java native interface - ice1000/algo4j