Это моя первая попытка создания 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--;
}
}
Если я закомментировать ту часть, где я уменьшить радиус, и сделать только один круг контур (закомментируйте для самого внешнего цикла (INT I = радиус ...) тогда круг отлично рисуется, за исключением этих двух странных плит, выступающих в стороне. Иногда выступающий блок находится справа (я думал, что это было тогда, когда оно было равно pi/2) и на нижней стороне. Но главная проблема заключается в том, что когда я пытаюсь заполнить круг, уменьшая радиус, круг ... ну ... становится квадратом. Он теряет свою круглую форму и развивает очень жесткие углы.
Я работал над этим довольно поздно, я даже не уверен, правильна ли моя математика. TBH, Я только что случайно бросил триггерные функции и, наконец, получил что-то похожее на круг. Если вы можете помочь мне определить, что не так, или сказать мне лучший способ сделать это, пожалуйста, дайте мне знать! Спасибо за помощь!
* Кроме того, радиус фактически диаметр (я насчитал), мне нужно, чтобы изменить имя ...
Вы пытались отладить решение? Просто поместите некоторые точки останова, и вы можете смотреть шаг за шагом, что происходит. Если вы новичок в программировании, вы должны научиться отлаживать свой код. Очень удобно. Вы можете найти множество обучающих программ в Интернете. –