zoukankan      html  css  js  c++  java
  • x01.MagicCube: 简单操作

    看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原。

    为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下:

     1 protected override void OnKeyDown(KeyEventArgs e)
     2         {
     3             base.OnKeyDown(e);
     4             switch (e.Key) {
     5                 case Key.Escape:
     6                     this.Close(); // 退出
     7                     break;
     8                 case Key.S:
     9                     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
    10                         stage.Reset();  // 重置
    11                         break;
    12                     }
    13                     stage.Upset(); // 打乱
    14                     break;
    15                 case Key.L:
    16                     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
    17                         stage.RotateOneGroup(0, Axises.X, true); // 左反拧
    18                         break;
    19                     }
    20                     stage.RotateOneGroup(0, Axises.X, false); // 左顺拧
    21                     break;
    22                 case Key.M:
    23                     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
    24                         stage.RotateOneGroup(1, Axises.X, true); // 中反拧
    25                         break;
    26                     }
    27                     stage.RotateOneGroup(1, Axises.X, false); // 中顺拧
    28                     break;
    29                 case Key.R:
    30                     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
    31                         stage.RotateOneGroup(2, Axises.X, true); // 右反拧
    32                         break;
    33                     }
    34                     stage.RotateOneGroup(2, Axises.X, false); // 右顺拧
    35                     break;
    36                 case Key.U:
    37                     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
    38                         stage.RotateOneGroup(0, Axises.Y, false); // 上反拧
    39                         break;
    40                     }
    41                     stage.RotateOneGroup(0, Axises.Y, true); // 上顺拧
    42                     break;
    43                 case Key.D:
    44                     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
    45                         stage.RotateOneGroup(2, Axises.Y, false); // 下反拧
    46                         break;
    47                     }
    48                     stage.RotateOneGroup(2, Axises.Y, true); // 下顺拧
    49                     break;
    50                 case Key.F:
    51                     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
    52                         stage.RotateOneGroup(2, Axises.Z, false); // 前反拧
    53                         break;
    54                     }
    55                     stage.RotateOneGroup(2, Axises.Z, true); // 前顺拧
    56                     break;
    57                 case Key.B:
    58                     if ((e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) {
    59                         stage.RotateOneGroup(0, Axises.Z, true); // 后反拧
    60                         break;
    61                     }
    62                     stage.RotateOneGroup(0, Axises.Z, false); // 后顺拧
    63                     break;
    64                 case Key.Left:
    65                     stage.RotateAll(Axises.Y, true); // 向左整体旋转
    66                     break;
    67                 case Key.Right:
    68                     stage.RotateAll(Axises.Y, false); // 向右整体旋转
    69                     break;
    70                 case Key.Up:
    71                     stage.RotateAll(Axises.X, true); // 向上整体旋转
    72                     break;
    73                 case Key.Down:
    74                     stage.RotateAll(Axises.X, false); // 向下整体旋转
    75                     break;
    76                 default:
    77                     break;
    78             }
    79         }
    View Code

    用到了一些关于 3D 方面的知识,可参看 x01.EarthRun,整体并不难,就不多言了。效果图如下:

    源代码:https://github.com/chinax01/x01.MagicCube

  • 相关阅读:
    Springboot如何优雅的解决ajax+自定义headers的跨域请求
    提升开发效率的一款mybatis开发神器
    深究Spring中Bean的生命周期
    阿里Canal框架(数据同步中间件)初步实践
    从技术角度分析推荐系统案例
    记一次token安全认证的实践
    为什么Redis 单线程却能支撑高并发?
    Python 派生类子类继承类
    Python 定制类与其对象的创建和应用
    Python 字典的创建赋值和动态扩展
  • 原文地址:https://www.cnblogs.com/china_x01/p/5240669.html
Copyright © 2011-2022 走看看