2016-12-12 20 views
-3

ランダムに重なり合わない複数の円を描きたいと思います。そのために、円の半径とxとyの位置を格納するのオブジェクトを作成する場合は、(これらはランダム)です。次にこれらのオブジェクトを配列に追加して、後で円が他の円と重なるかどうかを計算します。複数の値+名前を1つのオブジェクトに格納する

私は、コードは次のようになりますJavascriptをp5.jsであることを知っている:

var circles = []; 
for (var i = 0; i < 30; i++) { 
    var circle = { 
    x: random(width), 
    y: random(height), 
    r: 32 
    }; 
    circles.push(circle); 
} 

//and now I can draw the circles like following but in a loop: 

ellipse(circles[i].x, circles[i].y, circles[i].r*2, circles[i].r*2); 

C#でこれを行う方法はありますか?

public class Circle 
    { 
     // In C# this is called a "property" - you can get or set its values 
     public double x { get; set; } 

     public double y { get; set; } 

     public double r { get; set; } 
    } 

    private static List<Circle> InitializeList() 
    { 
     Random random = new Random(); 

     List<Circle> listOfCircles = new List<Circle>(); 

     for (int i = 0; i < 30; i++) 
     { 
      // This is a special syntax that allows you to create an object 
      // and initialize it at the same time 
      // You could also create a custom constructor in Circle to achieve this 
      Circle newCircle = new Circle() 
      { 
       x = random.NextDouble(), 
       y = random.NextDouble(), 
       r = random.NextDouble() 
      }; 

      listOfCircles.Add(newCircle); 
     } 

     return listOfCircles; 
    } 

ロジックは実際にはWindowsフォーム、ASP.NET、WPF、または何をやっているかどうかに依存し、画面上でこれを描くために、しかし、あなたはしたい:

+0

[Ellipse](https://msdn.microsoft.com/en-us/library/system.windows.shapes.ellipse(v = vs.110).aspx)を使用するか、独自のクラスを書くことができます。 –

+7

はいC#でそれを行う方法があります。 – Auguste

+0

VSフォームプロジェクトでは、ツールボックスに使用できる楕円形のVisual Basic Power Packがあります。楕円形は、サイズ幅とサイズ高さがあり、円を描くように等しくすることができます。だからあなたはリストを持つことができます circles = new List (); – jdweng

答えて

2

はちょうどこのような何かをC#クラスにまで読む

foreach (Circle circle in InitializeList()) 
{ 
    // This'll vary depending on what your UI is 
    DrawCircleOnScreen(circle); 
} 
1
class Circle { 
    public double Radius { get; set; } 
    public Vector2 Position { get; set; } 
} 

class Vector2 { 
    public double X { get; set; } 
    public double Y { get; set; } 
} 

:ような何かを行います。

関連する問題