我正在写一个小游戏,其中玩家正在控制一个小球(可以垂直和水平移动)。当球在移动时,在其路径上绘制一条线。
我使用LinkedList来保存像素的位置(每次球移动时x和y坐标都保存在LinkedList中) 我将Pixel的对象存储在LinkedList中(只是制作了一个简单的类Pixel,其中包含int x,y和每个的getter)
p.add(new Pixel(x,y));
在我的绘画方法中,线的每个像素都通过for循环绘制
for (int i = 0; i < p.size(); i++)
g.drawOval(p.get(i).getX(), p.get(i).getY(),1,1);
这很好用,但现在我想实现另一个功能,我无法弄清楚如何使用我正在使用的数据结构:
如果球确实到达地图的边界并且线条将地图分成两部分,则其中一部分应填充颜色。
我不确定这种方法是否可行。 任何人都知道我可以使用什么数据结构,我也不确定 使用drawOval是最好的方法。有人有想法吗?
答案 0 :(得分:0)
你想要做的事实上很多事实上已经在这方面做了很多研究,你需要研究Polygon Clipping
技术来实现你想要的东西并回答你如何解决的问题用颜色填充它,一旦你能够得到要修剪的多边形的坐标,就可以实现Polygon Filling
方法(floodfill)中的任何一个来填充它。现在填充这么多像素也是一个消耗内存任务有很多方法可以克服这种内存泄漏情况但你现在不必担心。这里有一些可能对你有用的链接。
Computer Graphics - Clipping
Solid Polygon Clipping Techniques PS:你在制作像JezzBall