using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace YYK
{
public partial class MainPage : UserControl
{
struct Faces
{
///
/// X坐標
/// public int x;
///
/// Y坐標
/// public int y;
///
/// 圖標路徑
/// public string img;
}
///
/// 定义图标数量
/// struct Size
{
public int rows;
public int coloumns;
}
//图标数量 设置行、列,这里设置的行业至少有一个为偶数。不然随机出来的图标不能成对
Size size = new Size();
//随机后的图标存放
List
faces = new List();
//点击第一点的图标名
string clickFacesName = string.Empty;
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(slucFacesContainer_Loaded);
}
#region 初始化图标信息
void slucFacesContainer_Loaded(object sender, RoutedEventArgs e)
{
size.rows = 10;
size.coloumns = 8;
LayoutCellFaces(10,8);
}
#endregion
#region 向页面载入图标
///
/// 载入图标排版
///
///
///
void LayoutCellFaces(int rows, int columns)
{
faces = GetFaces(rows, columns);
for (int i = 0; i < rows; ++i)//row
{
for (int j = 0; j < columns; ++j)//column
{
Image ai = new Image();
if (i == 0 || j == 0 || i == rows || j == columns)
{
ai.Name = j + "-" + i;
layoutRoot.Children.Insert(0, ai);
Grid.SetRow(ai, i);
Grid.SetColumn(ai, j);
ai.Visibility = Visibility.Collapsed;
}
foreach (Faces f in faces)
{
if (f.x == j-1 &;&; f.y == i-1)
{
ai.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("Resources/" + f.img, UriKind.RelativeOrAbsolute));
ai.MouseLeftButtonUp += new Mouse
ButtonEventHandler(ai_MouseLeftButtonUp);
ai.MouseLeftButtonDown += new MouseButtonEventHandler(ai_MouseLeftButtonDown);
ai.Name = j + "-" + i;
ai.Tag = f.img;
layoutRoot.Children.Insert(0, ai);
Grid.SetRow(ai, i);
Grid.SetColumn(ai, j);
}
}
}
}
}
#endregion
#region 随机图标,要确保成对出现。否则不能消除
///
/// 隨機圖標
///
///
///
///
List GetFaces(int rows, int columns)
{
int _count = (rows) * (columns);
string[] faces = { "01.png", "02.png", "03.png", "04.png", "05.png", "06.png", "07.png", "08.png", "09.png", "10.png", "11.png", "12.png", "13.png", "14.png", "15.png", "16.png", "17.png", "18.png" };
List listFaces = new List();
List _return = new List();
for (int i = 0; i < (_count) / 2; i++)//這里只隨機數組的一半圖標,然后添加兩次可以確保圖標成對出現
{
string path = faces[new Random(i + DateTime.Now.Millisecond).Next(0, faces.Length-1)];
listFaces.Add(path);
listFaces.Add(path);
}
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < columns; c++)
{
Faces f = new Faces();
f.x = c;
f.y = r;
if (listFaces.Count > 0)
{
int num = new Random(r + c + DateTime.Now.Millisecond).Next(0, listFaces.Count - 1);
f.img = listFaces[num];
listFaces.Remove(listFaces[num]);
}
_return.Add(f);
}
}
return _return;
}
#endregion
#region 当鼠标点击上去时把图标变大一点以但能查看出点击了哪个图标
private void ai_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//点击时把图标变大一点
Image img = (Image)sender;
img.Height = 46;
img.Width = 46;
img.Margin = new Thickness(-5, -5, -5, -5);
}
#endregion
#region 当鼠标松开后判断两点是否可相连、可以则消除两点
priv