我正在使用程序技术为我正在编写的游戏生成图形.
为了生成一些树林,我想在以<0,0>为中心的正六边形区域内随机散布树木.
以统一的方式生成这些点的最佳方法是什么?
我正在创建一个Web Start应用程序,它将受益于一些较新的JVM选项(特别是转义分析,G1垃圾收集器等)
同时,我希望应用程序能够在不支持这些选项的旧JVM上正常工作.
有没有一个很好的方法来实现这一目标?
好吧,这听起来像是一个疯狂的想法 - 但我有兴趣用纯Java 模仿20世纪80年代风格的roguelike游戏文本界面,即使用Swing或类似的东西.
这大致是它需要做的事情:
任何人都知道一个好的现有解决方案,可以实现这一点 或者我是不是从头开始一起黑客攻击?
ps我想要纯Java的原因是它可以在沙盒applet中运行.所以像jcurses这样的JNI解决方案被遗憾地排除了......
作为一个侧面项目,我正在创建一个用于图像合成的Clojure DSL(clisk).
我对函数命名的最佳方法有些不确定,其中我在DSL中具有与Clojure核心中的+函数类似的函数,例如我的DSL中需要函数或类似的东西以附加地组合图像/执行矢量数学运算.
据我所知,有几个选择:
+在我自己的命名空间中使用相同的名称().在DSL代码中看起来不错,但会覆盖clojure.core版本,这可能会导致问题.人们可能会感到困惑.my-ns/+).避免冲突,但use为了方便而阻止人们进入命名空间并且看起来有点难看.v+).可以很use容易地避免冲突,但名字有点难看,可能难以记住.vector-add).冗长但描述性,没有冲突.clojure.core/+和重新定义+(正如乔治克所建议的那样).示例代码可能类似于:
(show (v+ [0.9 0.6 0.3]
(dot [0.2 0.2 0]
(vgradient (vseamless 1.0 plasma) ))))
Run Code Online (Sandbox Code Playgroud)
什么是最好/最惯用的方法?
我正在尝试在Clojure中扩展Java Swing组件,即我想扩展javax.swing.JComponent并添加一些在纯Clojure中实现的自定义方法以及所有标准的继承方法.
我尝试使用"代理",如果我只想要一个单独的实例(与匿名内部类相同的方式),它会很有效.但是我真的很喜欢一个命名类,这样我就可以生成任意数量的实例.
建议的方法是什么?
我正在编写一个游戏,其中大量对象将在平铺2D地图的区域上具有"区域效果".
所需功能:
什么数据结构最适合这个?
我知道在STM事务中放置具有副作用的函数通常是不好的做法,因为它们可能被重试并多次调用.
然而,我发现你可以使用代理来确保只有在事务成功完成后才能执行副作用.
例如
(dosync
// transactional stuff
(send some-agent #(function-with-side-effects params))
// more transactional stuff
)
Run Code Online (Sandbox Code Playgroud)
这是好习惯吗?
有哪些优点/缺点/陷阱?
我正在尝试找出管理工作流的最佳方式,以允许使用Maven和Git进行版本编号和发布.
目前我的工作流程是:
我做"主"分支中的所有工作,除非我需要做一些实验(在这种情况下我切换到一个新的分支,定期合并)
这是一个明智的工作流程吗?我可以通过任何方式改进它.
我使用的Java类代表一系列结果(有点像Clojure向量).
我想将这个类与典型的Clojure序列函数一起使用(即我希望该类的行为就像它支持序列抽象一样)但是我无法更改类,因此无法使其实现clojure.lang.Seqable或类似.另外,令人讨厌的是,该课程没有实现java.util.Collection或java.lang.Iterable.
我可以看到几个选项:
iterator-seq该对象的(现有的)迭代器.java.util.Collection/的类中clojure.lang.Sequable还有其他选择吗?什么是最好的方法?
我正在用Java开发一个开源库,并希望确保它对Java 8用户来说很方便,并尽可能利用Java 8中的新概念(lambdas等)
同时我绝对需要保持向后兼容性(库必须仍然可以用于使用Java 6或7的人).
我可以采用Java 8有哪些有用的功能,这对于库用户来说是有益的,而不会破坏旧Java版本用户的库兼容性?
java ×6
clojure ×4
swing ×2
agent ×1
algorithm ×1
concurrency ×1
dsl ×1
git ×1
github ×1
inheritance ×1
java-8 ×1
jnlp ×1
jvm ×1
maven ×1
namespaces ×1
random ×1
roguelike ×1
sequence ×1
spatial ×1
stm ×1
transactions ×1
versioning ×1