我正在尝试创建一个游戏。有两个球员由两个矩形表示。两个矩形不断移动,并可使用WASD和上,下,左,右键重定向。无论走到哪里,每个矩形都会留下自己的颜色。游戏的目标是在一定的时间内为你的颜色的大部分面板着色。我有一个想法,除了我制作游戏的部分告诉我哪一部分是最常出现的颜色之外,应该怎么做。它似乎并不存在这样做,所以有办法解决这个问题?如何在JPanel上找到主色?
回答
当比赛结束,您可以创建代码类似面板的BufferedImage
:
Dimension size = panel.getSize()
BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
panel.paint(g2d);
然后你可以使用getRGB(...)
方法通过在BufferedImage
所有像素进行迭代。然后你跟踪每个玩家的像素。
编辑:
前面板画上一个BufferedImage,你可以硬编码了一些画,看看你的算法是否正常工作。
例如:
//panel.paint(g2d);
g2d.setColor(Color.RED);
g2d.fillRect(0, 0, 5, 5);
g2d.setColor(Color.GREEN);
g2d.fillRect(20, 20, 10, 10);
// now test your algorithm.
既然你知道你刚涂上你应该知道你的算法的预期输出的矩形的大小。一旦它与硬编码数据协同工作,您就可以随意使用随机图纸对其进行测试,确信它可以正常工作。
我是这样试过的。结果混淆了我,因为它缺乏definiteness.'for的(INT I = 0; I <1000;我++){ \t \t \t \t对(INT J = 0;Ĵ<700; J ++){ \t \t \t \t \t int pixel = image.getRGB(i,j); \t \t \t \t \t如果(像素==新的色彩(255,0,0).getRGB()) \t \t \t \t \t \t P1 ++; \t \t \t \t \t如果(像素==新的色彩(0,255,0).getRGB()) \t \t \t \t \t \t P2 ++; \t \t \t \t \t} \t \t \t}'对不起,这是新的给我,所以我不知道这是否是正确的。 – ArcIX
@ArcIX 1)不要继续创建新的Color对象。在循环外部创建红色和绿色的Color对象,并在循环外部获取其int值。然后在循环内部进行比较。 2)“我不确定是否正确。” - 这就是你测试的原因。从一个小区域开始,可能是一个颜色的5x5矩形,看看结果是什么。然后添加两个区域。请参阅编辑。 – camickr
- 1. 如何在Mac上找到主密码?
- 2. 找到主题的深色/浅色
- 3. 如何在运动图像中找到JPanel内给定点的像素颜色?
- 4. 如何在JPanel上用Java绘制彩色圆圈?
- 5. 如何在JPanel上的JLabel上“绘制”?
- 6. 如何在JPanel(在JPanel)paint方法上添加图像?
- 7. 如何在JPanel
- 8. 如何找到图像中的主色调?
- 9. 如何找到在Linux上
- 10. 上找不到主机
- 11. 如何在给定的图片上找到黄色物体?
- 12. 如何在另一个JPanel内的JPanel上绘制Graphics2D?
- 13. 如何将JPanel放在另一个JPanel上?
- 14. 如何在另一个JPanel内的JPanel上绘制形状?
- 15. 如何找到在OSX上侦听本地主机的进程?
- 16. 如何找到主键的对象是在轨道上
- 17. 如何在JPanel上画圆? Java 2D
- 18. 如何在画布上绘制JPanel?
- 19. 如何在JPanel上播放mp4视频?
- 20. 如何在jpanel上绘制椭圆
- 21. 如何在JFrame上设置JPanel?
- 22. 如何使用JOgl在jPanel上绘图
- 23. 如何在JPanel上添加选项卡
- 24. 如何在JPanel上使用滚动? (Swing)
- 25. 如何在JPanel上移动形状?
- 26. 如何在JPanel上放置图形?
- 27. 如何将图像放在JPanel netbeans上?
- 28. 如何将JPanel从其他类包含到主
- 29. JPanel里面的着色JPanel元素
- 30. 从阵列到JPanel的着色点
我不认为你应该通过查看GUI来确定哪个玩家获胜。 GUI应该只负责绘制结果。你应该有不同的方式跟踪每个玩家绘制的区域,并用它来确定要绘制的内容。 – byxor