温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-06-24 14:15:54 来源:亿速云 阅读:407 作者:小新 栏目:编程语言

小编给大家分享一下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#如何实现拼图魔方小游戏”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI