2014-09-27 2 views
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--; 
    } 

} 

Если я закомментировать ту часть, где я уменьшить радиус, и сделать только один круг контур (закомментируйте для самого внешнего цикла (INT I = радиус ...) тогда круг отлично рисуется, за исключением этих двух странных плит, выступающих в стороне. Иногда выступающий блок находится справа (я думал, что это было тогда, когда оно было равно pi/2) и на нижней стороне. Но главная проблема заключается в том, что когда я пытаюсь заполнить круг, уменьшая радиус, круг ... ну ... становится квадратом. Он теряет свою круглую форму и развивает очень жесткие углы.

Я работал над этим довольно поздно, я даже не уверен, правильна ли моя математика. TBH, Я только что случайно бросил триггерные функции и, наконец, получил что-то похожее на круг. Если вы можете помочь мне определить, что не так, или сказать мне лучший способ сделать это, пожалуйста, дайте мне знать! Спасибо за помощь!

* Кроме того, радиус фактически диаметр (я насчитал), мне нужно, чтобы изменить имя ...

+0

Вы пытались отладить решение? Просто поместите некоторые точки останова, и вы можете смотреть шаг за шагом, что происходит. Если вы новичок в программировании, вы должны научиться отлаживать свой код. Очень удобно. Вы можете найти множество обучающих программ в Интернете. –

ответ

1

Ну я нашел ответ на свой вопрос. Оказывается, мне не нужно преобразовывать свои углы в радианы. Фактически, это просто испортит координаты. Просто использование «угла» вместо переменной «theta» устраняет проблему.

Смежные вопросы