小编mik*_*era的帖子

在六边形内生成随机点以用于程序性游戏内容

我正在使用程序技术为我正在编写的游戏生成图形.

为了生成一些树林,我想在以<0,0>为中心的正六边形区域内随机散布树木.

以统一的方式生成这些点的最佳方法是什么?

language-agnostic random algorithm procedural-generation

9
推荐指数
3
解决办法
3302
查看次数

使用Java Web Start/JNLP启用JVM选项

我正在创建一个Web Start应用程序,它将受益于一些较新的JVM选项(特别是转义分析,G1垃圾收集器等)

同时,我希望应用程序能够在不支持这些选项的旧JVM上正常工作.

有没有一个很好的方法来实现这一目标?

java jnlp jvm java-web-start

9
推荐指数
1
解决办法
1万
查看次数

用于roguelike游戏的纯Java文本界面

好吧,这听起来像是一个疯狂的想法 - 但我有兴趣用纯Java 模仿20世纪80年代风格的roguelike游戏文本界面,即使用Swing或类似的东西.

这大致是它需要做的事情:

  • 提供固定大小字符的固定大小网格作为"屏幕"(例如100*75)
  • 使用适当的等宽字体,理想情况下有许多有趣的符号
  • 允许单独设置每个字符位置的前景色和背景色
  • 允许在屏幕中的任何位置打印字符串或单个字符(这应该覆盖这些位置中屏幕缓冲区中已有的内容)

任何人都知道一个好的现有解决方案,可以实现这一点 或者我是不是从头开始一起黑客攻击?

ps我想要纯Java的原因是它可以在沙盒applet中运行.所以像jcurses这样的JNI解决方案被遗憾地排除了......

java swing roguelike

9
推荐指数
1
解决办法
5314
查看次数

避免在Clojure DSL中发生名称冲突

作为一个侧面项目,我正在创建一个用于图像合成的Clojure DSL(clisk).

我对函数命名的最佳方法有些不确定,其中我在DSL中具有与Clojure核心中的+函数类似的函数,例如我的DSL中需要函数或类似的东西以附加地组合图像/执行矢量数学运算.

据我所知,有几个选择:

  1. +在我自己的命名空间中使用相同的名称().在DSL代码中看起来不错,但会覆盖clojure.core版本,这可能会导致问题.人们可能会感到困惑.
  2. 使用相同的名称,但要求它是限定的(my-ns/+).避免冲突,但use为了方便而阻止人们进入命名空间并且看起来有点难看.
  3. 使用不同的短名称,例如(v+).可以很use容易地避免冲突,但名字有点难看,可能难以记住.
  4. 使用不同的长名称,例如(vector-add).冗长但描述性,没有冲突.
  5. 用多方法排除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)

什么是最好/最惯用的方法?

dsl namespaces clojure

9
推荐指数
1
解决办法
407
查看次数

在Clojure中扩展Java Swing类

我正在尝试在Clojure中扩展Java Swing组件,即我想扩展javax.swing.JComponent并添加一些在纯Clojure中实现的自定义方法以及所有标准的继承方法.

我尝试使用"代理",如果我只想要一个单独的实例(与匿名内部类相同的方式),它会很有效.但是我真的很喜欢一个命名类,这样我就可以生成任意数量的实例.

建议的方法是什么?

java inheritance swing clojure

8
推荐指数
1
解决办法
1101
查看次数

重叠空间区域的有效数据结构

我正在编写一个游戏,其中大量对象将在平铺2D地图的区域上具有"区域效果".

所需功能:

  • 这些区域效果中的一些可能重叠并影响相同的区块
  • 必须能够非常有效地访问任何给定图块的效果列表
  • 区域效果可以具有任意形状,但通常具有"距离引起效果的物体最多X个瓦片"的形式,其中X是一个小整数,通常为1-10
  • 区域效果将经常变化,例如,当对象移动到地图上的不同位置时
  • 地图可能很大(例如1000*1000个瓷砖)

什么数据结构最适合这个?

language-agnostic spatial data-structures

8
推荐指数
1
解决办法
388
查看次数

使用代理来完成STM事务中的副作用

我知道在STM事务中放置具有副作用的函数通常是不好的做法,因为它们可能被重试并多次调用.

然而,我发现你可以使用代理来确保只有在事务成功完成后才能执行副作用.

例如

(dosync
  // transactional stuff
  (send some-agent #(function-with-side-effects params))
  // more transactional stuff
  )
Run Code Online (Sandbox Code Playgroud)

这是好习惯吗?

有哪些优点/缺点/陷阱?

concurrency transactions clojure agent stm

8
推荐指数
2
解决办法
1229
查看次数

Maven和GitHub的版本编号/发布机制

我正在尝试找出管理工作流的最佳方式,以允许使用Maven和Git进行版本编号和发布.

目前我的工作流程是:

  1. 编辑pom.xml以指示新的快照版本"1.2.3-SNAPSHOT"
  2. 提交git消息"开始工作1.2.3-SNAPSHOT"
  3. 编码工作,每次成功的"mvn测试"后提交等.
  4. 对版本感到满意后,将pom.xml版本编辑为"1.2.3"
  5. 提交消息"1.2.3发布"
  6. 添加标签"1.2.3"
  7. 部署代码(例如,推送到外部Maven存储库)
  8. GOTO 1.

我做"主"分支中的所有工作,除非我需要做一些实验(在这种情况下我切换到一个新的分支,定期合并)

这是一个明智的工作流程吗?我可以通过任何方式改进它.

java versioning git github maven

8
推荐指数
1
解决办法
531
查看次数

使Java类在Clojure中作为序列工作

我使用的Java类代表一系列结果(有点像Clojure向量).

我想将这个类与典型的Clojure序列函数一起使用(即我希望该类的行为就像它支持序列抽象一样)但是我无法更改类,因此无法使其实现clojure.lang.Seqable或类似.另外,令人讨厌的是,该课程没有实现java.util.Collectionjava.lang.Iterable.

我可以看到几个选项:

  • 使用iterator-seq该对象的(现有的)迭代器.
  • 将对象包装在另一个实现java.util.Collection/的类中clojure.lang.Sequable
  • 创建一个通过查询Object来构建Clojure向量或序列的函数

还有其他选择吗?什么是最好的方法?

java clojure sequence clojure-java-interop

8
推荐指数
2
解决办法
551
查看次数

增强Java 8库,同时保持向后兼容性

我正在用Java开发一个开源库,并希望确保它对Java 8用户来说很方便,并尽可能利用Java 8中的新概念(lambdas等)

同时我绝对需要保持向后兼容性(库必须仍然可以用于使用Java 6或7的人).

我可以采用Java 8有哪些有用的功能,这对于库用户来说是有益的,而不会破坏旧Java版本用户的库兼容性?

java backwards-compatibility java-8

8
推荐指数
1
解决办法
993
查看次数