• 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

  • 相关阅读:
    c# winform DataGridView单击选中一整行,只能单选,不能选择多行,只能选择一行
    c# winform 子窗体向父窗体传值
    as中使用字体
    出现“正尝试安装的adobe flash player不是最新版本”的解决方法
    打印等腰三角形
    【Array数组】数组的浅复制和深复制
    AIR程序app.xml配置详解(转)
    【Array数组】使用slice返回数组中的元素
    creationComplete和applicationComplete区别
    【XML】遍历xml子节点
  • 原文地址:https://www.cnblogs.com/china_x01/p/5240669.html
Copyright © 2020-2023  润新知