IntersectsWith
は確かのみ仕事Rectangles
間、ない三角形や円もellispisは、重複はどうなるのない限り動作しません私のコード
if (snakes.SnakeRec[i].IntersectsWith(food.foodSquare))
{
Win();
}
if ((snakes.SnakeRec[i].IntersectsWith(food.foodCircle))|| (snakes.SnakeRec[i].IntersectsWith(food.foodRec)))
{
restart();
}
は罰金作品です境界で..
しかし、非常に任意に複雑な形の交差点を見つけるためのトリックがある限りRegion
に割り当てることができます。 Region
を作成する1つの簡単な方法は、あなたがあなたの両方のためのRegions
を持っている場合は...
それらを引くほとんどあなたのような、GraphicsPath
に図形のすべての種類を追加することができますGraphicsPath
...
を使用しています図形をIntersect
にして、Region
がEmpty
であるかどうかをテストします。
あなたの図形を使用した例です。シェイプが描画されているコントロールやフォームを知る必要があります。さんはControl surface
それを呼びましょう..:
明らか
using (Graphics g = surface.CreateGraphics())
{
GraphicsPath gp1 = new GraphicsPath();
GraphicsPath gp2 = new GraphicsPath();
GraphicsPath gp3 = new GraphicsPath();
GraphicsPath gp4 = new GraphicsPath();
gp1.AddRectangle(fsnakes.SnakeRec[i]);
gp2.AddPolygon(food.foodTrianglePoints);
gp3.AddEllipse(food.foodCircle);
gp4.AddRectangle(food.foodRec);
Region reg1 = new Region(gp1);
Region reg2 = new Region(gp2);
Region reg3 = new Region(gp3);
reg2.Intersect(reg1);
reg3.Intersect(reg1);
reg4.Intersect(reg1);
if (!reg2.IsEmpty(g)) Win();
if (!reg3.IsEmpty(g) || !reg4.IsEmpty(g)) restart();
}
出典
2016-08-27 15:03:39
TaW
.NET 'IntersectsWith'方法が長方形で動作するので、カスタムシェイプが交差するかどうかをテストするために独自のコードを記述する必要があります。ちなみに、2016年の試合では、ヘビやサークルが長方形であると仮定するのはあまり意味がありません...ところで、あなたが学校に十分長く入っていると仮定すると、交差点を見つけることは数学的に複雑ではありません... Googleを使用すると、[円と四角の交点(C#)](http://eex-dev.net/index.php?id=100) – Phil1970