九歩目 繰り返すということ (前編(ぜんぺん))
〜ココからココを繰り返す〜
やっとこれ(repeat)をできる (−0−)
どんなゲームでも必ずでてくるのが 繰り返しだ
HSPでは2種類(しゅるい)の繰り返し方法があるが
まあ先にこれをやっておこう
repeat〜loopという方法を先にやっとこう(一番僕は使うから)
repeatとloopで囲まれた命令を 何回でも繰くり返せる
繰り返し回数は 指定できるし 無限(むげん)にもできる
し か し ここでものスゴーく注意しなければならないことがある
注意・・・繰り返しがある場合
waitという命令を間に入れることをお忘れなく
( wait がいらない場合もあるけど)
忘れた場合 ウインドウが閉じれなくなる こともある
最悪の場合フリーズ(ウインドウズが動きが止まること(マウス動かしても動かないとか))
注意しような
waitというのは「待つ」ということ
stopも「待つ」という意味だがその場合は「待つ」というか
「止まる」という感じで
プログラムはそこで止まってしまい 実行されない そこでwaitの登場だ
waitは決められた時間だけ待って決められた時間を待ったら
その次の行(ぎょう)へ行くという性質があります
うっかり入れ忘れると大変だからな
じゃあやってみよう
repeat 10 color 255,0,255 print "10回表示される" wait 5 loop stop |
さて、繰り返し分かった?
つまり loopは 「repeatへ戻る」ってことなんだ
repeat 10 ってことは10回繰り返すんだ!
で10回終わったら loopはrepeatへ戻ることなく それより下に行くんだ
このプログラム実行したら 10回表示される が上から下に10個表示されるだろう
もしココに pos があったら 上から下に文字が出ることは無いよ
なぜなら 文字の位置を指定してしまうから
何万回繰り返しても その位置に何回も何回も 書かれるわけだから
「あ」と書いて その上に 「あ」と書くようなものだ (意味が無い)
posで位置さえ指定しなければ
文字は自動的にその下へ 下へ 書いてくれる
繰り返しとは・・・ その間のプログラムを繰り返し行うのです・・・つまり
と
は 同じことなのです。 |
ココでシステム変数というものを やってみよう
〜システム変数〜
システム変数というのは そのまま 変数 なんだが
普通の変数と違うのは
自動的にコンピューターが 変数の中に数値を
入力してくれるのだ!
といっても そのシステム変数の種類(しゅるい)によって
入ってくるものは違(ちが)う
ココでは cnt というシステム変数を使います
cnt に入ってくる数値は
repeatで何回繰り返しをしたか という数字です
10回繰り返したのなら cnt は10が入ってる
じゃあ一回テストしてみよう
repeat mes cnt wait 5 loop |
これを実行したら どんどん表示されている数字がでてくる・・・ と思ったが
ちょっと困ったことが1つある
何かというと どんどん下に表示されてくからそのうち画面より下へ行ってしまう これでは使えない
「じゃあ pos でその位置で 上へ上へ書いてけばいい」
repeat pos 0,0 mes cnt wait 5 loop |
でもそれじゃあ 書いてある上に書くわけだから
ダメだね・・・
(1と書いて2と書いたら1と言う数字と2と言う数字を同じとこに2重に書くことになるからね)
じゃあどうすればいいかと言うと 1と書いた同じ位置に
2と書きたければ 前に書いた1を消せば良いんだ(そりゃそうだね)
そうするには cls を使うんだ(前にやったよね)
cls は画面を指定した色でぬりつぶすから
白でぬりつぶしたら 書いてある文字も消えるでな
これで テストするぞ!
repeat cls 0 pos 0,0 print cnt wait 3 loop |
画面が デカイので
screen 0,100,100 repeat cls 0 pos 0,0 print cnt wait 3 loop |
どうでっか?
clsで画面 を白く初期化して・・・
まあ説明はイッカ とにかく cls で前の文字が消されるわけだから
前と同じ位置に文を書いても 文字はダブらないから ノープロブレム(clsで前の文字は消えてるから 問題は無い)
これで cnt の表示が出来るな。
繰り返しは無限にしてあるから どんどん表示されている文字(cnt)は増えてくわけだ
だって 繰り返しはどんどんされてるから cntの数字もどんどん増えてくわけだ
まとめ〜〜〜 repeat 〜 loop ・・・二つの命令の間を 指定した回数(指定しないと無限(むげん)) 繰り返す repeat 10000 mes "やあ" loop cnt・・・システム変数の一種 repeatで繰り返した回数が入力される |