WPF实现魔方小游戏
作者:mq_shouhug753951mq 发布时间:2022-09-06 01:53:18
标签: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
0
投稿
猜你喜欢
- 水波纹效果已经不是什么稀罕的东西了,用过5.0新控件的小伙伴都知道这个效果,可是如果使用一个TextView或者Button或者其它普通控件
- JAVA IDEA 打开assert 设置概念(此处为借鉴前辈们的讲解)断言(Assertion)是Java中一条语句,包含一个布尔表达式,
- 最近一段时间生产环境频繁出问题,每次都会生成一个hs_err_pid*.log文件,因为工作内容的原因,在此之前并没有了解过相关内容,趁此机
- 本文详细地介绍了Java内存管理的原理,以及内存泄露产生的原因,同时提供了一些列解决Java内存泄露的方案,希望对各位Java开发者有所帮助
- 目录效果展示实现原理实现步骤完整代码展示效果展示实现原理首先需要生成绘制小花的坐标点,坐标点的横坐标是根据控件的宽度随机生成的,而纵坐标则设
- C#函数返回多个参数数值通过out/Ref实现,声明函数时用out指定返回变量。写了一个DEMO,输入字符“测试字符&a
- 前提最近发现各个频道推荐了很多ULID相关文章,这里对ULID的规范文件进行解读,并且基于Java语言自行实现ULID,通过此实现过程展示U
- 目录项目地址示例图片项目结构机器人平滑碰撞其它特性使用打包文件项目文件声明主要代码项目地址https://github.com/SCNU-A
- Java序列化是什么?Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程。反序列化
- Maven 的生命周期maven 将项目的生命周期(Lifecycle)抽象为了三种,每种生命周期中又包含了多个阶段(Phase)。也就是说
- 对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibern
- 本文实例为大家分享了Unity Shader实现动态过场切换图片的具体代码,供大家参考,具体内容如下一、简单介绍Shader Languag
- 利用栈实现一个简易计算器(Java实现),供大家参考,具体内容如下一、思路分析当我们输入一个类似于“7*2+100-5+
- 面对一个项目,对于Android应用开发框架的选择,我想过三种方案:1.使用Loader + HttpClient + GreenDao +
- MyBatis 获取子类的属性这里有个model类:基类public class user { pu
- 1. 定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2. 使用的
- 本篇文章主要介绍了android基础总结篇之三:Activity的task相关,具有一定的参考价值,有需要的可以了解一下。今天我们来讲一下A
- 本文实例讲述了Android编程实现自动检测版本及自动升级的方法。分享给大家供大家参考,具体如下:步骤:1.检测当前版本的信息Android
- ssm(spring springMVC mybatis)1.创建项目file->new->project2.新建的maven项
- Javaweb分页技术实现分页技术就是通过SQL语句(如下)来获取数据,具体实现看下面代码//分页查询语句select * from 表名