程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 用C#開發智能手機軟件:推箱子(七)

用C#開發智能手機軟件:推箱子(七)

編輯:關於C#

在上篇文章“使用 C# 開發智能手機軟件:推箱子(六)”中,我對Common/Pub.cs 源程序文件進行了介紹。在這篇文章中介紹 Common/Step.cs 源程序文件。

以下是引用片段:
1namespace Skyiv.Ben.PushBox.Common
2{
3 enum Direction { None, East, South, West, North } // 方向: 無 東 南 西 北
4 public enum Action { None, Create, Edit, Delete } // 設計: 無 創建 編輯 刪除
5
6 /**////
7 /// 走法步驟
8 ///
9 struct Step
10 {
11 Direction direct; // 前進方向
12 bool isBox; // 是否推著箱子一起前進
13 bool isStop; // “撤銷”時是否停留
14
15 public Direction Direct { get { return direct; } }
16 public bool IsBox { get { return isBox; } }
17 public bool IsStop { get { return isStop; } }
18
19 public Step(Direction direct, bool isBox, bool isStop)
20 {
21 this.direct = direct;
22 this.isBox = isBox;
23 this.isStop = isStop;
24 }
25
26 // isBox isStop None East South West North
27 // A B C D E
28 // x F G H I J
29 // x K L M N O
30 // x x P Q R S T
31
32 public static implicit operator char(Step step)
33 {
34 char c = "ABCDE"[step.direct - Direction.None];
35 if (step.isBox) c = (char)(c + 5);
36 if (step.isStop) c = (char)(c + 10);
37 return c;
38 }
39
40 public static implicit operator Step(char c)
41 {
42 int n = c - 'A';
43 return new Step((Direction)(n % 5), (n % 10 >= 5), (n >= 10));
44 }
45 }
46}

這個源程序文件中包含兩個枚舉(Direction 和 Action) 和一個結構(Step)的定義。

枚舉 Direction 用來表示工人和箱子移動的方向,包含五個成員:None, East, South, West, North。

枚舉 Action 用來表示在“設計”對話框中選取的動作,包含四個成員:None, Create, Edit, Delete。

結構 Step 用來記錄走法步驟,記錄的要素有:前進的方向,是否推著箱子一起前進,“撤銷”時是否停留。

我們還是來看兩幅圖吧:

在左邊這幅圖中,假設鼠標先點擊紅色圓圈的位置,因此工人就經過“1”和“2”兩步到達該位置。然後鼠標再點擊綠色圓圈的位置,因此箱子被推到該位置,而工人經過“3”、“4”、“5”和“6”四步到達箱子右邊一個單元格的位置,如右圖所示。這六步在程序中作為結構 Step 的六個實例被壓入堆棧中,如果用戶以後點擊了“後退”或“撤銷”按鈕(如右圖中紅色圓圈如示),則要從堆棧中彈出這些 Step 的實例。這六個 Step 的實例的值請看下表:

  第1步 第2步 第3步 第4步 第5步 第6步 Direct West South West West West West IsBox false false false true true true IsStop true false true false false false operator char N C N I I I

如果用戶點擊了“後退”按鈕,每點擊一下工人就後退(往 Step.Direct 的相反方向)一步,如果 Step.IsBox 的值是 true 的話,箱子也要跟著後退一步。如果用戶點擊了“撤銷”按鈕,工人就要一直後退到 Step.IsStop 為 true 的地方。也就是說,如果在右圖的狀態下,如果用戶先點擊一下“後退”按鈕,工人就帶著箱子後退一步(第6步)。如果用戶又點擊了“撤銷”按鈕的話,工人就會連續後退三步(第5步、第4步、第3步),到達左圖紅色圓圈的位置,而其中前兩步是帶著箱子後退的。這時如果再點擊一次“撤銷”按鈕的話,工人又會繼續後退二步(第2步、第1步),回到左圖工人所在位置。

結構 Step 的轉換操作符 char 是用來將保存通關步驟到配置文件(PushBox.cfg)和通關步驟文件(steps/*.bxs)中用的。結構 Step 的轉換操作符 Step 用來從配置文件或通關步驟文件中“回放”推箱子的步驟。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved