HSP3基礎編 ループ命令

今回はHSPネタです。

大昔に自分が書いたコードを見ていたら、「星の多重スクロール」をさせるプログラムがありました。星といってもpsetで点を打って動かしてるだけです。横スクロールシューティングの背景でよくあるアレです。

 

仕様としては、3レイヤーで各20個の点が移動します。

そのコードがこちら。

 

 

いやぁもう長くて酷いですね。驚いたことに、なんとループを使っていません。アホかと。

 

このプログラムは配列変数の数だけ繰り替し処理を行っていますが、ループを使わず、すべてずらずらと記述してあります。無駄ですね。

 

ループの説明に入る前に配列変数について少し。

たとえば、arrValという変数を用意します。配列は5です。

続いて、これに値を代入します。

これで値が代入されました。

ではこれを全部足してみます。

これで画面には1+2+3+4+5の結果が表示されることでしょう。

 

この例の場合では配列が少ないのでたいした手間ではありませんが、最初にあげたプログラムのように、配列が多くなった場合はどうでしょうか。

入力するのは大変手間ですね。そこでループを使います。

今度は、arrValの配列を100として、先ほどと同様に値を1から順番に入れていきます。

ループを使うとたったこれだけです。

ここではfor~next文を用いています。2行目の意味は「i」を「0」から「100」まで「1」づつ増やせ。となります。

従ってarrVal(0)には1が、arrVal(1)には2が、というように順番に代入されていくのです。

 

ではこれを足していきます。

今度はforeach~loop文を使用しました。

arrValの配列の数だけforeach~loop間を繰り返せ、という意味になります。ここではarrValの配列は100ですから、100回繰り返されます。

cntはループした回数を表します。すなわち、1回目のループではcnt=0、2回目のループではcnt=1となります。

 

それでは、以上を踏まえた上で、最初のプログラムを書き換えてみます。

いかがでしょうか。行数は1/5となり、大幅な軽量化ができました。

 

 

余談ですが、さらにコンパクトにもできます。

配列0~19に1層目のデータを、20~39に2層目を、40~59に3層目のデータを格納させました。

もっとも、リソースが豊富な今のコンピュータ環境からいうと、容量よりも可読性の方を優先すべきでしょうね。

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA