13/05/03 11:21:57.02 WnnnYhHu0
>>10
3つずつ
for i = 0 to (length(A)-1)/3 step 3
jMax = i + 2
if length(A)-1 < i+j then jMax = length(A)-1
while true
for j = i to jMax
ifb CHKIMG(A[j])
処理
break 2
endif
next
// ここで毎回の処理
sleep(0.1)
wend
next
処理後に exit する関数にすれば
for i のループ
3つずつの関数(A, i)
毎回処理する関数(A, 開始位置, 終了位置)
sleep(0.1)
next
って感じで少しすっきりする。
12:名無しさん@お腹いっぱい。
13/05/03 11:44:55.02 WnnnYhHu0
URLリンク(cx20.main.jp)
UWSC の GUI 版 Hello World! ソース見てびびった。
UWSC も PowerShell も、C#のソースを文字列定義して呼び出してるだけ。
ただ、.net ”開発”環境もいらないし
PowerShell 実行制限を迂回できると言うことで、
単に実行するだけならいい環境だったりするかも。
で、その下の Lua ってのが Win32API 使ってGUI使ってる。
Lua は以前チャレンジしようとしてやっぱ手が出なかったんだけど、
ネイティブの GUI が使えるとなると・・・
ま、RAD ツールがないと面倒なんだけどね。
それで、ちょっと、 UWSC と Lua の言語比較してみた。
すると、Lua の記述が UWSC と近いことが判明。
今までは Lua っぽいコードばっかり見てたから受け付けなかったのかな。
UWSC と違う部分は C言語っぽい。
URLリンク(docs.google.com)
最初は UWSC に Lua を組み込もうかと思ってたけど
見れば見るほど「Lua すげー」ってなってる。
コールバックが使えるスクリプトとして、MIKO スクリプトってのも考えたけど、
Lua なら UWSC にコールバック機能を持たせることができるかも。よく知らないけど。
UWSC+API でやるのとどっちが簡単だろうね。
13:名無しさん@お腹いっぱい。
13/05/03 20:40:37.35 OYSIXHk10
>>11
ありがとうございました
改善案からさらに改良していくのが面白い(できたら
14:名無しさん@お腹いっぱい。
13/05/03 20:40:45.70 wT0yks5g0
>>1
乙!
15:名無しさん@お腹いっぱい。
13/05/03 22:27:43.92 WnnnYhHu0
>>11 は /3 とか変なのが残ってたね。
j を i*3 ~ i*3+2 ( i は step 1 )でやるか
i ~ i+2 ( i は step 3 )でやるか迷ってて消すの忘れてた。
UWSCと関係ないけど、
3回ずつだと端数が出るからループ脱出条件が2つになる。
もし、3で割り切れる個数ならそもそもループする必要がなく、こう書ける。
for i = 0 to max step 3
print data[i]
print data[i+1]
print data[i+2]
next
端数をループの外で書けば端数の問題は解消するけど、同じ処理を他の場所でやることになる。
C言語とJavaではこんな書き方がある。
書き換えるのがめんどいのでこぴぺ。
register n = (count + 7) / 8;
switch(count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while(--n > 0);
}
16:名無しさん@お腹いっぱい。
13/05/04 00:57:47.63 EHWA8zF+0
RGB=PeekColor(512,384)
これやると真ん中指定しますが
X座標を502~522、Y座標を374~394くらいの範囲で指定したいんですけどできますか?
イメージはこんな感じです
URLリンク(www1.axfc.net)
17:名無しさん@お腹いっぱい。
13/05/04 01:02:00.35 jsdWHLfU0
できますよ
18:名無しさん@お腹いっぱい。
13/05/04 02:02:27.40 EHWA8zF+0
>>17
よかったら教えてください
RGB=PeekColor(502,374,522,394)
↑こうではないですよね・・・?
19:名無しさん@お腹いっぱい。
13/05/04 09:57:57.81 RMywkBWm0
>>18
範囲でってどういうこと?
A. その周辺の色を混ぜ合わせた色?
B. それとも、その周辺のドットの集合?
どちらにせよUWSCでは2重ループで繰り返し実行ですね。
A の場合はそれを配列に入れて平均値を計算。
WindowsAPI なら BitBlt で矩形指定してコピーもできる。
ただし、メモリイメージそのままなので色の平均値は自分で計算だし、
BitBltするまでがちょっとめんどい。
20:名無しさん@お腹いっぱい。
13/05/04 13:10:04.43 EHWA8zF+0
>>19
RGB=PeekColor(512,384)
これだと画面の真ん中のみ有効じゃないですか
画面の真ん中から少しずれてもいいように多少大きく範囲をとりたいと思ってるんです
色ではなく場所です
21:名無しさん@お腹いっぱい。
13/05/04 13:36:51.44 RMywkBWm0
>>20
いや、PeekColor に範囲とかないから。
アクセサリのペイントを開いてスポイトツールを使ってみて。
それが PeekColor と同じ機能。
22:名無しさん@お腹いっぱい。
13/05/04 14:10:16.36 bgLiGgAt0
>>20
だから取りあえず2重ループでやってみればいいじゃん
スピードが遅いんならそんとき別の方法を考えれば良いんだし
23:名無しさん@お腹いっぱい。
13/05/04 14:13:21.57 fhgFSR4lT
範囲をとりたいってどういう意味だ
24:名無しさん@お腹いっぱい。
13/05/04 18:52:56.14 D1FvgZDG0
なんか1ドットの画像用意してchkimgのほうが…