2
这是我第一次尝试创建2D游戏,所以我的代码可能不如它的效率高。无论如何,我试图创建一个方法来创建我的瓷砖圈子。这种方法的要点是在我的屏幕上创建圆形污垢补丁。这里有一点我的代码:用瓦片创建一个圆圈
private void generateDirt(int x, int y) {
int dirt = 3;
int radius = random.nextInt(7) + 3;
for (int i = radius; i > 1; i--) {
for (int angle = 0; angle < 360; angle++) {
double theta = Math.toRadians(angle);
// Broken Line to solve jutting blocks
// if (theta % Math.PI == 0) theta = 0;
tiles[(int) (x + radius * (Math.sin(theta) * Math.cos(theta)))
+ (int) (y + radius
* (Math.sin(theta) * Math.sin(theta))) * width] = dirt;
}
radius--;
}
}
如果我注释掉,我减少半径的一部分,并绘制只是一个单圈轮廓(注释掉for循环的最外层(INT I =半径...)那么除了这两个奇怪的瓷砖突出在侧面之外,这个圆形是完美画出来的,有时候突出的块在右侧(我认为它是等于pi/2时)和底侧。但主要的问题是,当我试图通过减小半径来填充圆圈时,圆圈......以及......变成了正方形,它失去了圆形并形成了非常刚硬的角落。很晚,我甚至不确定我的数学是否正确。TBH,我只是随意地投入trig函数,最后得到了一个看起来像一个圆圈的东西。如果你能帮助我找出问题所在,或者告诉我一个更好的方法来做到这一点,请让我知道!谢谢您的帮助!
*另外,半径实际上是直径(我算),我需要更改名称...
您是否尝试过调试您的解决方案?只需放置一些断点,您就可以一步一步地观看正在发生的事情。如果你是编程新手,你应该学习如何调试你的代码。真的很方便。你可以在网上找到很多教程。 – 2014-09-27 06:37:23