【发布时间】:2019-03-24 20:06:59
【问题描述】:
使用实现并放置在表单上的二维按钮数组。
Button[,] tmpButton = new Button[x, y];
private void DrawGrid()
{
int ButtonWidth = 48;
int ButtonHeight = 48;
int start_x = 88;
int start_y = 200;
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
tmpButton[i, j] = new Button();
tmpButton[i, j].Top = start_x + (i * ButtonHeight);
tmpButton[i, j].Left = start_y + (j * ButtonWidth);
tmpButton[i, j].Width = ButtonWidth;
tmpButton[i, j].Height = ButtonHeight;
tmpButton[i, j].Click += new EventHandler(BTN_Grid_Click);
this.Controls.Add(tmpButton[i, j]);
}
}
}
如果在网格内设置了一个随机位置 (x,y) true 以猜测(通过单击周围的网格按钮)它的位置。如果位置是!true,它应该返回left right up down 指向我们之前设置的随机位置。如果true 位置在左上角,它也应该返回最接近的位置。
实现这样的事情的最佳方式是什么?
这已经接近了,但我看不到的东西有点偏离了......
public String GetDirection()
{
int xd = Guess.X - Clue.X;
int yd = Guess.Y - Clue.Y;
if(Math.Abs(xd) <= Math.Abs(yd))
return (xd <= 0) ? "Left" : "Right";
else
return (yd <= 0) ? "Down" : "Up";
}
这是正在发生的事情的直观表示......
【问题讨论】:
-
你试过什么?'
-
你有没有自己尝试过一些方法并且遇到过问题?
-
你有两个坐标。得到它们的区别,xd=x1-x2,yd=y1-y2。根据绝对值决定使用哪个坐标,然后根据符号决定实际方向。
-
@dumbdumbbadatthis 不分配。以前我使用的是一个简单的解决方案,如果
guessCount % 2 == 0根据 x 值放置在左侧或右侧,else根据 y 值向上或向下放置。但是如果guessCount 是偶数,这个解决方案有缺点,它会放置一个向上或向下箭头,即使它在同一行。试图考虑一种使用距离公式(x1,y1)^2 + (x2,y2)^2的方法,但不确定在这种情况下会有什么帮助。 -
@Dialectus 使用哪个坐标将基于最低绝对值,如果是负数
(left/down)或如果是正数(right/up)...我的逻辑在这里正确吗?
标签: c# winforms linq matrix multidimensional-array