今天给大家带来的是一块用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");