天天看点

WPF 魔方小游戏

今天给大家带来的是一块用WPF 实现魔方的小游戏,先看一下效果图

WPF 魔方小游戏

代码如下,先写一个类,用来判断是否可以移动

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _0705
{
    class ClassWay
    {
        public ClassWay(int num)
        {
            if (num <  || (num >  && num < ) || num > )
            {
                if (num %  == )
                {
                    IsT1 = true;
                }
                if (num %  == )
                {
                    IsT2 = true;
                }
                if (num %  == )
                {
                    IsT3 = true;
                }
            }
            if (num >  && num < )
            {
                if (num <  || (num >  && num < ) || (num >  && num < ))
                {
                    IsL1 = true;
                }
                else
                    if ((num >  && num < ) || (num >  && num < ) || (num >  && num < ))
                    {
                        IsL2 = true;
                    }
                    else
                    {
                        IsL3 = true;
                    }
            }
        }
        int num;

        public int Num
        {
            get { return num; }
            set { num = value; }
        }
        bool isT1;

        public bool IsT1
        {
            get { return isT1; }
            set { isT1 = value; }
        }
        bool isT2;

        public bool IsT2
        {
            get { return isT2; }
            set { isT2 = value; }
        }
        bool isT3;

        public bool IsT3
        {
            get { return isT3; }
            set { isT3 = value; }
        }

        bool isL1;

        public bool IsL1
        {
            get { return isL1; }
            set { isL1 = value; }
        }

        bool isL2;

        public bool IsL2
        {
            get { return isL2; }
            set { isL2 = value; }
        }

        bool isL3;

        public bool IsL3
        {
            get { return isL3; }
            set { isL3 = value; }
        }

    }
}
           

