首页 > 解决方案 > 查找面板位于哪个面板阵列中

问题描述

我正在做一个学校作业,我们必须使用(a)自定义类来制作一个需要多条蛇的蛇的工作游戏。

我试图使用面板阵列制作这些蛇。1 个名为 Snk 的面板阵列和 1 个名为 AI 的面板阵列(如果尚未开始,AI 就是一个东西)。这些是这样制作的:(这行得通)

//stated in public partial class Form1 : Form
        readonly PnlSnk[] Snk = new PnlSnk[200];
        readonly PnlSnk[] AI = new PnlSnk[200];
   
//Stated in public Form1()
            Snk[1] = new PnlSnk()
            {
                Size = new Size(16, 16),
                Location = new Point(ClientSize.Width / 3, ClientSize.Height / 2),
                BackColor = Color.Red,
                Name = "Snk-1"
            };
            Snk[1].Length++;
            AI[1] = new PnlSnk()
            {
                Size = new Size(16, 16),
                Location = new Point(ClientSize.Width / 3 * 2, ClientSize.Height / 2),
                BackColor = Color.Blue,
                Name = "AI-1"
            };
            AI[1].Length++;
            Controls.Add(Snk[1]);
            Controls.Add(AI[1]);

自定义面板的代码:

class PnlSnk : Panel
    {
        internal string Direction = "D";
        internal int Length = 1;
    }

我有这个增长功能(这不起作用):

private void Grow(PnlSnk P)
        {
            // this is the difficult part
            PnlSnk[] S = null;
            foreach (PnlSnk[] PS in Controls)
            {
                if (PS.contains) S = PS;
            }
            // end of difficult part
            S[S[1].Length] = new PnlSnk()
            {
                Size = new Size(16, 16),
                Location = S[S.Length - 1].Location,
                BackColor = S[1].BackColor
            };
            Controls.Add(S[S[1].Length]);
            S[1].Length++;
        }

我知道我只将 Snk[1] 而不是整个 Snk 数组添加到控件中,但这有点可视化我想要做什么。我试图做到这一点,所以当增长被触发时,它会找出面板属于哪个数组,它将是 Snk [1] 或 AI [1](因为那些是头部),并且只增长那个数组。AI 蛇最终将是可切换的,因此它不会一直存在。那么我的 Grow 函数如何知道它需要增长哪个数组呢?

标签: c#arrayspanel

解决方案


推荐阅读