GlovePIE腳本語言文檔的中文翻譯

這大約是我2011年發佈的,再貼這兒

文內符號說明:“[]”內是可用可不用的項,“|”兩邊是單選項。

註釋可以爲以下幾種

// 註釋

' 註釋

REM 註釋

% 註釋

/* 多行

註釋 */

建議用“//”

debug=變量

就能在調試窗口實時顯示變量值

---------------------------------------

賦值語句

有向前賦值和向後賦值兩種形式,等價的。

向前賦值語句如下

變量名  = 表達式 [;]

變量名 := 表達式 [;]

向後賦值語句如下

表達式 => 變量名 [;]

例如

Ctrl = var.a

Ctrl = var.b

它有類似的效果:  Ctrl = var.a or var.b

------------------------------------------

IF語句

有以下句法

if 條件 then 語句 [;]

if (條件) [then] 語句 [;]

if 條件 [then] [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end [if]] [;]

if 條件 [then] [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end] else [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end [if]] [;]

if 條件 [then] [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end] (else if|elseif) 條件2 [then] [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end] (else if|elseif) 條件3 [then] [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end] else [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end [if]] [;]

--------------------------------------------

WHILE循環語句

當條件爲真則循環

有以下句法

while 條件 do 語句 [;]

while (條件) [do] 語句 [;]

while 條件 [do] [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end [while]] [;]

任何循環最多隻運行0.2秒,超過就強制中止。

--------------------------------------------

FOR循環語句

有以下句法

for 變量 (=|:=) 初始量 (to|downto) 結束量 [step 步長] do 語句 [;]

for 變量 (=|:=) 初始量 (to|downto) 結束量 [step 步長] [do] [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end [for]]

for (賦初值 ; 條件 ; 增量) [do] 語句 [;]

for (賦初值 ; 條件 ; 增量) [do] [begin] [{]

  語句 [;]

  語句 [;]

  ...

[}] [end [for]]

任何循環最多隻運行0.2秒,超過就強制中止。

--------------------------------------------

等待命令

有以下句法

wait 持續時間 [;]

wait(持續時間) [;]

通常爲持續時間指定單位。有效的單位是:ms, s, minutes, hours, days

--------------------------------------------

增減語句

有以下句法

var.x++

++var.x

Inc(var.x)

var.x--

--var.x

Dec(var.x)

--------------------------------------------

位移語句

有以下句法

左移變量N位

shl var.x, N

右移變量N位

shr var.x, N

--------------------------------------------

“說”命令

Say "句子"

Say("句子")

發出合成語音

--------------------------------------------

其他命令

ExitScript

退出當前腳本運行

ExitPIE

退出GlovePIE軟件

FlashPieWindow

閃GlovePIE的窗口

HidePie

隱藏GlovePIE

ShowPie

顯示GlovePIE

RestorePie

復位GlovePIE的窗口

MinimizePie

最小化GlovePIE的窗口

MaximizePie

最大化GlovePIE的窗口

UnMinimizePie

反最小化GlovePIE的窗口

UnMaximizePie

反最大化GlovePIE的窗口

Execute(文件名)

執行外部程序

Chain(文件名)

調用運行另一腳本

PlaySound(文件名)

播放音頻文件

Beep([頻率, 持續時間])

響單頻率聲

BeepAsterisk

響*音效

BeepExclamation

響!音效

BeepHand

響!音效

BeepQuestion

響?音效BeepDefault

響缺省音效

Display(text)

輸出信息

DebugPrint(text)

調試窗口輸出信息

OutputToFile(text)

輸出信息到文件裏

AddCode(text)

不知道

Type(字符串)

模擬鍵盤打入字符串

TypeUnicode(字符串)

模擬鍵盤打入Unicode字符串

Press(鍵)

按下鍵

Release(鍵)

釋放鍵

Toggle(鍵)

如果鍵當前是按下狀態,則釋放鍵,如果鍵當前是釋放狀態,則按下鍵。

SendOsc(ip, port, address, [p1, p2, p3…])

BroadcastOsc(port, address, [p1, p2, p3…])

這兩個是網絡發送信息的函數

ControlPanel, ControlPanelKeyboard, ControlPanelJoystick, ControlPanelMouse, ControlPanelP5, ControlPanelPPJoy, ControlPanelSpeech, ControlPanelMidi, ControlPanelDisplay這些都是打開各個設備的控制面板。

================================================================

GlovePIE內置函數

三角函數

單位是度

Standard trig functions: sin(x), cos(x), tan(x), sec(x), cosec(x), cotan(x)

Hyperbolic trig functions: SinH(x), CosH(x), TanH(x), SecH(x), CosecH(x), CotH(x)

Inverse trig functions: aSin(x), aCos(x), aTan(x), aSec(x), aCosec(x), aCotan(x)

