private void CreateLevel(int levelNum) { int currentLevel = levelNum; if (picBox != null) { puzzle.Controls.Remove(picBox); picBox.Dispose(); picBox = null; } if (picBoxes == null) { images = new Image[currentLevel]; picBoxes = new PictureBox[currentLevel]; } int numRow = (int)Math.Sqrt(currentLevel); int numColumn = numRow; int unitX = puzzle.Width / numRow; int unitY = puzzle.Height / numColumn; int[] indexArr = new int[currentLevel]; for (int i = 0; i < currentLevel; i++) { indexArr[i] = i; if (picBoxes[i] == null) { picBoxes[i] = new CutePictureBox(); picBoxes[i].Click += new EventHandler(OnPuzzleClick); picBoxes[i].BorderStyle = BorderStyle.Fixed3D; } picBoxes[i].Width = unitX; picBoxes[i].Height = unitY; ((CutePictureBox)picBoxes[i]).Index = i; CreateBitmapImage2(image, images, i, numRow, numColumn, unitX, unitY); picBoxes[i].Location = new Point(unitX * (i % numColumn), unitY * (i / numColumn)); if (!puzzle.Controls.Contains(picBoxes[i])) { puzzle.Controls.Add(picBoxes[i]); } } Random(indexArr); for (int i = 0; i < currentLevel; i++) { picBoxes[i].Image = images[indexArr[i]]; ((CutePictureBox)picBoxes[i]).ImageIndex = indexArr[i]; } }
private void ChangeImageLocation(CutePictureBox box1, CutePictureBox box2) { int index2 = box2.ImageIndex; box2.Image = images[box1.ImageIndex]; box2.ImageIndex = box1.ImageIndex; box1.Image = images[index2]; box1.ImageIndex = index2; if (IsWin()) { Reset(); var win = new YouWinForm(); win.ShowDialog(); } }
public void OnPuzzleClick(object sender, EventArgs e) { if (first == null) { first = (CutePictureBox)sender; first.BorderStyle = BorderStyle.FixedSingle; } else if (second == null && actionCounts > 0) { second = (CutePictureBox)sender; second.BorderStyle = BorderStyle.FixedSingle; first.BorderStyle = BorderStyle.Fixed3D; ChangeImageLocation(first, second); actionCounts--; counter.Text = (Convert.ToString(actionCounts)); first = null; second = null; } else { Reset(); GameOver(); } }