下面是主函数的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace _0705
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        Random r = new Random();
        int[] num = new int[];
        ClassWay[] cW = new ClassWay[];
        Image[] imgAll = new Image[];
        List<Image> imgmMove = new List<Image>();
        public MainWindow()
        {
            InitializeComponent();
            this.Width = SystemParameters.FullPrimaryScreenWidth;
            this.Height = SystemParameters.FullPrimaryScreenHeight;

            this.Left = ;
            this.Top = ;

            this.WindowStyle = System.Windows.WindowStyle.None;
            this.AllowsTransparency = true;
            this.Background = Brushes.Transparent;
            for (int i = ; i < 45; i++)
            {
                num[i] = r.Next(, );
                int temp = ;
                for (int j = ; j < i; j++)
                {
                    if (num[i] == num[j])
                    {
                        temp++;
                        if (temp == )
                        {
                            i--;
                            break;
                        }
                    }
                }
            }



            for (int i = ; i < 45; i++)
            {
                cW[i] = new ClassWay(i);
                cW[i].Num = num[i];
                //Image img = new Image();
                imgAll[i] = new Image();
                imgAll[i].Tag = i;
                imgAll[i].Width = ;
                imgAll[i].Height = ;
                imgAll[i].Source = new BitmapImage(new Uri("images/" + num[i] + ".png", UriKind.Relative));
                back.Children.Add(imgAll[i]);
                if (i < )
                {
                    Canvas.SetLeft(imgAll[i],  + i %  * imgAll[i].Width);
                    Canvas.SetTop(imgAll[i],  + i /  * imgAll[i].Height);
                }
                else
                    if (i < )
                    {
                        Canvas.SetLeft(imgAll[i],  + (i - ) %  * imgAll[i].Width);
                        Canvas.SetTop(imgAll[i],  + (i - ) /  * imgAll[i].Height);
                    }
                    else
                        if (i < )
                        {
                            Canvas.SetLeft(imgAll[i],  + (i - ) %  * imgAll[i].Width);
                            Canvas.SetTop(imgAll[i],  + (i - ) /  * imgAll[i].Height);
                        }
                        else
                            if (i < )
                            {
                                Canvas.SetLeft(imgAll[i],  + (i - ) %  * imgAll[i].Width);
                                Canvas.SetTop(imgAll[i],  + (i - ) /  * imgAll[i].Height);
                            }
                            else
                            {
                                Canvas.SetLeft(imgAll[i],  + (i - ) %  * imgAll[i].Width);
                                Canvas.SetTop(imgAll[i],  + (i - ) /  * imgAll[i].Height);
                            }

            }

            for (int i = ; i < 12; i++)
            {
                Button btn = new Button();
                if (i <  || i > )
                {
                    btn.Width = ;
                    btn.Height = ;
                    if (i < )
                    {
                        btn.Content = "上";
                        Canvas.SetLeft(btn,  + i * btn.Width);
                        Canvas.SetTop(btn, );
                    }
                    else
                    {
                        btn.Content = "下";
                        Canvas.SetLeft(btn,  + (i - ) * btn.Width);
                        Canvas.SetTop(btn, );
                    }
                }
                else
                {
                    btn.Width = ;
                    btn.Height = ;
                    if (i >  && i < )
                    {
                        btn.Content = "左";
                        Canvas.SetLeft(btn, );
                        Canvas.SetTop(btn,  + (i - ) * btn.Height);
                    }
                    else
                    {
                        btn.Content = "右";
                        Canvas.SetLeft(btn, );
                        Canvas.SetTop(btn,  + (i - ) * btn.Height);
                    }
                }
                btn.Tag = i;
                btn.Click += new RoutedEventHandler(btn_Click);
                back.Children.Add(btn);
            }


        }

        void btn_Click(object sender, RoutedEventArgs e)
        {
            imgmMove.Clear();
            Button btn = (Button)sender;
            switch (btn.Tag.ToString())
            {
                case "0":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsT1)
                        {
                            imgmMove.Add(img);
                        }

                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    Move();
                    break;
                case "1":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsT2)
                        {
                            imgmMove.Add(img);
                        }

                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    Move();
                    break;
                case "2":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsT3)
                        {
                            imgmMove.Add(img);
                        }

                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    Move();
                    break;
                case "3":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsL1)
                        {
                            imgmMove.Add(img);
                        }

                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    Move();
                    break;
                case "4":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsL2)
                        {
                            imgmMove.Add(img);
                        }

                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    Move();
                    break;
                case "5":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsL3)
                        {
                            imgmMove.Add(img);
                        }

                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    Move();
                    break;
                case "6":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsL1)
                        {
                            imgmMove.Add(img);
                        }
                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    imgmMove.Reverse();
                    Move();
                    break;
                case "7":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsL2)
                        {
                            imgmMove.Add(img);
                        }
                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    imgmMove.Reverse();
                    Move();
                    break;
                case "8":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsL3)
                        {
                            imgmMove.Add(img);
                        }
                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    imgmMove.Reverse();
                    Move();
                    break;
                case "9":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsT1)
                        {
                            imgmMove.Add(img);
                        }
                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    imgmMove.Reverse();
                    Move();
                    break;
                case "10":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsT2)
                        {
                            imgmMove.Add(img);
                        }
                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    imgmMove.Reverse();
                    Move();
                    break;
                case "11":
                    foreach (Image img in imgAll)
                    {
                        if (cW[(int)img.Tag].IsT3)
                        {
                            imgmMove.Add(img);
                        }
                    }
                    //MessageBox.Show(imgmMove.Count.ToString());
                    imgmMove.Reverse();
                    Move();
                    break;

            }
            bool isSucess = true;
            for (int i = ; i < 26; i++)
            {
                if(cW[i].Num!=cW[i+].Num)
                {
                    isSucess = false;
                    break;
                }
            }
            if(isSucess==true)
            {
                MessageBox.Show("成功");
            }

        }

        private void Move()
        {
            Image imgTemp = new Image();
            imgTemp.Source = imgmMove[].Source;
            int temp=cW[(int)imgmMove[].Tag].Num;


            for (int i = ; i < 8; i++)
            {
                imgmMove[i].Source = imgmMove[i + ].Source;
                cW[(int)imgmMove[i].Tag].Num = cW[(int)imgmMove[i+].Tag].Num;
            }
            imgmMove[].Source = imgTemp.Source;
            cW[(int)imgmMove[].Tag].Num = temp;
        }
    }
}
           

下载地址:

http://download.csdn.net/detail/mq_shouhug753951mq/8887491

希望大家会喜欢

继续阅读