Inverse Hyperbolic trig functions: aSinH(x), aCosH(x), aTanH(x), aSecH(x), aCosecH(x), aCotanH(x)

2D inverse tan function: atan2(x)

----------------------------------------------

舍入函數

ceil(x): 向正無窮方向取整

floor(x): 向負無窮方向取整

trunc(x), int: 向零方向取整

round(x): 四捨五入法取整  .5取最接近的偶數(銀行家舍入法)

frac(x): 取小數部分。 例如  Frac(-1.32) = -0.32

RoundTo(x, 位): 如果“位”是負或零,則按位數使用銀行家舍入法。如果“位”是正,則(rounds to that power of ten using Banker's Rounding.)

SimpleRoundTo(x [,位]): 和RoundTo函數基本一樣,除了只四捨五入,不用銀行家舍入法。位缺省值是-2。

--------------------------------------------------

正負函數

Sign(x): 如果x是正返回1,如果x是零返回0,如果x是負返回-1。

Abs(x): 返回x的絕對值。

--------------------------------------------------

指數和開方函數

sqr(x):  x^2

sqrt(x): x^(1/2)

power(x,y): calculates x^y

intPower(x,y): x和y取整後算 x^y

exp(x): e^x.  e is 2.71828

Ldexp(s,p):  s * (2^p)

Poly(x, a0, [a1, [a2, [a3, [a4, [a5, [a6]]]]]]):  a0 + a1*x + a2*(x^2) + a3*(x^3) + a4*(x^4) + ...

Log10(x): 10爲底數的對數

Log2(x): 2爲底數的對數

LogN(N, x): N爲底數的對數

Ln(x): 自然對數

LnXP1(x): x+1的自然對數

--------------------------------------------------

比較函數

IsZero(x): 如果是0返回真

IsInfinite(x): returns true if x is infinite

IsNaN(x): 如果不是數字返回真

SameValue(a, b [, epsilon]): 如果a和b相等返回真, or differ by no more than epsilon

InSet(x,a,b,c,d,e,f,g,...): 如果x匹配後面任意一值,則返回真

max(a,b): 返回較大的值

min(a,b): 返回較小的值

--------------------------------------------------

範圍函數

EnsureRange(x, a, b): 如果x在[a,b]區間,返回x,如果小於a則返回a,大於b則返回b。

InRange(x, a, b): 如果x在[a, b]區間內返回真

MapRange(x, a, b, c, d):  根據x在[a, b]範圍的比例映射[c, d]範圍。例如MapRange(2, 1, 3, 10, 30)返回20

EnsureMapRange(x, a, b, c, d): 和MapRange類似,只是當x超出[a,b]區間按EnsureRange反應。例如EnsureMapRange(4, 1, 3, 10, 30)返回30

--------------------------------------------------

隨機函數

Random: 返回0到1間的隨機數

Random(n): 返回0到n-1的隨機整數

RandomRange(a,b): 返回a到b-1的隨機整數

RandG(mean, StandDev): 返回高斯分佈隨機數

--------------------------------------------------

序數函數

odd(n): 如果是奇數返回真

pred(n): 返回 n-1

succ(n): 返回 n+1

--------------------------------------------------

時間函數

Now: 返回當前時間日期在1899.12.30之後多少天(非整數)

Time: 返回Now函數的小數部分

Date: 返回Now函數的整數部分

Tomorrow: 等於Date+1

Yesterday: 等於Date-1

CurrentYear: 返回當前年份

DateOf(x): 返回日單位。例如 DateOf(1999)返回1999 days

TimeOf(x): 返回日單位。例如 TimeOf(0.2)返回0.2 days

DayOfTheMonth(x), DayOfTheWeek(x), DayOfTheYear(x), 

HourOfTheDay(x), HourOfTheMonth(x), HourOfTheWeek(x), HourOfTheYear(x),

Daysbetween(x, y),HoursBetween(x, y),

DaysInAMonth(年,月):返回參數月有幾天

DaysInAYear(年):返回參數年有幾天

DaysInMonth(x)一直返回31 days;DaysInYear(x)一直返回365 days

DaySpan(x, y), HourSpan(x, y),

IncDay(x, [y])

DayOfweek(天數):返回參數天數除以7後餘下的天數

--------------------------------------------------

時序函數

Smooth(x, [額外楨數, [不工作區]])

根據x之前的額外楨數平滑之。不工作區缺省是0.

Pressed(鍵)按下就返回true。

Clicked(鍵)點擊(壓下鬆開算一次點擊)就返回true,不論單擊雙擊。

SingleClicked(鍵)單擊返回true。

DoubleClicked(鍵)雙擊返回true。

HeldDown(x, MinTime)

x爲真持續時間大於MinTime時返回true。

KeepDown(x, MinTime)

當x爲真後,持續保持true輸出MinTime時間。

================================================================

運算符

不同類型的量運算會自動轉換

a%

百分比號

-b

負號

|b|

取絕對值,b可以是數字、向量或矩陣。

a + b

a plus b

如果a和b是數就加運算;如果a和b是字符串就連接起來;如果a和b是布爾量就等同於and運算符;如果a是向量,b不是,它將擴展長度但不改變方向。

a - b

a minus b

如果a和b是數就減運算;如果a和b是字符串就連接起來;如果a和b是布爾量就等同於and運算符;如果a是向量,b不是,它將擴展長度但不改變方向。

a x b

a * b

a times b

a multiplied by b

a cross b

乘運算

a . b

a dot b

如果a和b是向量就 點乘運算,其他數則等同普通乘運算。

a% of b

a % of b

a%乘以b

a / b

a divided by b

普通除法運算。如果a和b是布爾量就等同於or運算符

a div b

整數除法。(a或b可以是非整數)

a mod b

a % b

取模運算。(注意這是可以非整取模。例如7.5 mod 3.5返回0.5)

a ^ b

a ** b

指數運算

a ^^ b

反覆指數運算。例如2^^4就是2^(2^(2^2))

b!

階乘

b!!

當b爲奇數,則等於從1到b的所有奇數的乘積。當b爲偶數,則等於從2到b的所有偶數的乘積

a & b

如果a和b是整數,進行逐位與運算,如果是非整數,先取整再運算,如果是字符串則連接起來。

a | b

如果a和b是整數,進行逐位或運算,如果是非整數,先取整再運算,如果是字符串則連接起來。

a shl b

a << b

a左位移b位,等於a * (2^b)

a shr b

a >> b

a右位移b位,等於a div (2^b)

not b

邏輯取反

a and b

a but b

a和b都爲真返回真(如果爲數,則>-0.5到<0.5的範圍內算假)。這只是邏輯運算,不是位運算符。

a or b

either a or b

a或b任意是真則返回真(如果爲數,則>-0.5到<0.5的範圍內算假)。這只是邏輯運算,不是位運算符。

neither a nor b

a和b都爲假返回真

a xor b

當且僅當a或b有一爲真,則返回真。

a = b

a == b

當a等於b,則返回真

a != b

a <> b

a isn't b

a is not b

當a不等於b,則返回真

a ~= b

如果a近似等於b,則返回真。(近似相等就是,字符串字母和順序都一樣,除了大小寫和空格不算。數字就是當把a轉化成b相同的單位制,兩者的差的絕對值小於一個很小的值。)

a !~= b

a ~!= b

如果a不近似等於b,則返回真。

a > b

a大於b則返回真

a < b

a小於b則返回真

a >= b

a大於等於b則返回真

a <= b

a小於等於b則返回真

b < a < c

c > a > b

如果a大於b並且小於c,則返回真

b <= a < c

c > a >= b

如果a大於等於b並且小於c,則返回真

b < a <= c

c >= a > b

如果a大於b並且小於等於c,則返回真

b <= a <= c

c >= a >= b

如果a大於等於b並且小於等於c,則返回真

==================================================

鍵盤

直接鍵名就可以讀或設置。但不推薦

例如F1有以下三種形式

F1

Key.F1  (推薦形式)

Keyboard.F1

還有控制鍵聯合用的寫法

^C

Ctrl+C  (推薦)

Ctrl and C

用Key.ScanCode或Key.VK讀取鍵掃描碼。

Key.Row返回第幾行(鍵盤最上面爲第一行)的按鍵被按下。無鍵被按時返回-1。

任意鍵被按下Key.AnyKey返回true。

設置Key.RawInput爲true,用來強制GlovePIE使用RawInput直讀鍵盤,而非用默認的DirectInput方式。

當有多個鍵盤,使用KeyN.鍵的形式會自動強制使用RawInput直讀鍵盤。

讀Key.Count的值可知正連着幾個鍵盤。

讀KeyN.Exists的值可知第N號鍵盤是否連着。

以下鍵不能在GlovePIE中使用

F Lock;My Documents;Messenger;LogOff;Power。

非標準的多媒體鍵和應用程序鍵能使用,但不能知道被按下多久。

GlovePIE也能模擬輸入Unicode字符。Key.Unicode後跟4位16進制數。如Key.Unicode03B1

字母上方數字鍵除可以Key.1,Key.2,Key.3……(推薦形式),也可以Key.one,Key.two,Key.three……。數字小鍵盤用Key.NumPad1,Key.NumPad2,Key.NumPad3……形式。數字小鍵盤上的“+”用Key.NumPadPlus,“-”用Key.NumPadMinus,“*”用Key.NumPadMultiply,“/”用Key.NumPadDivide,“.”用Key.NumPadDot,回車用Key.NumPadEnter。

“`”用Key.Console,“\”用Key.Backslash,“-”用Key.Minus,“=”用Key.Equals,“[”用Key.LeftBracket,“]”用Key.RightBracket,“;”用Key.Semicolon,“'”用Key.Apostrophe,左換檔鍵用Key.LeftShift,右換檔鍵用Key.RightShift,“,”用Key.Comma,“.”用Key.Dot,“/”用Key.Slash,左Ctrl鍵用Key.LeftCtrl,左窗口鍵用Key.LeftWindows,左Alt鍵用Key.LeftAlt,空格鍵用Key.Space,右Alt鍵用Key.RightAlt,右窗口鍵用Key.RightWindows,應用菜單鍵用Key.AppMenu,右Ctrl鍵用Key.RightCtrl,上箭頭鍵用Key.Up,下箭頭鍵用Key.Down,左箭頭鍵用Key.Left,右箭頭鍵用Key.Right。

有左右兩鍵的Shift、Ctrl、Alt、Windows都可用Key.Shift,Key.Ctrl,Key.Alt,Key.Windows。

鍵都可以用Key.Scan後跟十六進制鍵掃描碼錶示。例如Key.Scan5B。

==================================================

鼠標

==================================================

Wiimote

Wiimote支持8個Wiimote1到Wiimote8。用Wiimote等於默認Wiimote1。

支持除電源和同步按鈕以外的所有按鈕。如下:

Wiimote.Up, Wiimote.Down, Wiimote.Left, Wiimote.Right,

Wiimote.A, Wiimote.B,

Wiimote.Minus, Wiimote.Home, Wiimote.Plus

Wiimote.One, Wiimote.Two

Wiimote的加速度測量,X軸向右,Y軸向上,Z軸向前。

Wiimote.gx, Wiimote.gy, Wiimote.gz

Wiimote.g的值是gx,gy,gz的集合。

Wiimote.RawAccX, Wiimote.RawAccY, Wiimote.RawAccZ

Wiimote.RelAccX, Wiimote.RelAccY, Wiimote.RelAccZ

是帶單位的加速度值。

Wiimote.RawForceX,Wiimote.RawForceY,Wiimote.RawForceZ是過時的函數,只爲向後兼容保留,不建議再用。RawForce可以用固定比例轉換到RawAcc。RawForce=RawAcc*2.633

旋轉

Wiimote.Pitch, Wiimote.Roll

Wiimote.SmoothPitch, Wiimote.SmoothRoll(平滑值)

Pitch是垂直的角度。正面向上水平放置數值是0,紅外頭垂直向天花板數值是90,紅外頭垂直向地面數值是-90。

Roll是水平滾動角度。正面向上水平放置數值是0,向+按鈕方向滾動180度數值是180,向-按鈕方向滾動180度數值是-180。

Motion Plus

Wiimote.MotionPlus.YawSpeed    水平變動角度數值

Wiimote.MotionPlus.PitchSpeed  垂直變動角度數值

Wiimote.MotionPlus.RollSpeed  滾動變動角度數值

定位條

wiimote.dot1x, wiimote.dot1y

wiimote.dot4x, wiimote.dot4y

返回4個紅外燈的座標

Wiimote.dot1vis, Wiimote.dot2vis, Wiimote.dot3vis, Wiimote.dot4vis

返回4個紅外燈點是否被看到。

Wiimote.dot1size, Wiimote.dot2size, Wiimote.dot3size, Wiimote.dot4size

返回4個紅外燈點的大小(數值0到15之間)

Wiimote.Leds賦值0到15之間的數,控制Wiimote上的4個LED燈亮滅。

Wiimote.Led1, Wiimote.Led2, Wiimote.Led3, and Wiimote.Led4賦值true或false單獨控制Led燈亮滅。

Wiimote.Rumble賦值true,Wiimote力反饋開始震動。

Wiimote.Frequency發出所賦值頻率的聲音。

Wiimote.Volume賦值0到2之間數調節音量0%到200%。

Wiimote.Speaker賦值true或false控制喇叭發聲與否。

Wiimote.Mute賦值true或false,和Speaker功能一樣,只是邏輯值正好相反。

Wiimote.SampleRate賦值採樣頻率。採樣率必須是280的整數倍。當前GlovePIE僅支持3640Hz採樣率。

Wiimote.Battery讀出電量(滿電是192)。

讀Wiimote.Count的值可知正連着幾個Wiimote。

讀WiimoteN.Exists的值可知WiimoteN是否連着。

Wiimote中的存儲器部分

Wiimote.InByteString讀出整個存儲器的串。

或分別讀

var.a = Wiimote.InReport

var.b1 = Wiimote.InByte1

...

var.bN = Wiimote.InByteN

WiimotePoke([wiimote number], address, value)讀Wiimote中的存儲器部分

WiimoteSend(wiimote number, report number, [p1, p2, p3…])存進存儲器部分

==================================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章