工作环境:
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace app0516
{
public partial class frmMain : Form
{
PictureBox[] fPictures;
public frmMain()
{
InitializeComponent();
Bitmap fImage = Properties.Resources.DogBoy;
fPictures = new PictureBox[16];
for (int i = 0; i < fPictures.Length; i++)
{
Rectangle r = new Rectangle(i % 4 * 75, i / 4 * 75, 75, 75);
fPictures[i] = new PictureBox();
fPictures[i].BorderStyle = BorderStyle.FixedSingle;
fPictures[i].Bounds = r;
fPictures[i].Image = fImage.Clone(r, fImage.PixelFormat);
fPictures[i].Click += new EventHandler(fPictures_Click);
this.pnlButton01.Controls.Add(fPictures[i]);
}
}
Random fRandom = new Random();
private void btnStart_Click(object sender, EventArgs e)
{
for (int i = 0; i < 100; i++)
{
int a = fRandom.Next(15);
int b = fRandom.Next(15);
Point lLocation = fPictures[a].Location;
fPictures[a].Location = fPictures[b].Location;
fPictures[b].Location = lLocation;
}
fPictures[15].Visible = false;
}
void fPictures_Click(object sender, EventArgs e)
{
PictureBox lPicture = sender as PictureBox;
if (!(
(lPicture.Top == fPictures[15].Top && Math.Abs(lPicture.Left - fPictures[15].Left) == 75) ||
(lPicture.Left == fPictures[15].Left && Math.Abs(lPicture.Top - fPictures[15].Top) == 75)))
return;
Point lLocation = lPicture.Location;
lPicture.Location = fPictures[15].Location;
fPictures[15].Location = lLocation;
bool lFinished = true;
foreach(PictureBox pic in fPictures)
if (!pic.Location.Equals(pic.Tag))
{
lFinished = false;
break;
}
if (lFinished)
MessageBox.Show("完成!");
}
}
}
结果如下: