视觉对象C++使用变量命名的图片框

Visual C++ picturebox naming with a variable

本文关键字:变量 对象 C++ 视觉      更新时间:2023-10-16

我正在为一个职业创建一个战舰游戏,并有一个图片框网格作为棋盘。

我想知道是否有任何方法可以将图片框引用为变量,以便我可以使用循环遍历它们。

命名方案是 pA1-pA10 表示列 1,pB1-pB10 表示列 2,依此类推,直至第 10 列。

我需要做的是找到一种方法来将此函数置于循环中,以便它可以循环访问列表,而不必为每个图片框提供此代码。

此代码用于检查数组中存储的值并将正确的图像加载到图片框中。

    if (pIsShip(0, 0)=='s')
    {
        pA1->Load("Ship.png");
    }
    else if (pIsShip(0, 0) == 'w')
    {
        pA1->Load("Water.png");
    }
    else if (pIsShip(0, 0) == 'h')
    {
        pA1->Load("Hit.png");
    }
    else if (pIsShip(0, 0) == 'm')
    {
        pA1->Load("Miss.png");
    }

pA1 等的类型是什么? 您不需要命名方案,而是需要索引方案。无论类型是什么,您都可以将所有这些指针放入 10 x 10 数组中,然后迭代以处理网格的所有空间。

搞清楚了。正是你说的斯科特麦克普。感谢您的帮助。不知为何,我的脑子里一片空白。

    static array<PictureBox^, 2>^ picBoxNames = gcnew array<PictureBox^, 2>(10, 10);

然后初始化数组中的每个项目并运行此代码,它运行良好。

    for (int row = 0; row < 10; row++)
        {
            for (int column = 0; column < 10; column++)
            {
                if (pIsShip(row, column) == 's')
                {
                    picBoxNames[row,column]->Load("Ship.png");
                }
                else if (pIsShip(row, column) == 'w')
                {
                    picBoxNames[row,column]->Load("Water.png");
                }
                else if (pIsShip(row, column) == 'h')
                {
                    picBoxNames[row,column]->Load("Hit.png");
                }
                else if (pIsShip(row, column) == 'm')
                {
                    picBoxNames[row,column]->Load("Miss.png");
                }
            }
        }