HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1124
かか動きが止まる3解決


かか

リンク

2013/11/24(Sun) 14:07:40|NO.58426

// 1辺100 pixの正方形を,ランダムな色で,ランダムな場所に描く。
// マウスカーソルの位置を画面中央に変えて,
// 正方形の中をクリックする迄にかかった時間 (正方形を表示してからクリッ
// クするまでの) 時間を画面左上隅に表示するプログラムを作る。
// 反応時間を表示したら2秒後に,次の正方形を描いて,反応時間測定を繰
// り返す。
というプログラムで、

#include "winmm.as"
screen 1, ginfo_dispx, ginfo_dispy, 4, 0, 0
randomize
onclick gosub *clickeda

timeGetTime
a = stat
b = 2 * 1000

z = 100

x0 = rnd(ginfo_dispx - z)
y0 = rnd(ginfo_dispy - z)
x1 = x0 + z
y1 = y0 + z

color rnd(256), rnd(256), rnd(256)
boxf x0, y0, x1, y1

mouse ginfo_dispx/2, ginfo_dispy/2

*clickeda
if (x0<mousex) and (mousex<x1) and (y0<mousey) and (mousey<y1) {
cls
mouse ginfo_dispx/2, ginfo_dispy/2
timeGetTime
c = stat - a

pos 0, 0
mes c
await b + c

x0 = rnd(ginfo_dispx - z)
y0 = rnd(ginfo_dispy - z)
x1 = x0 + z
y1 = y0 + z

color rnd(256), rnd(256), rnd(256)
boxf x0, y0, x1, y1

timeGetTime
a = stat
}

までは作ることができたのですが、四角が消える二秒間の間にクリックすると次の四角が出なくなってしまいます。
どのように改善したらいいでしょうか?



この記事に返信する


kanahiron

リンク

2013/11/24(Sun) 14:20:58|NO.58428

これでいいでしょうか


#include "winmm.as" randomize screen 1, ginfo_dispx, ginfo_dispy, 4, 0, 0 onclick gosub *clickeda timeGetTime a = stat b = 2 * 1000 z = 100 x0 = rnd(ginfo_dispx - z) y0 = rnd(ginfo_dispy - z) x1 = x0 + z y1 = y0 + z color rnd(256), rnd(256), rnd(256) boxf x0, y0, x1, y1 mouse ginfo_dispx/2, ginfo_dispy/2 stop *clickeda onclick 0 if (x0<mousex) and (mousex<x1) and (y0<mousey) and (mousey<y1) { cls mouse ginfo_dispx/2, ginfo_dispy/2 timeGetTime c = stat - a pos 0, 0 mes c await b + c x0 = rnd(ginfo_dispx - z) y0 = rnd(ginfo_dispy - z) x1 = x0 + z y1 = y0 + z color rnd(256), rnd(256), rnd(256) boxf x0, y0, x1, y1 timeGetTime a = stat } onclick 1 return
onclickをgosubで飛ばしてるのにreturnがありませんでした
また、ソースを読んでもよくわからなかったので、適当にonclick 0と1を足したら動きました(おい)

一文字変数は回答する側としては全く理解できませんし、書いてる側もだんだん曖昧になってきますw
多少長くても意味のある変数名をおすすめします



かか

リンク

2013/11/24(Sun) 15:04:20|NO.58430

回答ありがとうございます。
onclick 0, oclick 1を使うんですね。理解できました。



きのよー

リンク

2013/11/24(Sun) 15:56:39|NO.58435

onclick 0 と onclick 1 は、クリックの割り込みのON OFFだから、このプログラムだと止まることには関係ない。
止まった原因が、stop命令が*clickedaの前に無いのと、プログラムの最後にretrunがなくてgosubから戻って来られずプログラムの最後でストップしたこと。



ONION software Copyright 1997-2023(c) All rights reserved.