c# - 查找面板位于哪个面板阵列中
问题描述
我正在做一个学校作业,我们必须使用(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 - 通过 OpenSSL 解密字符串
- r - 过滤R数据帧中的奇怪行号
- c# - 如何访问我创建的 Contour 的所有点?
- assembly - 在程序集中使用 printf 正确显示浮点数
- php - 具有基本和不记名身份验证标头的 cURL
- informix - 有没有一种方法可以为一个数据库使用多个 DBspace?
- javascript - 如何在点击时显示警报/弹出窗口?
- javascript - 在字符串中查找单词的字符,优化
- powershell - Jenkins Pipeline bat / powershell 编码 - 显示变音符号
- python - 无法创建二维以上的观察空间数组