在開發自己的腳本時,可能會有一些經常使用的判斷式,
像是我們先前提到的:“當存在影像時,點擊該影像” 的判斷式。
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) {
print(“foo1: x, y = “, x, y);
x = 3;
print(“foo2: x, y = “, x, y);
return (x+y);
}x = 1;
y = 2;
print(“foo result: “, foo(x, y));
print(“main: x, y = “, x, y);
這段程式會印出下面的結果:
foo1: x, y = , 1.000000 , 2.000000
// 傳入時: x = 1, y = 2;foo2: x, y = , 3.000000 , 2.000000
// 我們在 foo 函式裡面把 x 偷偷改成 3foo result: , 5.000000
// 確實回傳了 3 + 2 = 5 的結果main: x, y = , 1.000000 , 2.000000
// 在外部的 x 仍然是 1,不會被內部修改的 x = 3; 影響
自定義函數的語法跟 Python 的函式定義很接近,
不過我們多了一對花括號{},要注意一下 (=´ω`=)
範例
這邊虎喵小編列出幾個自己常用到的自定義函數給大家參考:
// 以秒進行睡眠
def sleep(second) {
msleep(1000 * second);
}
// 睡三秒
sleep(3);// 等待直到某張圖出現在畫面上
def wait(path, count) {
while (count > 0) {
if (find(path)) {
return 1;
} else {
sleep(1); // 可以在自定義函數裡面去呼叫其他的自定義函數唷
count = count – 1;
}
}
}
// 等 OK.img 這張圖出現,最多等 3 秒
wait(“res/OK.img”, 3);
到這邊為止已經把Blackey Script的功能都介紹過一遍了,
還在等什麼,趕快手刀起來試試吧!ᕦ(ò_óˇ)ᕤ
如果有任何不懂的地方,歡迎留言給小編,
也歡迎到我們的粉絲專頁來互動~
(<ゝω・) Waiting for you ☆