WPF 魔方小游戏

来源:互联网 发布:sms软件 编辑:程序博客网 时间:2024/05/16 08:50

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

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

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _0705{    class ClassWay    {        public ClassWay(int num)        {            if (num < 9 || (num > 17 && num < 27) || num > 35)            {                if (num % 3 == 0)                {                    IsT1 = true;                }                if (num % 3 == 1)                {                    IsT2 = true;                }                if (num % 3 == 2)                {                    IsT3 = true;                }            }            if (num > 8 && num < 36)            {                if (num < 12 || (num > 17 && num < 21) || (num > 26 && num < 30))                {                    IsL1 = true;                }                else                    if ((num > 11 && num < 15) || (num > 20 && num < 24) || (num > 29 && num < 33))                    {                        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[45];        ClassWay[] cW = new ClassWay[45];        Image[] imgAll = new Image[45];        List<Image> imgmMove = new List<Image>();        public MainWindow()        {            InitializeComponent();            this.Width = SystemParameters.FullPrimaryScreenWidth;            this.Height = SystemParameters.FullPrimaryScreenHeight;            this.Left = 0;            this.Top = 0;            this.WindowStyle = System.Windows.WindowStyle.None;            this.AllowsTransparency = true;            this.Background = Brushes.Transparent;            for (int i = 0; i < 45; i++)            {                num[i] = r.Next(1, 6);                int temp = 0;                for (int j = 0; j < i; j++)                {                    if (num[i] == num[j])                    {                        temp++;                        if (temp == 9)                        {                            i--;                            break;                        }                    }                }            }            for (int i = 0; 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 = 50;                imgAll[i].Height = 50;                imgAll[i].Source = new BitmapImage(new Uri("images/" + num[i] + ".png", UriKind.Relative));                back.Children.Add(imgAll[i]);                if (i < 9)                {                    Canvas.SetLeft(imgAll[i], 480 + i % 3 * imgAll[i].Width);                    Canvas.SetTop(imgAll[i], 50 + i / 3 * imgAll[i].Height);                }                else                    if (i < 18)                    {                        Canvas.SetLeft(imgAll[i], 300 + (i - 9) % 3 * imgAll[i].Width);                        Canvas.SetTop(imgAll[i], 230 + (i - 9) / 3 * imgAll[i].Height);                    }                    else                        if (i < 27)                        {                            Canvas.SetLeft(imgAll[i], 480 + (i - 18) % 3 * imgAll[i].Width);                            Canvas.SetTop(imgAll[i], 230 + (i - 18) / 3 * imgAll[i].Height);                        }                        else                            if (i < 36)                            {                                Canvas.SetLeft(imgAll[i], 660 + (i - 27) % 3 * imgAll[i].Width);                                Canvas.SetTop(imgAll[i], 230 + (i - 27) / 3 * imgAll[i].Height);                            }                            else                            {                                Canvas.SetLeft(imgAll[i], 480 + (i - 36) % 3 * imgAll[i].Width);                                Canvas.SetTop(imgAll[i], 410 + (i - 36) / 3 * imgAll[i].Height);                            }            }            for (int i = 0; i < 12; i++)            {                Button btn = new Button();                if (i < 3 || i > 8)                {                    btn.Width = 50;                    btn.Height = 30;                    if (i < 3)                    {                        btn.Content = "上";                        Canvas.SetLeft(btn, 480 + i * btn.Width);                        Canvas.SetTop(btn, 200);                    }                    else                    {                        btn.Content = "下";                        Canvas.SetLeft(btn, 480 + (i - 9) * btn.Width);                        Canvas.SetTop(btn, 380);                    }                }                else                {                    btn.Width = 30;                    btn.Height = 50;                    if (i > 2 && i < 6)                    {                        btn.Content = "左";                        Canvas.SetLeft(btn, 450);                        Canvas.SetTop(btn, 230 + (i - 3) * btn.Height);                    }                    else                    {                        btn.Content = "右";                        Canvas.SetLeft(btn, 630);                        Canvas.SetTop(btn, 230 + (i - 6) * 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 = 18; i < 26; i++)            {                if(cW[i].Num!=cW[i+1].Num)                {                    isSucess = false;                    break;                }            }            if(isSucess==true)            {                MessageBox.Show("成功");            }        }        private void Move()        {            Image imgTemp = new Image();            imgTemp.Source = imgmMove[0].Source;            int temp=cW[(int)imgmMove[0].Tag].Num;            for (int i = 0; i < 8; i++)            {                imgmMove[i].Source = imgmMove[i + 1].Source;                cW[(int)imgmMove[i].Tag].Num = cW[(int)imgmMove[i+1].Tag].Num;            }            imgmMove[8].Source = imgTemp.Source;            cW[(int)imgmMove[8].Tag].Num = temp;        }    }}

下载地址:

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

希望大家会喜欢

0 0
原创粉丝点击