<VerticalStackLayout>
<Grid Margin="10" x:Name="grid" RowDefinitions="*,*,*" ColumnDefinitions="*,*,*" Background="gray">
</Grid>
<Button Text="开始游戏" WidthRequest="120" Margin="20" Clicked="btnPlay_Clicked"/>
</VerticalStackLayout>
ImageButton[] arrBtn=new ImageButton[9];
int cover = 0;
int[] arrNum;
List<ImageSource> imgs = new List<ImageSource>()
{
ImageSource.FromFile("b1.gif"),
ImageSource.FromFile("b2.gif"),
ImageSource.FromFile("b3.gif"),
ImageSource.FromFile("b4.gif"),
ImageSource.FromFile("b5.gif"),
ImageSource.FromFile("b6.gif"),
ImageSource.FromFile("b7.png"),
ImageSource.FromFile("b8.gif"),
ImageSource.FromFile("b9.gif")
};
public MainPage()
{
InitializeComponent();
for (int i = 0; i < 9; i++)
{
ImageButton btn = new ImageButton()
{
Source = imgs[i],
CornerRadius = 0,
ZIndex = i,
};
btn.Clicked += Button_Clicked;
arrBtn[i] = btn;
grid.Add(btn,i%3,i/3);
}
}
private void btnPlay_Clicked(object sender, EventArgs e)
{
arrBtn[cover].IsVisible = true;
arrNum=new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
Random rm = new Random();
for (int i = 0; i < 8; i++)
{
int rmNum=rm.Next(i,9);
int temp = arrNum[i];
arrNum[i] = arrNum[rmNum];
arrNum[rmNum] = temp;
}
for (int i = 0; i < 9; i++)
{
arrBtn[i].Source = imgs[arrNum[i]];
}
cover=rm.Next(0,9);
arrBtn[cover].IsVisible = false;
}
private void Button_Clicked(object sender, EventArgs e)
{
int index = ((ImageButton)sender).ZIndex;
if(Math.Abs(index/3-cover/3)+Math.Abs(index%3-cover%3)==1)
{
ImageSource temp = arrBtn[cover].Source;
arrBtn[cover].Source = arrBtn[index].Source;
arrBtn[index].Source = temp;
arrBtn[cover].IsVisible = true;
arrBtn[index].IsVisible = false;
int tempInt = arrNum[index];
arrNum[index] = arrNum[cover];
arrNum[cover] = tempInt;
cover = index;
}
for (int i = 0; i < 9; i++)
{
if (arrNum[i] != i)
{ break; }
if (i == 8)
{
arrBtn[cover].IsVisible=true;
DisplayAlert("消息","恭喜您通过了游戏","确定");
}
}
}