C#如何实现拼图魔方小游戏

小编给大家分享一下C#如何实现拼图魔方小游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联建站专注于成都网站设计、网站制作、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。

先上一张原图

C#如何实现拼图魔方小游戏

代码也很简单,主要就是通过BitMap分隔现有(后面有时间可以优化下,让玩家自动上传图片,应该会更有意思)图片,然后Random随机打乱分割后图片的顺序,通过点击小方格来完成图片的拼图,为了更方便玩家,每个小方格添加了序号,玩家也可以不参考原图,按照小方格上的序号进行拼图

C#如何实现拼图魔方小游戏

序号功能实现主要是类MyButton集成父类Button实现:

public class MyButton : Button
  {
    private int number; 
    public int Number
    {
      get
      {
        return this.number;
      }
      set
      {
        this.Text = value.ToString();
        this.number = value;
      }
    } 
    public MyButton()
    {
    }
  }

随机分隔

Random r = new Random();
      int[] a = new int[24];
      int i = 0;
      int b;
      bool exist;
      while (i != a.Length)
      {
        exist = false;
        b = (r.Next(24) + 1);
        for (int j = 0; j < a.Length; j++)
          if (a[j] == b) exist = true;
        if (!exist) a[i++] = b;
      }
      for (int j = 0; j < a.Length; j++)
        ButtonArray[j].Number = a[j];
      // set picture pieces as the background image
      int Number;
      int Row, Column;
      for (int k = 0; k < 5; k++)
      {
        for (int j = 0; j < 5; j++)
        {
          if (k == 4)
            if (j == 4) break;
          Number = ButtonArray[k * 5 + j].Number; //Get The Number Of Button
          Row = (Number - 1) / 5;
          Column = (Number - 1) - (Row * 5);
          ButtonArray[k * 5 + j].Image = CurrentBitmapImage.Clone(new Rectangle(new Point(Column * 75, Row * 75), new Size(75, 75)), System.Drawing.Imaging.PixelFormat.DontCare);
        }
      }

点击小方格,通过改变当前点击的小方格X,Y坐标来更新小方格的位置

private void myButton_LocationChanged(object sender, EventArgs e)
    {
      MyButton A = sender as MyButton;
      YouWin = true;
      int ButtonNumber;
      this.NumberOfMoves++;
      if (ButtonArray == null)
      {
        this.FrmMain_Load(sender, e);
      }
      for (int i = 0; i < 5; i++)
      {
        if (YouWin == false)
          break;
        else for (int j = 0; j < 5; j++)
          {
            ButtonNumber = i * 5 + j;
            if (i == 4 && j == 4)
              break;
            else if (GetNumber(ButtonArray[ButtonNumber].Location.X, ButtonArray[ButtonNumber].Location.Y) == ButtonArray[ButtonNumber].Number)
              continue;
            else
            {
              YouWin = false;
              break;
            }
          }
      }
      if (YouWin)
      {

        if (MessageBox.Show("You Win This Game in " + this.NumberOfMoves.ToString() + " Moves\n\rDo You Want To Play Another Game ?", "Congratulation", MessageBoxButtons.YesNo) == DialogResult.Yes)
          this.LoadNewGame();
        else
          this.Close();
      }
    }
private void myButton_LocationChanged(object sender, EventArgs e)
    {
      MyButton A = sender as MyButton;
      YouWin = true;
      int ButtonNumber;
      this.NumberOfMoves++;
      if (ButtonArray == null)
      {
        this.FrmMain_Load(sender, e);
      }
      for (int i = 0; i < 5; i++)
      {
        if (YouWin == false)
          break;
        else for (int j = 0; j < 5; j++)
          {
            ButtonNumber = i * 5 + j;
            if (i == 4 && j == 4)
              break;
            else if (GetNumber(ButtonArray[ButtonNumber].Location.X, ButtonArray[ButtonNumber].Location.Y) == ButtonArray[ButtonNumber].Number)
              continue;
            else
            {
              YouWin = false;
              break;
            }
          }
      }
      if (YouWin)
      {

        if (MessageBox.Show("You Win This Game in " + this.NumberOfMoves.ToString() + " Moves\n\rDo You Want To Play Another Game ?", "Congratulation", MessageBoxButtons.YesNo) == DialogResult.Yes)
          this.LoadNewGame();
        else
          this.Close();
      }
    }

具体效果如下:

C#如何实现拼图魔方小游戏

以上是“C#如何实现拼图魔方小游戏”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享标题:C#如何实现拼图魔方小游戏
当前URL:http://pwwzsj.com/article/jpicpd.html