カーソルで画像を動かす 『HSP3』
前回はカーソルで図形(円)を動かしてみました。今回は画像を動かしてみます。基本は「カーソルで図形を動かす」で書かれていることと同じです。
●使用関数・命令
buffer picload screen repeat cls gcopy circle stick if await
●サンプル画像

| 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. |
【例1】 x = 50:y = 50 buffer 1 picload "test.bmp" screen 0,400,200 repeat cls pos x,y:gcopy 1,0,0,50,50 stick key,15 if key=128 : end if key&1 : x = x-10 if key&4 : x = x+10 if key&2 : y = y-10 if key&8 : y = y+10 if x <= 0 : x = 0 if x >= ginfo_winx - 50 : x = ginfo_winx - 50 if y <= 0 : y = 0 if y >= ginfo_winy - 50 : y = ginfo_winy - 50 await 50 loop |
【コメント】 ;バッファ領域指定 ;画像読み込む ;windowサイズ ;画面をクリア ;画像を表示 ;キー情報取得 ;ESCで閉じる ;左へ移動 ;右へ移動 ;上で移動 ;下へ移動 ;左端判定 ;右端判定 ;上端判定 ;下端判定 ;50ms |
6行目で画面をクリアして7行目で画像を表示する作業を繰り返しています。画像表示のx座標とy座標が変数になっており、変数の値を変えることにより動いているように見えます。

2行目でバッファー領域をウィンドウID「1」に指定して作成します。この時点で作業領域はバッファ領域「1」になっているので3行目での画像読み込みはバッファ領域「1」に対して行われます。バッファー領域「1」に画像名「test.bmp」サイズ50×50の画像が表示されました。4行目でウィンドウID「0」でサイズ400×200のウィンドウを作成します。作業領域がウィンドウ「0」に切り替わりました。7行目「gcopy」命令で、ウィンドウID「1」つまりバッファー領域の座標「0,0」からサイズ50×50の部分をコピーして表示しています。8~17行目で押されたキーを判定して座標を変更し動いているようにみせてます。

14~17行目で端に来たときの制御をしています。今回は座標の基準が画像の左上です。上端や左端は単純に「0」がきたときに端だと判断すればいいのですが、右端や下端の場合は画像のサイズ分を考慮しなければなりません。画像の右端は横サイズが50あるので「ginfo_winx - 50」になります。下段も同様に「ginfo_winy - 50」になります。14~17行目は下限値や上限値を超えてもその値にして、はみ出ないようにしています。


