Blackey Script (V) – 自定義函數

在開發自己的腳本時,可能會有一些經常使用的判斷式, 像是我們先前提到的:“當存在影像時,點擊該影像” 的判斷式。 if (find("res/20190809-131033.png")) { click("res/20190809-131033.png"); } else { print("沒有找到"); } 那如果我的腳本有很多地方都用到這個算式, 每個地方都要重複寫一次,是不是太累啦? 好在Blackey Script支援自定義函數的功能, 現在讓我們看看要怎麼定義自己的函數 ε≡ヘ( ´∀`)ノ 語法 自定義函數需要設定函數名稱以及輸入的參數,如下所示: def function_name (parameter1, parameter2, ...) {     expression1;     expression2;     ...     return expression; // optional } 在自定義函數內部的變數名稱跟外部是獨立的, 目前也僅支援傳值呼叫(Call by value), 意思是調用自定義函數時會將傳入參數複製一份進去,範例如下: def foo(x, y) [...]

By |2021-07-23T09:33:58+08:0015 10 月, 2019|Blackey Script|0 條評論

Blackey Script (IV) – Misc functions (print, random, msleep)

前面介紹完了Blackey Script主要的功能, 在這裡虎喵小編想介紹剩餘的API,有時候缺少這些函數會很麻煩呀 (っ´ω`c) Functions 函數 功能 範例 print (expression1, …) 列印參數到日誌視窗 print(x); random ( value ) 回傳 0 ~ (value-1) 之間的隨機數 x = random(10); msleep ( value ) 睡眠 value 毫秒 msleep(500); print (expressions) 首先來介紹一下debug的好捧由,print函數吧~ 你可以使用print函數列印數個不同的表達式, print函數會印出每個表達式計算得到的原型。 關於Blackey Script的基本型態,可以參考這篇文章。 這邊我們簡單做個示範: x = 1; y = pos(0.1, 0.2); z [...]

By |2021-07-23T09:34:01+08:0015 10 月, 2019|Blackey Script|0 條評論

Blackey Script (III) – KeyCode and Input

在前一篇的觸摸事件之中,我們順便示範了怎麼觸發按鍵事件。 在這一篇文章中,我們會說明keycode的特性, 也會順便介紹一下如何使用input函數來輸入字串。 Functions 函數 功能 keycode(value) 發送Android KeyEvent input(string) 發送對應的字串給設備。 keycode(value) keycode函數是用來發送Android KeyEvent給設備時使用。 按鍵事件跟觸摸事件很類似, 由一個或多個ACTION_DOWN與一個ACTION_UP的事件串接而成。 在目前的Blackey Script中,我們簡化了這個按壓方式, 在腳本運行到keycode(value)時,會自動送出ACTION_DOWN與ACTION_UP事件, 不過也因此目前Blackey Script並不支援長按硬體鍵的功能。(•ㅂ•)/ keycode的使用方法就如上一篇文章示範給大家看的, 只要調用keycode並填入對應的鍵值即可。 // 觸發 Power Key keycode(26); 在Blackey Script裡面使用到的KeyCode是遵照Android KeyEvent來制定的, 以下羅列出內建的按鍵會對應到的KeyCode表。 KEYCODE ACTION 3 HOME 4 BACK 24 VOLUME UP 25 VOLUME DOWN 26 POWER 66 ENTER [...]

By |2021-07-23T09:34:04+08:0015 10 月, 2019|Blackey Script|0 條評論

Blackey Script (II) – Press, Drag, and Wheel

