小编Zar*_*nen的帖子

计算在基于图块的游戏中点亮哪些图块("光线跟踪")

我正在写一个基于平铺的小游戏,为此我想支持光源.但是我的算法太弱了,所以我来找你帮忙.

情况是这样的:有一个基于图块的地图(作为二维阵列保存),包含一个光源和几个站在周围的物品.我想计算哪些瓷砖被光源点亮,哪些瓷砖处于阴影中.

大约是它的外观的视觉辅助.L是光源,X是阻挡光线的项目,0是点亮的瓷砖,-s是阴影中的瓷砖.

0 0 0 0 0 0 - - 0
0 0 0 0 0 0 - 0 0
0 0 0 0 0 X 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 L 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 X X X X 0 0
0 0 0 - - - - - 0
0 0 - - - …
Run Code Online (Sandbox Code Playgroud)

algorithm raytracing lighting

43
推荐指数
4
解决办法
2万
查看次数

Java 2D绘图最佳性能

我正在编写Java 2D游戏.我正在使用内置的Java 2D绘图库,绘制了一个Graphics2D,我从一个来自Canvas in JFrame的BufferStrategy中获取(有时是完全筛选的).BufferStrategy是双缓冲的.重绘是通过计时器主动完成的.我遇到了一些性能问题,特别是在Linux上.

Java2D有很多方法可以创建图形缓冲区和绘制图形,我只是不知道我做的是否正确.我一直在尝试使用graphics2d.getDeviceConfiguration().createCompatibleVolatileImage,看起来很有前景,但我没有真正的证据,如果我将绘图代码切换到那个,它会更快.

根据您的经验,在Java 1.5+中将2D图形渲染到屏幕上的最快方法是什么?请注意,游戏相当遥远,因此我不想切换到完全不同的绘图方法,如OpenGL或游戏引擎.我基本上想知道如何使用Graphics2D对象以最快的方式将内容绘制到屏幕上.

java graphics performance java-2d

31
推荐指数
3
解决办法
4万
查看次数

Java中的Windows快捷方式(.lnk)解析器?

我目前正在使用Win32ShellFolderManager2ShellFolder.getLinkLocation解析Java中的Windows快捷方式.不幸的是,如果Java程序在Vista下作为服务运行getLinkLocation,那么这不起作用.具体来说,我得到一个异常,说明"无法获取shell文件夹ID列表".

搜索网络确实会提到此错误消息,但始终与此相关JFileChooser.我没有使用JFileChooser,我只需要将.lnk文件解析到目的地.

有没有人知道.lnk我用Java编写的文件的第三方解析器?

我已经在这里找到了.lnk格式的非官方文档,但如果有人之前已经做过,我宁愿不做这项工作,因为格式相当可怕.

java windows shortcuts lnk windows-vista

23
推荐指数
3
解决办法
2万
查看次数

在Java中设置BufferedImage alpha掩码

我有两个从pngs加载的BufferedImages.第一个包含图像,第二个包含图像的alpha蒙版.

我想通过应用alpha蒙版来创建两者的组合图像.我的google-fu让我失望了.

我知道如何加载/保存图像,我只需要从两个BufferedImages到一个带有正确alpha通道的BufferedImage.

java graphics alpha compositing

21
推荐指数
3
解决办法
4万
查看次数

哪个Cipher套件启用SSL套接字?

我正在使用Java的SSLSocket来保护客户端和服务器程序之间的通信.服务器程序还提供来自Web浏览器的HTTPS请求.

根据" 使用Java进行初始加密 ",第371页,您应始终呼叫setEnabledCipherSuites您的SSLSocket/ SSLServerSocket以确保最终协商的密码套件足够强大以满足您的需要.

话虽这么说,调用我SSLSocketFactorygetDefaultCipherSuites方法会产生180个选项.这些选项范围从TLS_RSA_WITH_AES_256_CBC_SHA(我认为相当安全)到SSL_RSA_WITH_RC4_128_MD5(不确定这是否安全,给定MD5的当前状态)到SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA(不完全确定它是什么).

什么是限制套接字的密码套件的合理列表?

请注意,客户端和服务器可以访问Bouncy Castle服务提供商,并且他们可能安装或不安装无限制的加密策略文件.

java encryption ssl

21
推荐指数
2
解决办法
5万
查看次数

在加载网页时:"未定义的方法`request_uri'为#"

我正在尝试使用Ruby通过HTTP加载网页并检查其状态代码是什么.我的代码看起来像这样:

  require "net/http"
  @r = Net::HTTP.get_response(URI.parse(myURL))
  return @r.code
Run Code Online (Sandbox Code Playgroud)

但是,对于某些URL(大多数指向像网络计数器这样无法给出正确响应的奇怪内容)我得到一个undefined method request_uri for #例外.我已经将它追溯到http.rb的第380行(我正在运行Ruby 1.8),它说:

def HTTP.get_response(uri_or_host, path = nil, port = nil, &block)
  if path
    host = uri_or_host
    new(host, port || HTTP.default_port).start {|http|
      return http.request_get(path, &block)
    }
  else
    uri = uri_or_host
    new(uri.host, uri.port).start {|http|
      return http.request_get(uri.request_uri, &block) <--- LINE 380
    }
  end
end
Run Code Online (Sandbox Code Playgroud)

我很遗憾导致这个异常的原因.我期待一个URI::InvalidURIError,但不是这个.

ruby http

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

非阻塞模态Swing进度对话框

一个愚蠢的问题,但我真的无法让它工作:我在Swing应用程序中有一些长时间运行的过程可能需要几分钟.我希望在此过程正在进行时向用户显示进度对话框.我还想阻止用户执行进一步的操作,例如在进行过程中按下按钮.

如果我在EDT上执行此过程,这显然会阻止最终用户在进程中执行任何操作.但是因为EDT正在忙于处理,所以它永远无法渲染对话框的内容,因此我只是得到了对话框的轮廓.

但是如果我在工作线程中执行该过程,最终用户可以单击按钮并使EDT操纵工作者同时也在操作的状态,结果是坏事.如果我创建对话框模态,那不会发生,但Swing中的模态也意味着阻塞,所以在我调用的那一刻setVisible(true),线程永远阻塞.

所以我当前的"解决方案"是使用一个工作线程,然后产生一个单独的线程,其唯一目的是吸收阻塞性质setVisible.肯定有一个更好的解决方案!

那么我如何得到一个对话框,阻止用户与系统的其余部分(模态)交互,但不阻止导致它可见的线程?

swing modal-dialog nonblocking progressdialog

16
推荐指数
1
解决办法
5099
查看次数

快速圆碰撞检测

我正在尝试编写一种方法来计算两个圆是否重叠.我想出了以下内容,我只是想知道是否有可能进一步优化.

private static boolean isCollision(Point2D p1, float r1, Point2D p2, float r2)
{
    float a,dx, dy;
    a = (r1+r2) * (r1+r2);
    dx = (float) (p1.getX() - p2.getX());
    dy = (float) (p1.getY() - p2.getY());

    if (a > (dx*dx) + (dy*dy))
    {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

java optimization performance geometry collision-detection

14
推荐指数
3
解决办法
2万
查看次数

Java Security&BouncyCastle API令人困惑和困惑

我一直在尝试理解用于Java的BouncyCastle加密API.不幸的是,我发现Java加密通常被服务提供者接口和术语所掩盖,以至于我无法理解实际做的事情.我已经尝试过反复阅读必要的文档,但它只是难以理解,引入了许多远远超出我认为应该需要的概念.

我真正想要的是一个执行以下操作的类:

public class KeyPair {
    public byte[] public;
    public byte[] private;
}

public class RSACrypto {
    public static KeyPair generateRSAKeyPair() { /*implementation*/}
    public static byte[] encrypt(byte[] data, byte[] publicKey) { /*impl*/}
    public static byte[] decrypt(byte[] encryptedData, byte[] privateKey) { /*impl*/ }
}
Run Code Online (Sandbox Code Playgroud)

如果这是一个非常复杂的问题,请问"我真正想要的一切".关于在Java加密和BouncyCastle上阅读的地方的任何指示都是非常受欢迎的.任何有关Java加密系统实际布局的概述都非常受欢迎.

java cryptography rsa bouncycastle jce

11
推荐指数
2
解决办法
7534
查看次数

代码高尔夫:黑白棋

好的,这是一个相当复杂的代码高尔夫挑战:实施一个黑白棋(奥赛罗)游戏.

  • 游戏应显示游戏板的当前状态,并允许单台计算机上的玩家交替输入动作.
  • 必须捕获不正确的输入和不允许的移动,但可以静默忽略.
  • 游戏必须在不再进行任何动作时结束(因为棋盘已满或因为没有动作会翻转任何棋子).
  • 然后游戏必须宣布谁赢了,或者是否是平局.

以尽可能少的字符执行此操作.

会话应该看起来像这样:

 abcdefgh
1        
2        
3        
4   wb   
5   bw   
6        
7        
8        
b>d3
 abcdefgh
1        
2        
3   b    
4   bb   
5   bw   
6        
7        
8        
Run Code Online (Sandbox Code Playgroud)

code-golf reversi

10
推荐指数
2
解决办法
2536
查看次数