◆□□□□□□□□□□□□□□□□□□□□□□□□□□□◆ HSPであなたもプログラマー 発行者そらとす 第二十二回 “動体視力”2002/1/9 MAIL:soratosu@24i.net HP:http://www3.to/soratosu/ ◆□□□□□□□□□□□□□□□□□□□□□□□□□□□◆ 新年明けましておめでとうございます。 今年も昨年同様よろしくお願いします。 ★初めて購読の方 バックナンバーをご利用ください。 http://www.dragoncity.ne.jp/~soratosu/merumaga.html ★前回 前回は電卓もどきをつくりました。 ★今回 こんかいは、動体視力を鍛えるっぽい物を作ってみたいと思います。 仕組みは単純。 瞬時に変わる数字などを指定されたところでとめる、 というものです。 *start screen 0,120,120,0 font "MS ゴシック",50 rnd n,11 ;# 0〜10までの乱数を発生させ、(数値型)変数nに代入。 cntt = 0 ;# カウント用変数初期化(0にする) *loopzone redraw 0 ;# ちらつきを抑える。(redraw 0 + redraw 1) color 255,255,255 ;# 画面を白く塗りつぶす。(文字を消す) boxf 0,0,120,120 ;# ↑ color 0,0,0 pos 10,0 : mes n ;# どこでとめるか表示 pos 10,50: mes cntt ;# カウント表示 redraw 1 ;# 表示 repeat 70 getkey a,1 ;# 左クリックチェック(押されたら変数aに1が代入される。) if a=1 : goto *out;# 左クリックされていたらラベルoutに行く(ループから抜け出す) await 1 ;#ループした分だけウェイとされる(但し少し命令実行の分も加算される) loop cntt+ ;# カウントアップ(cntt=cntt+1やcntt+=1と同じ) if cntt>10 : cntt=0 ;# カウントが10を超えたら、0に戻す。 goto *loopzone ;# 戻る *out if cntt=n : dialog "あたり!",0,"おめでとう" : else : dialog "はずれ!",0,"残念" cls ;# クリア font "MS ゴシック",20;#フォントサイズ変更 mes "リトライ?" objsize 120,25 button "SURE!",*start button "NO!",*endd stop *endd end こんな感じかな? ちょっとこっているところは、 repeat〜loopのところです。 何でわざわざこんなことしているかというと、 ウェイトが多い場合、いきなり、 wait 1000 とかやっていると、gekkey命令を実行したほんのわずかしかキー入力を受つけないので 数字はあっているのに押せない! なんてことが発生します。 また、 cntt やラベルの endd はなんでこんな変なのにしたかというと、 cnttはcntというシステム変数があるためです。 enddはendという命令があるためです。 まだ説明が足りないかもしれませんが、 「ここわからん!」 ッてことがありましたら、 http://www.dragoncity.ne.jp/~soratosu/cgi-bin/bbs/futsumk2/futsumk2.cgi の掲示板にでもお気軽にお書きください。 次回は、…未定。 アンケートよろしく〜〜(^0^) http://www.dragoncity.ne.jp/~soratosu/cgi-bin/whattodo/ ■読者コーナー これはのせといたほうがいいな、と思うメールがきましたので 書きます。 ◎Antliaさんから アンケートを書く時の、Login登録時に出てくる 登録欄に、「名前」と言う欄があるのですが それは、他に使われるのでしょうか? [そ]まったく使われていません。ログをFTPでログインしダウンロードしない限りこちらからも 見えません。 又、これは本名を入力する為のフォームではありません。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ペンネームを付けておられない場合はしかたありませんが、 普通はペンネームでお願いします。 ではお便りなどまってま〜す! soratosu@24i.net