前面說到了基本的點擊功能, 不過有時也想要做到長按,或者是拉動這樣的行為, 因此這一小節就來提一下按壓相關的功能吧 =͟͟͞͞( •̀д•́) Functions Blackey Script與觸摸事件相關的有下列這些指令: 函數 功能 press(position) 按下某個座標點 move(position) 移動到某個座標點 release(position) 離開某個座標點 wheel(direction, position) 在某個座標點模擬滾輪事件 direction = 0 時表示向上滾動; direction = 1 時表示向下滾動。 觸摸事件 Android的觸摸事件是由按下 => 移動 => 離開 這三種事件組合而成的。 在滑動的時候,移動的成份會佔很大,距離也相對較長; 如果是點擊/長按的時候,通常移動的比例就大幅下降了。 一般來說,比較少直接使用這三個指令來模擬滑動的行為, 取而代之的是使用編輯畫面上面的錄製功能(Rec.)來自動完成滑動的紀錄。 下面的範例是一個開啟螢幕的手順: 按下Power Key (我們會在下一篇文章介紹KeyCode) 拉開解鎖頁面 (press – move [...]

By |2021-07-23T09:34:07+08:0015 10 月, 2019|Blackey Script|0 條評論

Blackey Script (I) – Find and Click

熟悉基本概念後,接下來就來看看Blackey有哪些內建的功能吧 ⎝( OωO)⎠ 在Hello Blackey!裡面我們先簡單示範了一下圖像搜尋的功能, 現在讓我們在這邊再多著墨一些。 Functions 函數 功能 find(path) 給予一個圖像的路徑, 尋找目前的畫面中是否存在該圖像。 click(path) dclick(path) 給予一個圖像的路徑,單擊/雙擊該圖的座標點。 就算畫面上不存在此圖像時,仍會點擊擷取圖像時的座標。 find(path) 輸入參數:圖像的相對路徑 反饋:如果當前畫面存在此圖,回傳1;反之回傳0 find函數經常會搭配前面提到的 if / else 語法來一起使用, 來完成"存在該圖時,執行某動作",如下所示: if (find("res/20190809-131033.png")) { print("找到了"); } else { print("沒有找到"); } 不熟悉if / else語法讀者可以參考前面這篇文章。 click(path), dclick(path) 輸入參數:圖像的相對路徑 反饋:點擊該圖像紀錄的座標位置,即使畫面上不存在該圖,仍會進行點擊。 擷取圖片時,Blackey Script就已經將該圖的座標點記錄下來, 因此即便當前畫面上不存在此圖像時,仍會點擊擷取圖像時的座標。 如需查看圖像座標,可以在圖像擷取視窗讀取該張圖像, 標示紅色叉叉的部份即為點擊之座標。 你可以直接點擊,不做其他判斷: [...]

By |2021-07-23T09:34:10+08:0014 10 月, 2019|Blackey Script|0 條評論

Blackey Script Intro. (VI) – Statements

陳述式 Statements(陳述式)是用來控制變數要如何操作、怎麼進行操作的程式碼, Blackey Script的陳述式同樣借鑒了C++的語法進行撰寫。 一般而言,程式碼的多數比例為運算陳述式, 運算陳述式將會由上到下依序執行, 執行過程遇到其他陳述式時則可能進行跳轉。 各種陳述式語法條列如下表: 陳述式語法 Expression statement Selection statement Iteration statement Jump statement 接下來,我們對每一種不同的陳述式展開說明。 運算陳述式 - Expression statement 運算陳述式的語法相當簡單,注意語法內的方括號是需要忽略的。 [expression ] ; 運算陳述式會依序執行,最常見的運算陳述式如指派/呼叫函式等,舉例如下: x = 1; y = 1 * 2; print(y); 選擇陳述式 – Selection statement 目前Blackey Script在選擇陳述式只支援if-else陳述式。 if-else陳述式使用運算陳述式做為條件來控制分支, [...]

By |2021-07-23T09:34:13+08:0014 10 月, 2019|Blackey Script|0 條評論

Blackey Script Intro. (V) – Operators

內建運算子 Blackey Script的運算子順序大多與C語言相近, 以下我們依照優先度將運算子進行排序,排序在越前面的運算子優先權越高。 沒有特別註明的優先順序都是由左至右進行計算。 舉例來說,下面這個算式: x = 5; y = z = 1 * -2 + 3 * 4 - -x; 其中一元否定運算是群組2,相對於其他人運算子都還要來得高。 再來是乘法,乘法是群組3,相對於加法減法(群組4)來得高。 加減法運算完後,最後才是指定符號(群組9,由右至左進行計算) 那麼最後計算完之後y的值會等於z等於15。 群組 1 功能 運算子 範例 函式呼叫 () print(x); 群組 2,由右至左 功能 運算子 範例 一元否定運算 - x = -1; y = 1 * -3; 群組 3 [...]

By |2021-07-23T09:34:17+08:0014 10 月, 2019|Blackey Script|0 條評論

Blackey Script Intro. (IV) – 基本概念

在介紹更多語法之前,我們先來了解一下Blackey Script的語言特性。 Blackey的變數型別比較接近Python,而判斷式語法則比較接近C語言。 變數型別 Blackey Script是一個動態強型別(Dynamically, Strongly typed)的語法, 我們指定型別的方式跟Python非常接近,例如說下面這樣的語法: // 指定 x 為數值 x = 1; print(x); // 指定 x 為文字 x = "Hello"; print(x); 上面的程式碼將會輸出這樣的結果: 1.000000 Hello 動態型別表示在運行腳本期間動態地進行型別的解析, 與之相對的是靜態型別。例如C/C++,你需要在宣告變數時指定它的型態。 強型別則表示不允許錯誤型別的參數進行運算, 例如你不能將數值與字串進行相加,下面是一個錯誤的例子: x = 1 + "hello"; 基本類型 Blackey Script的基本資料類型只有浮點類型以及字串類型, 另外有兩個衍生類型是座標點(Position)以及區域(Region)。 目前支援的型別如下表所示: Data Type Expression Meaning Number [...]

By |2021-07-23T09:34:20+08:0014 10 月, 2019|Blackey Script|0 條評論

Blackey Script Intro. (III) – Hello Blackey!

Hello Blackey Hello, World是指在電腦螢幕顯示「Hello, World!」(你好,世界!)字串的電腦程式。相關的程式通常都是每種電腦程式語言最基本、最簡單的程式,也會用作示範一個程式語言如何運作。同時它亦可以用來確認一個程式語言的編譯器、程式開發環境及運行環境是否已經安裝妥當。因為寫法簡單可見,這也是很多初學者首次接觸程式語言時會撰寫的程式。 是的,又到了Hello World的時間了。 看完了基本視窗介紹,現在就讓我們來試試撰寫第一個Blackey腳本吧! 現在你應該在一個全新的腳本視窗裡面,在編輯視窗裡面輸入以下的程式碼: print("Hello Blackey!"); 接著點下Start按鍵,你應該會看到底下的Log視窗輸出了”Hello Blackey!” 這樣就完成啦!RD的生活就是這麼樸實無華且枯燥。 趕快開始動手試試看吧d(d'∀') Image Recognition 等等,Blackey的腳本除了印log難道就不能做其他的事情了嗎( ˘・з・)? 怎麼可能呢~ 接下來讓我們試試看圖形辨識的Hello World吧! 點擊Img.按鈕後,會出現一個擷取圖像的視窗: 此時預設的滑鼠行為是圈選圖像, 我們試著來圈選Blackey App的圖形: 此時可以看到圈選的區域, 中間紅色叉叉的部分是識別到影像時回報的座標位置。 你也可以點擊右鍵來改變這個紅色叉叉的位置。 在Behavior選單裡面可以選擇插入腳本時的對應行為, 預設的行為是:”點擊輸入圖像的影像位置” 現在點擊Insert Script,你的腳本看起來會像這樣: print("Hello Blackey!"); click("res20191013-222418.png"); 接著點下Start按鍵,你應該會看到剛剛擷取的Blaceky App被點擊了一下。 完整流程如下: 是不是很簡單呢? RD的生活就是這麼(夠了) 接下來我們會針對沒有撰寫過程式語言的讀者提供一些入門知識, 已經有Programing經驗的讀者可以自行閱讀有興趣的章節 [...]

By |2021-07-23T09:34:27+08:0013 10 月, 2019|Blackey Script|0 條評論

Blackey Script Intro. (II) – 基礎視窗介紹

腳本視窗的基礎介紹 腳本視窗在Blackey主程式的左上角左邊數來第二個圖示。 點擊之後會彈出一個腳本編輯視窗: 第一個按鍵是開啟新的腳本。 點擊後將會刷新編輯區域, 第二個按鍵是用來讀取腳本。 第三個按鍵是儲存當前的腳本。 開啟新的腳本後,第一次存檔時需要指定名稱, 已經命名的腳本則會直接存檔。 請根據腳本內容,輸入一個方便記憶的名字吧! 存檔時,預設的工作區路徑是位於Blackey的安裝路徑下面的, 不過你也可以從設定裡面進行修改: 第四個按鍵是錄製腳本。 開始錄製後,請在主視窗進行你想錄製的操作, 此時對應的動作會寫入腳本內: 錄製完成後,再次點選錄製按鈕就會停止錄製了。 如果不想撰寫程式的使用者,可以將此功能當成單純的按鍵精靈使用; 想要自己撰寫程式的使用者,也可以搭配錄製內容來寫出複雜的腳本唷。 第五個按鍵是截取圖像。 Blackey腳本提供了圖形辨識的功能, 可以作到”判斷畫面上是否存在某個圖形"的能力 截圖鈕就是用來擷取圖像時使用的。 擷取完成後,會將對應的檔名插入到腳本編輯區中, 我們預設了幾個常用的模板,可以在截圖區域自由選擇。 將滑鼠移動到擷取的圖片檔名上時,會顯示出對應的圖片,方便進行編輯。 第六個按鍵是啟動/停止 腳本撰寫完成後,點選啟動後會對腳本進行檢查, 如果腳本語法不對的話是不能執行的。 檢查到錯誤時,請檢查該錯誤行數的語法,在修正錯誤之後再次運行。 當腳本運行到一半時,點選停止將會該次腳本運行, 再次點擊時會回到腳本的第一行開始執行。 最後一個按鈕是圖像檢視 按下圖像檢視時,會自動將圖片的路徑轉化為縮圖, 讓你可以更直覺地檢查自己的腳本。 下面是切換前後的對照圖:

By |2021-07-23T09:34:37+08:008 10 月, 2019|Blackey Script|0 條評論