所以,在使用了 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 的瓷砖。