拼图(C#程序设计)


工作环境:



代码如下:

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("完成!");
              
        }
    }
}

结果如下:






















评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值