九歩目 繰り返すということ (前編(ぜんぺん))

 

〜ココからココを繰り返す〜
     やっとこれ(repeat)をできる (−0−)
     どんなゲームでも必ずでてくるのが 繰り返し
     HSPでは2種類(しゅるい)の繰り返し方法があるが 
     まあ先にこれをやっておこう
     repeatloopという方法を先にやっとこう(一番僕は使うから)
     repeatloopで囲まれた命令を 何回でも繰くり返せる
     繰り返し回数は 指定できるし 無限(むげん)にもできる
     し か し ここでものスゴーく注意しなければならないことがある
         注意・・・繰り返しがある場合
              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で位置さえ指定しなければ 
        文字は自動的にその下へ 下へ 書いてくれる
 
     

繰り返しとは・・・

  その間のプログラムを繰り返し行うのです・・・つまり

	repeat
	print "あ"
	wait 1
	loop

     と

*a	
	print "あ"
	wait 1
	goto*a

    は 同じことなのです。
    どっちにしても print "あ" と wait 1 が
    何回も繰り返されるのです。
    repeat〜loop 
の場合
    なんかのプログラムでrepeat 命令を実行して
    他の命令たちを実行して
    そのあとにloopがあったらrepeatの行(ぎょう)にワープするのです
    まさにrepeatラベルloopは さっきのラベルを指定したgoto命令
    であると言える
    しかし repeat〜loop はラベルの方法よりずっと
    便利だし 使いやすい(繰り返し回数だって指定できるし)

     ココでシステム変数というものを やってみよう

 

〜システム変数〜
     システム変数というのは そのまま 変数 なんだが
     普通の変数と違うのは
         自動的にコンピューターが 変数の中に数値を
           入力してくれるのだ!
     といっても そのシステム変数の種類(しゅるい)によって
     入ってくるものは違(ちが)う
     ココでは 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で繰り返した回数が入力される

戻る コウザへ ホームへ 次へ