2017年06月22日

HSPでプログラミング~第3回・キャラクターを動かしてみよう

~変数についてちょっと~
さて、今回はキャラクターを動かすことをやってみますが、その前に変数について簡単に説明しておきましょう。
よく言われていることですが、変数とは簡単に言えば、数や文字列を入れることのできる箱です。

変数に何かを入れる方法ですが、次のように書きます。

変数名=数または文字列

試しに次のプログラムを入力してみてください。

a=5
mes a

どうでしょう?ウィンドウの左上隅に、5と表示されましたか?
mes命令は、文字列や数を表示させる命令ですが、このように変数名を指定すると、その変数の中身を表示させることができるのです。
そして何よりも、aという変数に5が入ったこと。これが一番重要です。

~動かしてみよう~
さて、いよいよキャラクターを動かす話にうつりますが、ここでこの変数を使います。
どのように使うかですが、試しに次のプログラムを入力して、実行してみてください。

x=100
y=70
pos x, y
mes "A"

左上隅ではなく、そこから右下のほうにAが表示されましたね。
今度は、1行目を、
x=150
に変えてみましょう。今度はさっきの位置から右に表示されました。

このように、pos命令には変数を指定することもできるのです。その場合、表示位置は変数の中に入っている数に設定されるのです。(この例では、xに100、yに70が入っているので、左上から右に100ドット、下に70ドットの位置に設定される)

さて、それを踏まえたうえで、前回のプログラムを改造してみましょう。

buffer 0
pos 0, 0
picload "mychara.bmp", 1

screen 1, 640, 480

x=0
y=240

repeat
boxf 0, 0, 640, 480
pos x, y
gcopy 0, 0, 0, 32, 32
x=x+32
if x>600:break
await 300
loop

このプログラムのポイントは、12行目のpos命令と、14~15行目です。
12行目では、変数xとyを使って、キャラクターを表示する位置を設定しています。
そして14行目では、xの値に32を足して、次に表示させる位置を右にずらし、15行目で、xが600より大きくなったら、break命令を使って、ループから抜け出させてします。(break命令を実行すると、repeat~loopの繰り返しから抜け出して、loopの直後の命令を実行します)

では実行してみましょう。どうですか?キャラクターが画面の左から右に移動していたら成功です。

最後に、今回のプログラムの流れを簡単に説明するとこうなります。

(1)変数xとyに、キャラクターのスタート位置の横の位置、縦の位置を入れる。
(2)画面を黒で塗りつぶす
(3)変数xとyの数が示す位置に、表示位置を設定
(4)設定された位置にキャラクターを表示
(5)変数xの値を増やす=次に表示する位置を右にずらす
(6)変数x(横の位置)が600より大きくなったら、繰り返しを抜ける
(7)(2)に戻る

次回は、キー入力でキャラクターを動かすことをやってみようと思います。
posted by 裏編 at 19:24| HSPでプログラミング | 更新情報をチェックする