x01.MagicCube: 简单操作
看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原。
为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下:
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
switch (e.Key) {
case Key.Escape:
this.Close(); // 退出
break;
case Key.S:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
stage.Reset(); // 重置
break;
}
stage.Upset(); // 打乱
break;
case Key.L:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
stage.RotateOneGroup(, Axises.X, true); // 左反拧
break;
}
stage.RotateOneGroup(, Axises.X, false); // 左顺拧
break;
case Key.M:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
stage.RotateOneGroup(, Axises.X, true); // 中反拧
break;
}
stage.RotateOneGroup(, Axises.X, false); // 中顺拧
break;
case Key.R:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
stage.RotateOneGroup(, Axises.X, true); // 右反拧
break;
}
stage.RotateOneGroup(, Axises.X, false); // 右顺拧
break;
case Key.U:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
stage.RotateOneGroup(, Axises.Y, false); // 上反拧
break;
}
stage.RotateOneGroup(, Axises.Y, true); // 上顺拧
break;
case Key.D:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
stage.RotateOneGroup(, Axises.Y, false); // 下反拧
break;
}
stage.RotateOneGroup(, Axises.Y, true); // 下顺拧
break;
case Key.F:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
stage.RotateOneGroup(, Axises.Z, false); // 前反拧
break;
}
stage.RotateOneGroup(, Axises.Z, true); // 前顺拧
break;
case Key.B:
if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
stage.RotateOneGroup(, Axises.Z, true); // 后反拧
break;
}
stage.RotateOneGroup(, Axises.Z, false); // 后顺拧
break;
case Key.Left:
stage.RotateAll(Axises.Y, true); // 向左整体旋转
break;
case Key.Right:
stage.RotateAll(Axises.Y, false); // 向右整体旋转
break;
case Key.Up:
stage.RotateAll(Axises.X, true); // 向上整体旋转
break;
case Key.Down:
stage.RotateAll(Axises.X, false); // 向下整体旋转
break;
default:
break;
}
}
用到了一些关于 3D 方面的知识,可参看 x01.EarthRun,整体并不难,就不多言了。效果图如下:

源代码:https://github.com/chinax01/x01.MagicCube
x01.MagicCube: 简单操作的更多相关文章
- js简单操作Cookie
贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...
- GitHub学习心得之 简单操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitre ...
- Linq对XML的简单操作
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
- Linux 中 Vi 编辑器的简单操作
Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi filename //打开或新 ...
- python(pymysql)之mysql简单操作
一.mysql简单介绍 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库 ...
- ZooKeeper系列3:ZooKeeper命令、命令行工具及简单操作
问题导读1.ZooKeeper包含哪些常用命令?2.通过什么命令可以列出服务器 watch 的详细信息?3.ZooKeeper包含哪些操作?4.ZooKeeper如何创建zookeeper? 常用命令 ...
- ORACLE的安装与网页版创建表空间的简单操作以及PLsql的简单操作
1.oracle的安装: 安装简单易学,在这里不做解释.下载看装包后耐心等待,注意安装目录不要有中文字符,尽量按照指定目录进行安装.安装完成后会占用有大约5g的内存. 如果要卸载oracle,需要用其 ...
- C#反射技术的简单操作(读取和设置类的属性)
public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type ...
- Csharp 简单操作Word模板文件
原文:Csharp 简单操作Word模板文件 1.创建一个模板的Word文档 Doc1.dot 内容为: To: <Name> Sub:<Subject> Website i ...
随机推荐
- C#-正则,常用几种数据解析-端午快乐
在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...
- H5 Notes:PostMessage Cross-Origin Communication
Javascript中要实现跨域通信,主要有window.name,jsonp,document.domain,cors等方法.不过在H5中有一种新的方法postMessage可以安全实现跨域通信,并 ...
- SQL Tuning 基础概述06 - 表的关联方式:Nested Loops Join,Merge Sort Join & Hash Join
nested loops join(嵌套循环) 驱动表返回几条结果集,被驱动表访问多少次,有驱动顺序,无须排序,无任何限制. 驱动表限制条件有索引,被驱动表连接条件有索引. hints:use_n ...
- visual studio code更新
早上起来正在看go语言,vsc提示有更新,之后安装,重启之后显示中文菜单,显然vsc支持本地化了. 查看发行说明:https://code.visualstudio.com/updates#vscod ...
- C#语音朗读文本 — TTS的实现
TTS, Text To Speech的缩写,是使用语音朗读文本的技术.目前,在国内应用较多的是排队叫号系统 Windows 平台的TTS,通常使用的是微软自带的 Speech API. Window ...
- css设置table表格tr分离
table { border-collapse:separate; border-spacing:10px 50px; }
- STL: unordered_map 自定义键值使用
使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...
- Linux设置开机启动
开机启动 解决服务器重启,比如断点,导致服务没有启动的烦恼 1.整理机器上面运行的服务,编些成sh脚本,文件为:/home/rc/exec.sh #加载环境变量 source /etc/profi ...
- spring源码:学习线索(li)
一.spring xml配置(不包括AOP,主要了解在初始化及实例化过程中spring配置文件中每项内容的具体实现过程,从根本上掌握spring) <bean>的名字 &,alia ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 9.插件引擎设计
目 录 第九章 插件引擎设计... 2 9.1 框架的契约-接口... 2 9.2 插件的雏形-抽象类... 3 9.3 ...