获取元素的最后位置

时间:2014-10-11 18:13:56

标签: c# winforms

我正在用C#(Win Form)编写一个Snake游戏。如果吃一块食物,蛇应该变长。

if(d.eaten  == true) // embedded in a timer_tick event

    {
        PictureBox a = new PictureBox();

        a.Top = panel1.Controls[2].Top;
        a.Left = panel1.Controls[2].Left;
        a.BackColor = Color.Black;
        panel1.Controls.Add(a);
        a.Width = 10;
        a.Height = 10; 

    }

    for (int i = 3; i < panel1.Controls.Count; i++) // i = 3 because we already have 3 controls in panel1
    {
        panel1.Controls[i].Top  = panel1.Controls[i-1].Top;
        panel1.Controls[i].Left = panel1.Controls[i-1].Left;
    }

此代码将创建新的图片框,但所有这些图片框都获得蛇的位置 - 它们将重叠。如果我向panel1.Controls[i].Top = panel1.Controls[i-1].Top -10;这样的位置添加一些修正值,那么蛇的身体将无法正确移动。

我想我需要一种方法来找到元素的最后位置 - 而不是当前位置。

1 个答案:

答案 0 :(得分:1)

在蛇游戏中,蛇在下一步行动中不会立即生长。这是解决问题的技巧。所以简单地记住,当你真正知道新的位置时,它需要增长并在下一步中添加一个新的段。

蛇游戏也为蛇本身使用队列。您从后面弹出一个线段,然后用新位置将其推到前面。