ブロック崩し② 【HSP3】
前回は「window」の設定を行いました。今回はバーを表示しカーソルで動かしてみます。
●使用関数・命令
screen boxf repeat cls stick if
| 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. |
;*********************************************** ; 定数設定 ;*********************************************** #define WINDOW_TITLE "ブロック崩し" ;windowタイトル #define WINDOW_X_SIZE 300 ;window横幅 #define WINDOW_Y_SIZE 400 ;window縦幅 #define BAR_X_SIZE 60 ;バー横幅 #define BAR_Y_SIZE 10 ;バー縦幅 ;*********************************************** ; 変数設定(デフォルト設定) ;*********************************************** barX = 120 ;バー横座標(左上位置) barY = 360 ;バー縦座標(左上位置) barSpeed = 10 ;バーのスピード ;■windowの設定 screen 0,WINDOW_X_SIZE,WINDOW_Y_SIZE title WINDOW_TITLE ;■メイン処理 *main repeat cls gosub *bar_operation await 50 loop stop ;■バー操作 *bar_operation boxf barX,barY,barX + BAR_X_SIZE,barY + BAR_Y_SIZE stick key,15 if key=128 : end if key&1 : barX = barX - barSpeed if key&4 : barX = barX + barSpeed if barX <= 0 { barX = 0 } if barX >= ginfo_winx - BAR_X_SIZE { barX = ginfo_winx - BAR_X_SIZE } return |

29行目でバーを表示しています。「boxf」命令を使って矩形を描いています。バーはカーソルキーを使って動かすことができるので表示する座標も変化します。バーの左上の座標を (barX,barY)と変数にしました。初期値の座標は12行目、13行目で指定しています。boxf命令は左上の座標と右下の座標を指定して矩形を描きます。左上の座標が(barX,barY)ならば矩形のサイズが横60、縦10にしているので、左下の座標は(barX+60,barY+10) になります。バーのサイズも自由に変更しやすいように、横サイズを「BAR_X_SIZE」、縦サイズを 「BAR_Y_SIZE」と定数にしました。
カーソルキーの状態を常に監視しなければならないので、21から25行目を無限ループしています。ループ内にバーの移動処理を書いてもよかったのですが、これからボールの処理やブロックの処理などループ内で行う処理が多くなってきますので、各処理を区別してみやすいように処理ごとにサブルーチン化することにしました。カーソルキーの取得は「stick命令」で行ってます。図形や画像の動かし方は、「カーソルで図形を動かす 」や「カーソルで画像を動かす」で詳しく書きましたのでこちらを参考にしてください。32行目が左カーソルキーが押された場合で33行目が右カーソルキーが押された場合です。x座標を増やしたり減らしたりして座標を変化させることより移動させてます。バーは縦方向には動かないのでx座標だけの処理が書いてます。増減量は「barSpeed」と変数にしてますので値を変えることによりバーを早く動かしたり遅く動かしたりできます。


