我正在尝试用C#制作游戏2048,但是当我移动瓷砖时我遇到了问题。
这是我保留瓷砖的地方:
picture = new PictureBox[4, 4] {
{pic1,pic2,pic3,pic4},
{pic5,pic6,pic7,pic8},
{pic9,pic10,pic11,pic12},
{pic13,pic14,pic15,pic16} };
当我按下“W”时,我会将其向上移动:
public void Up()
{
for (int i = 1; i < picture.GetLength(0); i++)
for (int j = 0; j < picture.GetLength(1); j++)
if(picture[i,j].Image!=null && picture[i-1,j].Image==null)
{
picture[i - 1, j].Image = picture[i, j].Image;
picture[i, j].Image = null;
Up();
}
}
但该代码只交换图片框中的图片而不是图片框本身。如何将图片框与图像及其所有属性互换?
答案 0 :(得分:0)
C#中没有切换功能,因此您需要一个临时辅助变量。
由您决定要切换的内容:
以下是一个简单的帮助函数示例,它交换引用及其位置:
void SwitchControls(PictureBox pb1, PictureBox pb2)
{
PictureBox temp = pb1;
Point tempLoc = pb1.Location;
pb1 = pb2;
pb2 = temp;
pb1.Location = pb2.Location;
pb2.Location = tempLoc ;
}
你可以这样称呼它:
SwitchControls(picture[i - 1, j], picture[i, j]);
要交换图像,您可以将功能写为
void SwitchImages(PictureBox pb1, PictureBox pb2)
{
Image temp = pb1.Image;
pb1.Image = pb2.Image;
pb2.Image = temp.Image;
}
等。