无法检测Winforms控件中的每种类型的对象

时间:2013-07-07 03:32:18

标签: winforms c++-cli

因此,在使用C#之后,我开始学习C ++。 Microsoft.NET是我最喜欢的框架之一,我喜欢在C#和C ++中使用它。我正在尝试制作一个迷宫/射击游戏但我在控制方面遇到了一些问题。要检测碰撞检测,我使用:

void check_col(Object^sender, EventArgs^e)
    {
        if((Sprites::character->Location.X == (Tiles::wall1->Location.X - 15))
            && (Sprites::character->Location.Y >= Tiles::wall1->Location.Y) 
            && (Sprites::character->Location.Y <= Tiles::wall1->Location.Y + 15))
        {
            col_right = true;
            System::Windows::Forms::MessageBox::Show("We Have A Collision");
        }
        else {col_right = false;}
    }

我可以特别询问碰撞检测,但这对我来说很好。在询问“wall1”位置时,代码很重要。问题是它只能检测到被拉入屏幕的最后一面墙。好吧,我使用以下代码在屏幕上绘制所有内容:

int tilex = 0;
        int tiley = 0;
        for(int row = 0; row < 20; row++)
        {
            for(int column = 0; column < 20; column++)
            {
                switch(map[row][column])
                {
                case 0: make_wall1(); 
                    Tiles::wall1->Location = System::Drawing::Point(tilex, tiley);
                    this->Controls->Add(Tiles::wall1);
                    Tiles::wall1->BringToFront();
                }
                tilex += 15;
                if(column == 19)
                {
                    tiley += 15;
                    tilex = 0;
                }
            }
        }

所以我的问题是:我怎样才能获得所有“墙”位置?

注意:有时候在这些代码中你会看到15,那是因为墙是15x15p的瓷砖。

0 个答案:

没有答案