03.4角形を移動させる(2002/03/17作成)

今回は,前回描いた4角形を移動させます。
前回同様,OPLを立上げ,以下のように入力しましょう。
ファイルは,新規でも良いですし,前回の「BOX1」を使っても良いです。

PROC move:
LOCAL x%

REM -------Initialize-------
gBOX 160,160
	x%=10			REM Initial Character Position of X
	gAT x%,10		REM Initial Draw Position
	gFILL 5,10,0		REM Draw Box at Initial position

REM -------MOVE X-------
WHILE x%<=130			REM Start Move X Loop
	PAUSE 2			REM Wait 2/20sec
	gFILL 5,10,1		REM Erase Box
	x%=x%+10		REM Move Xaxis
	gAT x%,10
	gFILL 5,10,0
ENDWH

GET
ENDP
この後,これも前回同様,「変換」をタップして,プログラムを実行してみましょう。
以下のように表示されるはずです。
(「gBOX 160,160」で表示される4角の中のみをスクリーンショットとして掲載します。)
move
サイトへの掲載の都合上,動きをちょっと粗くしていますが,上記のように4角形が右に動いていくはずです。
また,実際には,右端に行くと動作を停止し,何かキーを押すと終了します。

もう一歩
・変数(x%)
数値や文字を設定します。
数値や文字を入れておく箱と考えるとわかりやすい,と説明されることもありますが,どうでしょうか?
変数名はx%だけでなく,i%でもyoko%でも問題ありません。
正確には,以下のように定められています。

・アルファベットの26文字,数字の10文字,_(アンダースコア),のみが使える。
・長さは32文字以内。
・先頭に数字は使えない。

今回は移動する4角形の横軸:x軸の位置を示す(代入する)ため,x%としました

「%」はこの変数が,整数の変数であることを示しています。
何もつけないと浮動小数点型,「&」が長い整数型,「$」が文字列型を示します。
これらについて,詳しい説明は省略します。

・Local
変数を宣言します。
これで宣言(記述)していない変数は使えません。
複数の変数を用いるときは,以下のように記述します。

LOCAL x%
LOCAL y%

または

LOCAL x%,y%

ちなみに,複数のプロシージャで共通の変数を用いるときには「GLOBAL」というコマンドで宣言します。

・Pause
時間待ちをします。
後に続く数値によって,以下のような動作になります。 0:キー入力が行われるまで待つ
+の値:数値 X 1/20秒待つ
−の値:数値 X 1/20秒待つ。その間にキーが押されたら,待ちが解除される

・演算子(<=,+)
「<=」や「+」は演算子といいます。
以下に,いくつかの演算子を書きます。
+:足し算
-:引き算
*:掛け算
/:割り算
**:乗算
>:より大きい
>=:以上
<:未満
<=:以下

記号が違うところもありますが,基本的には,学校で習う計算式と同じです。

・WHILE...ENDWH
「WHILE」と「ENDWH」の間の処理を繰り返します
「WHILE」のあとの条件式が成り立っているときに繰り返します

・gFILL
前回出てきました,塗りつぶした長方形を描くコマンドです。
gATで指定された描画位置が,長方形の左上の座標となります。
後に続く「5,10,0」は,幅5ドット,高さ10ドットの4角形を,描画モード:0で描画することを表します。
描画モードは,以下のようになっています。
0:4角形を点灯
1:4角形を消灯
2:4角形を反転

プログラムの流れ
今回は,プログラムの流れを追ってみましょう。

「LOCAL x%」:x%という変数を宣言,使えるようにします。

「gBOX 160,160」:160ドット角の4角形を描きます。

「x%=10」:変数「x%」に「10」という数値を代入します。

「gAT x%,10」:描画位置を設定します。
ここでは,x%に10が代入されているので,画面左上から,右に10ドット,下に10ドットの位置(10,10)が設定されます。

「gFILL 5,10,0」:gATで設定された位置(10,10)を左上にした4角形を描きます。
4角形の大きさは,横5ドット,縦10ドットになります。

「WHILE x%<=130」:x%が130以下だったら,ENDWHまでの処理を繰り返します。
繰り返し処理は,ループ処理とも言われます。
130より大きくなったら,ENDWHの次の行に処理が移ります。

「PAUSE 2」:2/20秒待ちます。

「gFILL 5,10,1」:4角形を消します。

「x%=x%+10」:x%を10増やします。
繰り返し(WHILE〜ENDWH)により,10,20,30,40...とx%が増加していくことになります。

「gAT x%,10」:描画位置を再設定します。

「gFILL 5,10,0」:再設定された位置に,4角形を描きます。

「ENDWH」:WHILEの行に戻ります。

「GET」:キー入力があるまで待ちます。

変数とループは,プログラミングの基本の中でも,重要なものと思われます。
このページの説明では,わかりにくいところがあると思います。
上記のソースをいろいろといじって,動作の確認をするといいと思います。


02.別の4角形を表示<-->04.キーを押して,移動開始
OPLはじめの一歩
最初のページ