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

原文地址:https://www.cnblogs.com/china_x01/p/5240669.html