//Logo Image
作者:葉欲 (2000-06-05);核可:徐業良 (2000-06-16)
附註:本文為八十八學年度元智大學機械工程研究所葉欲君碩士論文部份內容。

VBScript簡介、基本撰寫概念及範例

1. VBScript簡介

VBScript為一種近似Basic的腳本語言,不少重要的應用程式或是開發工具都使用到這個語言,如微軟的Internet ExploreVisual Studio等。在微軟的Visual Basic系列中,最重要的程式語言的根源是Microsoft Visual Basic for Application,簡稱為VBA,不論是Visual BasicOffice環境中的巨集都是以VBA為基礎,而VBScript也不例外。

“Script”通常稱為腳本語言。一般語言功能多半相當完整,除了控制用的敘述或關鍵字之外,開發工具多半也提供完整的程式庫,裡面有許多函數可供運用。而且這些控制用的敘述或是關鍵字都能夠直接和作業系統溝通,進行一些細部的控制動作。但是也因為如此,所花費的學習的時間多半較長。對於只想進行一些簡單的自動化作業的人員,或是剛入門的玩家來說,就顯得過於複雜。Script的概念則是希望把程式語言的學習門檻降低,有如排戲的劇本ㄧ樣,只是指示演員要做的動作、走位的順序與對白,而演員細部的表情、演出方式則不加控制,由其自由的發揮。因此語言本身做的多半是一些流程控制動作,而不牽涉到很多與系統溝通的細節及處理控制,這也是稱Script為腳本語言的原因。因此在資訊系統中的腳本語言一般都比傳統的程式語言來的簡單許多,其重心放在流程控制上,藉由許多既有的軟體元件來完成較細部的作業。

由於Script的簡單性與易學性,因此World Up在描述行為程序如移動、旋轉等,也使用此種腳本語言程式來模擬,儲存成副檔名為EBS的文字檔案格式,並可藉由Windows的筆記本來進行編修。

VBScript腳本語言有了基本概念後,接著則針對在使用World Up時的基本撰寫概念,以作為學習之初的基礎。而較為進階與複雜的語法與程式庫,則參考World Up的線上說明,其有更為詳盡的說明與程式碼範例。

2. Script基本撰寫概念

World Up利用Script來進行行為模擬,除了Script本身具有簡單性及易學性外,另外一個好處是其不須經過編譯即可執行,這種控制執行動作的方式相似於過去在DOS環境下,利用批次檔的方式進行大量重複性自動化的執行動作。以下針對script 模式、程式接續線與註釋、變數型態、宣告與設定等三項作說明。

(1)Script的模式

World Upscript有兩種模式,分別為單一模式及工作模式。單一模式的script語言腳本乃以Main宣告作為程式開頭,其可以單獨執行以進行行為模擬,因此這樣的script不須附加於物件上即可運作。其範例如圖1所示,此script運作時則會在螢幕上出現一訊息視窗,顯示出“You have run a stand alone script”的訊息。

1 單一模式script範例

而工作模式的script乃以Task宣告作為開端,此工作程序必須具有一個適當的資料形態參數,例如方位、向量等。工作模式的script必須附加於物件上,在進行模擬時物件方能產生動作,而一個物件能夠附加一個以上的工作模式script。圖2為工作模式之script範例,此範例程式先定義“Sphere”形態為物件變數,並將此物件的名稱以訊息視窗顯示之,其中“name”係指此物件的屬性參數。

2 工作模式script範例

(2)程式碼接續與註釋符號

通常在撰寫程式碼時,一行程式碼相應於一個指令。而為了整體程式碼的整齊,應儘可能將程式碼撰寫於編輯視窗內(其字數約略在75個字元)。然而,若撰寫的程式碼過長,則可在第一行程式碼末端加上底線符號( _ ),作為與下一行程式碼接續的符號,其範例如圖3所示。

3 程式碼接續範例

此外為了讓其他設計者能夠方便、快速的觀看與運用所撰寫程式碼,通常會在程式碼中加入必要的註釋,以說明該程式碼的功用為何。World Up所提供的註釋符號有利用“Rem”敘述及撇號( ‘ ),在註釋符號後面的字串表示對該程式碼的說明,在程式碼執行時會被忽略之,圖4為註釋之範例。

4 程式碼註釋範例

(3)變數型態、宣告與設定

