我正在写一个基于平铺的小游戏,为此我想支持光源.但是我的算法太弱了,所以我来找你帮忙.
情况是这样的:有一个基于图块的地图(作为二维阵列保存),包含一个光源和几个站在周围的物品.我想计算哪些瓷砖被光源点亮,哪些瓷砖处于阴影中.
大约是它的外观的视觉辅助.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) 我正在编写Java 2D游戏.我正在使用内置的Java 2D绘图库,绘制了一个Graphics2D,我从一个来自Canvas in JFrame的BufferStrategy中获取(有时是完全筛选的).BufferStrategy是双缓冲的.重绘是通过计时器主动完成的.我遇到了一些性能问题,特别是在Linux上.
Java2D有很多方法可以创建图形缓冲区和绘制图形,我只是不知道我做的是否正确.我一直在尝试使用graphics2d.getDeviceConfiguration().createCompatibleVolatileImage,看起来很有前景,但我没有真正的证据,如果我将绘图代码切换到那个,它会更快.
根据您的经验,在Java 1.5+中将2D图形渲染到屏幕上的最快方法是什么?请注意,游戏相当遥远,因此我不想切换到完全不同的绘图方法,如OpenGL或游戏引擎.我基本上想知道如何使用Graphics2D对象以最快的方式将内容绘制到屏幕上.
我目前正在使用Win32ShellFolderManager2和ShellFolder.getLinkLocation解析Java中的Windows快捷方式.不幸的是,如果Java程序在Vista下作为服务运行getLinkLocation,那么这不起作用.具体来说,我得到一个异常,说明"无法获取shell文件夹ID列表".
搜索网络确实会提到此错误消息,但始终与此相关JFileChooser.我没有使用JFileChooser,我只需要将.lnk文件解析到目的地.
有没有人知道.lnk我用Java编写的文件的第三方解析器?
我已经在这里找到了.lnk格式的非官方文档,但如果有人之前已经做过,我宁愿不做这项工作,因为格式相当可怕.
我有两个从pngs加载的BufferedImages.第一个包含图像,第二个包含图像的alpha蒙版.
我想通过应用alpha蒙版来创建两者的组合图像.我的google-fu让我失望了.
我知道如何加载/保存图像,我只需要从两个BufferedImages到一个带有正确alpha通道的BufferedImage.
我正在使用Java的SSLSocket来保护客户端和服务器程序之间的通信.服务器程序还提供来自Web浏览器的HTTPS请求.
根据" 使用Java进行初始加密 ",第371页,您应始终呼叫setEnabledCipherSuites您的SSLSocket/ SSLServerSocket以确保最终协商的密码套件足够强大以满足您的需要.
话虽这么说,调用我SSLSocketFactory的getDefaultCipherSuites方法会产生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服务提供商,并且他们可能安装或不安装无限制的加密策略文件.
我正在尝试使用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,但不是这个.
一个愚蠢的问题,但我真的无法让它工作:我在Swing应用程序中有一些长时间运行的过程可能需要几分钟.我希望在此过程正在进行时向用户显示进度对话框.我还想阻止用户执行进一步的操作,例如在进行过程中按下按钮.
如果我在EDT上执行此过程,这显然会阻止最终用户在进程中执行任何操作.但是因为EDT正在忙于处理,所以它永远无法渲染对话框的内容,因此我只是得到了对话框的轮廓.
但是如果我在工作线程中执行该过程,最终用户可以单击按钮并使EDT操纵工作者同时也在操作的状态,结果是坏事.如果我创建对话框模态,那不会发生,但Swing中的模态也意味着阻塞,所以在我调用的那一刻setVisible(true),线程永远阻塞.
所以我当前的"解决方案"是使用一个工作线程,然后产生一个单独的线程,其唯一目的是吸收阻塞性质setVisible.肯定有一个更好的解决方案!
那么我如何得到一个对话框,阻止用户与系统的其余部分(模态)交互,但不阻止导致它可见的线程?
我正在尝试编写一种方法来计算两个圆是否重叠.我想出了以下内容,我只是想知道是否有可能进一步优化.
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的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加密系统实际布局的概述都非常受欢迎.
好的,这是一个相当复杂的代码高尔夫挑战:实施一个黑白棋(奥赛罗)游戏.
以尽可能少的字符执行此操作.
会话应该看起来像这样:
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) java ×6
graphics ×2
performance ×2
algorithm ×1
alpha ×1
bouncycastle ×1
code-golf ×1
compositing ×1
cryptography ×1
encryption ×1
geometry ×1
http ×1
java-2d ×1
jce ×1
lighting ×1
lnk ×1
modal-dialog ×1
nonblocking ×1
optimization ×1
raytracing ×1
reversi ×1
rsa ×1
ruby ×1
shortcuts ×1
ssl ×1
swing ×1
windows ×1