给数组一个值

本文关键字:一个 数组 | 更新日期: 2023-09-27 18:17:27

我正在尝试制作一个图像出现的游戏,如果没有点击图像应该消失。我需要帮助给我的数组一个值3,然后在另一个方法中减去它。

代码:

NameCount = -1;
NameCount++;
        Grid.SetColumn(mole, ranCol);
        Grid.SetRow(mole, ranRow);
        grid_Main.Children.Add(mole);
        for (int i = 0; i < NumofImages; i++)
        {
                //Where I must give a value to the array of the array to 3 for every image that appears.
        }
 //Where I am trying to make the image disappear after 3 seconds.
        private void deleteMole()
        {
            NumofImages = TUtils.GetIniInt(Moleini, "NumPictures", "pictures", 8);
            NumberofImages = Convert.ToInt32(NumofImages);
            for (int j = 0; j < NumofImages; j++)
            {
                CounterArray[j]--;
                if (CounterArray[j] == 0)
                {
//Not Sure How to delete image

谢谢你的帮助!

给数组一个值

您可以在另一个数组中跟踪图像。

将图像添加到视图后,还应将其添加到数组中:

images[j] = mole;

之后:

if (CounterArray[j] == 0)
{
    grid_Main.Children.Remove(images[j]);
}

但是使用静态数组和分离数据并不是一个好主意。

如果可以的话,最好将所有元数据和图像聚集在同一个结构中:

class Mole
{
    public int Counter { get; set; }
    public Control Image { get; set; }
}

并在单个 list中管理它们;添加和删除它们会更简单。

下面的一些代码说明了这个想法(不会编译):

class Mole
{
    public int X { get; set; }
    public int Y { get; set; }
    public int Counter { get; set; }
    public Control Image { get; set; }
    public bool IsNew { get; set; }
}
class Test
{   
    IList<Mole> moles = new List<Mole>();
    private static void AddSomeMoles()
    {
        moles.Add(new Mole{ X = rand.Next(100), Y = rand.Next(100), Counter = 3, Image = new PictureBox(), IsNew = true });
    }
    private static void DisplayMoles()
    {
        foreach (Mole mole in moles)
        {
            if (mole.IsNew)
            {
                grid_Main.Children.Add(mole.Image);
                mole.IsNew = false;
            }
        }
    }
    private static void CleanupMoles()
    {
        foreach (Mole mole in moles)
        {
            mole.Counter -= 1;
            if (mole.Counter <= 0)
            {
                grid_Main.Children.Remove(mole.Image);
                moles.Remove(mole);
            }
        }
    }
    static void Main()
    {   
        while (true)
        {
            AddSomeMoles();
            DisplayMoles();
            Thread.Sleep(1000);
            CleanupMoles();
        }
    }
}

如果你想给List中的每个元素一个特定的值,使用foreach循环。在本例中,它看起来像:

foreach(int currentElement in CounterArray)
{
    currentElement = 3;
}

这将循环遍历List的每个元素并将其设置为3。

编辑:如果你正在使用数组,你会做以下操作:

for (int i = 0; i < CounterArray.Length; i++)
{
    CounterArray[i] = 3;
}