2016-11-20 5 views
-1

私はこのコードを取ろうとしています。私はついに1つの星を描くようになりました。25の異なる星を描画する方法を混乱させます。不明な点がまさにそれについて移動する方法について説明します。私は、ランダムに星を生成するために、新しいランダム変数int randomStars = (int)(Math.random()*25+1); // Variable for 25 Random Starsになるだろうと仮定しますが、私は一種の混乱し、そこからそれを取るところだ。Java:描画 "ランダム" Stars

私は助けに感謝したい。

マイコード(DrawingPanel.javaを使用):

import java.awt.*; 

public class StarSampler { 

     public static void main(String[] args) 
     { 
      DrawingPanel panel = new DrawingPanel(500, 500); 
      Graphics2D g = panel.getGraphics(); 
      g.setColor(Color.BLUE); 
      panel.setBackground(new Color(250, 0, 0)); 

      fillStar(g, 250, 250, 150, 5, .3); // How to rotate it to start at center? 
     } 

     public static void fillStar(Graphics2D g, int ctrX, int ctrY, int radius, int nPoints, double spikiness) 
     { 
      double xDouble[] = new double[2*nPoints]; 
      double yDouble[] = new double[2*nPoints]; 

      int xPoint[] = new int[2*nPoints]; 
      int yPoint[] = new int[2*nPoints]; 

      nPoints = (int) (nPoints * 2); 

      int randomStars = (int)(Math.random()*25+1); // Variable for 25 Random Stars 

      // Would Nestest loop go here? for (randomStars++; randomStars < 25; randomStars++) 
      for (int i = 0; i < nPoints; i++) 
      { 
       double iRadius = (i % 2 == 0) ? radius : (radius * spikiness); 
       double angle = (270) + (i * 360.0)/(nPoints); 

       xPoint[i] = (int) (ctrX + iRadius * Math.cos(Math.toRadians(angle))); 
       yPoint[i] = (int) (ctrY + iRadius * Math.sin(Math.toRadians(angle))); 
      } 
       g.fillPolygon(xPoint, yPoint, nPoints); // Creates polygon 
     } 
} 

マイ出力:

Current Output

+0

お互いの隣にペイントしたいのですか。 – Paul

+0

@Paul目標はお互いに隣り合っていましたが、お互いの上に完全に位置していなければどこでもうまく動作すると思います。 – Aramza

+0

大丈夫です。まず、星と星の2つの数字を作る必要があります(同じ大きさであると仮定します)。その後、 'fillStar'メソッドを使って星をレンダリングします。星を挿入したい位置をループし、中心座標として使用してください。 – Paul

答えて

0

ゆっくりビルドします。まず、2つの星、2つだけを配置することに集中します。星の中心の座標を選んで配置します。それを正しくするために調整してください(あなたの最初の試みにはおそらくエラーがあります)。テスト、修正、テストをもう一度行い、再度修正します。繰り返す。

次に、星が同一ではないように、スパイクなどの変化をして再生します。それがテストされ、働くときだけ、3つ、4つの星に移動します。より多くの星があれば、重複を避けるようにもっと注意する必要があります。