VBScript的基本資料型態包括整數(Integer)、單倍精數(Single)、雙倍精數(Double)及字串(String)等,而為了要執行三度空間模擬,World Up增加了如二維向量(Vect2d)、三維向量(Vect3d)、方位(Orientation)3x3矩陣 (Matrix3d)等變數型態。

在宣告變數方面則是利用“Dim”敘述來完成,其宣告方式包含單一與複合兩種形式。單一形式為在每一個Dim敘述後宣告一個變數名稱及其型態,而複合形式則是在一個Dim敘述後宣告多個變數名稱與其型態,利用逗號( , )將每個變數分開,必要時亦利用底線符號接續程式碼,圖5為變數宣告形式之範例。

5 變數宣告形式範例

完成變數的宣告後,我們則要為這些變數設定其所代表的值。在World Up中變數有兩種類別,分別為物件變數(object variable)與非物件變數(non-object variable)。物件變數係指World Up中的各種物件型態,而非物件變數則包含整數、字串、向量等等。非物件變數的設定乃利用等號( = )進行數值分配,並利用如等於( = )、大於( > )、小於( < )等運算符進行比較,圖6為非物件變數設定的範例。

6 非物件變數之值的分配與比較

物件變數值的分配與非物件變數相同,亦是利用等號進行分配,較為特別的是在分配敘述前必須先加上Set的指令,其設定範例如圖7所示。

7 物件變數值分配設定

物件變數值的比較是藉由“is”運算符來完成,此外亦可利用“not”運算符來辨別兩物件是否相同,其敘述範例如圖8所示。

8 物件變數值比較敘述

3. Script基本程式範例

在了解World Up Script基本的撰寫概念後,以下則針對旋轉、移動等基本應用討論之。

(1)基本旋轉程式範例

首先在World Up“Type Browser”視窗中建立一個立方體物件,修改其名稱為Block1,建立完成後按下模擬視窗的“Zoom to select node”功能扭,以將所建立的物件呈現在視窗中間,其完成後的狀態如圖9所示。

9 立方體物件建立完成狀態圖

完成物件建立後,則撰寫讓該物件旋轉之程式碼。為了要完成旋轉的行為,將利用到rotate指令,其使用語法為[Movable].Rotate Axis, Angle,其中Movable為旋轉之物件,Axis係指旋轉軸(參數設定為X_AXISY_AXIS、及Z_AXIS),而Angle係指旋轉角度(其單位為弧度)。程式碼的內容如圖10所示。

10 物件旋轉程式碼

該程式碼中首先定義工作物件為Block1,並將其分配給obj變數,而旋轉角度則定義為單倍精數並指定其值為1弧度,最後加上旋轉指令並以end sub作為程式結束敘述,如此物件旋轉程式即告完成。

完成程式碼的撰寫並將其儲存為適當檔案名稱後,Type Browser視窗的Script型態將出現ㄧscript物件。為了要讓物件旋轉,尚須將所撰寫的程式碼附加於物件上(於物件屬性欄中的Tasks屬性附加之),物件方可具旋轉的動作,其旋轉做動影片如圖11所示。

11 立方體物件旋轉視訊影片

(2)基本移動程式範例

首先建立ㄧ立體物件,其建立方法如同旋轉範例。為了讓物件具有位移的行為,將利用Translate指令,其語法為[Movable].Translate X, Y, Z,其中XYZ分別所要移動的參考座標軸,其資料型態均為單倍精數,移動程式碼如圖12所示。

12 物件移動程式碼

在程式碼中我們將Block定義為物件變數,由於Block是為Block1的上ㄧ階層,所以Block1繼承Block所具有的屬性,因此如此的變數設定是可行的(上個範例亦可如此設定之)。這裡我們讓立體物件朝著Z軸移動,最後並將所撰寫的script附加於Block1物件則可,其移動影片如圖13所示。

13 立體物件移動視訊影片

此節所提之程式範例係以第二節所討論的script撰寫基本概念為主,利用基本的的變數宣告、配值及函式語法讓所建立的物件能夠具有行為動作。程式撰寫的能力必須靠不斷的練習及參考他人所撰寫的程式碼,以累積自我學習的經驗。而World Up所提供的數個範例將可作為設計時的靈感,而其所附之線上說明有更為詳盡的說明及簡易範例說明,是為撰寫程式之重要參考文件。