好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

WPF实现魔方小游戏

今天给大家带来的是一块用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://blog.csdn.net/mq_shouhug753951mq/article/details/46831177

dy("nrwz");

查看更多关于WPF实现魔方小游戏的详细内容...

  阅读:52次