Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查标签是否在两个矩形之间移动(但不接触)?_C#_Label_Rectangles - Fatal编程技术网

C# 如何检查标签是否在两个矩形之间移动(但不接触)?

C# 如何检查标签是否在两个矩形之间移动(但不接触)?,c#,label,rectangles,C#,Label,Rectangles,我做了两个面对面的矩形(上下),它们之间的距离被存储成一个整数。我如何编写一个代码来检查某个东西(可移动的标签)是否在不接触任何矩形的情况下通过该距离(它们之间)?我已开始将标签制作成矩形: Rectangle rec = label2.Bounds; 更新: e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe1[0], 0, PipeWidth, Pipe1[1])); e.Graphics.FillRectang

我做了两个面对面的矩形(上下),它们之间的距离被存储成一个整数。我如何编写一个代码来检查某个东西(可移动的标签)是否在不接触任何矩形的情况下通过该距离(它们之间)?我已开始将标签制作成矩形:

Rectangle rec = label2.Bounds;
更新:

 e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe1[0], 0, PipeWidth, Pipe1[1]));
 e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe1[2], Pipe1[3], PipeWidth, this.Height - Pipe1[3]));

 e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe2[0], 0, PipeWidth, Pipe2[1]));
 e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe2[2], Pipe2[3], PipeWidth, this.Height - Pipe2[3]));

 e.Graphics.FillRectangle(Brushes.Green, new Rectangle((Pipe1[0] + Pipe1[1]) / 2, 0, 15, PipeDifferentY));
这是两个面对面的矩形,最后一个我想做一个小矩形来插入这两个矩形之间,我把这些矩形之间的距离存储在那个整数中,那么我如何在两个面对面的矩形之间放置一个新矩形,其高度为它们之间的距离

更新2:

我已经使用矩形相交,但现在我还有一个小问题:

if (intersect1 != Rectangle.Empty | intersect2 != Rectangle.Empty)
   {
     points++;
   }
加上10、20、40等等。我试过:

points += 1;

但它也不起作用,可能是因为标签与矩形重叠了不止一次。我应该如何解决这个问题?

我认为我们需要对您的代码有更多的了解,以解决您的积分问题。你每次加满油都要把它归零吗?我假设它是一个整数?当您单步执行代码时,它是执行该行时值的两倍,还是定期重新检查

我想一个更大的问题是,你想用“点”来表示交叉口总共发生了多少次吗?在一系列帧上的次数?我的怀疑是,你从来没有把它归零,但它只是不断累积,可能与你用来检查这个值的线程计时的速度相同

要回答第一个问题,假设您正确地处理了在前两个矩形之间构建第三个矩形的问题,那么您的检查将是三次。假设intersect1是标签边界与顶部矩形的交点,intersect2是标签边界与底部矩形的交点,intersect3是标签与由两个原始矩形的共享宽度创建的矩形的交点(从您的示例中,我不知道它们之间是否有水平偏移)以及它们之间的空间高度,它们位于两个管道之间,但在
时不接触((intersect1==Rectangle.Empty | intersect2==Rectangle.Empty)和&intersect3!=Rectangle.Empty)
。您当前的检查只是增加“点”当标签不与任一管道相交时

而且,就像一个疯狂的猜测,重新创造Flappy Bird?

是的,这就是重点=)我无法用另一种方式来判断这只鸟是在两个面对面的矩形之间,所以我想我应该在这两个面对面的矩形之间创建另一个小矩形,当然,是透明的,当鸟撞到它时,告诉我。