今日やること
FUZE公式で配布されている、Worksheets(https://www.fuze.co.uk/worksheets-tutorials.html)
の Coding Projects Book 1 - The Basics
を斜め読みしてできるところまで進めてみます。
今回はProject: 5から。
アンカー
前の記事)FUZE BASICを触ってみる1(最初の一歩編)
Project: 5 "Analog World"
IOボードとの接続が主かと思ったら、結構いろいろな情報が。
👇ひどいサンプルだw
-
CLS2
コマンドが使われている。以下がCLS
との違い-
CLS
- スクリーンバッファのクリアと、画面への反映(
UPDATE
)を一度に行うコマンド。
- スクリーンバッファのクリアと、画面への反映(
-
CLS2
- スクリーンバッファのクリアのみ。後述の
UPDATE
とセットで利用する。
- スクリーンバッファのクリアのみ。後述の
-
UPDATE
-
CLS2
とセットで利用する。スクリーンバッファの内容を画面へ反映する。
-
-
-
GWIDTH
、GHEIGHT
というシステム変数がある。それぞれ画面のサイズ(ピクセル)が取得できる -
MOUSEX
、MOUSEY
も使える。 -
CIRCLE
命令の引数が調べたくてドキュメントを探した。
Project: 5b "Bear With Me"
今度もIOボードの例だけど、昔のXWindowを思い出すアレに変えてみよう。
と思ったけどなんだこれwwwうまく動かなくて恥ずかしいけどもう時間オーバー😇
なんかクリックし続けないと MOUSEX
,MOUSEY
が取れませんでした。
今回は長いのでコード貼り付けます。クソース(クソソース)をご堪能あれ。
CLS
center_x = GWIDTH / 2
center_y = GHEIGHT / 2
radius = GHEIGHT / 2 / 2
DIM ear_center(2, 2)
ear_center(0, 0) = center_x - radius
ear_center(0, 1) = center_y + radius
ear_center(1, 0) = center_x + radius
ear_center(1, 1) = center_y + radius
eye_radius = radius / 4
DIM eye_center(2, 2)
eye_center(0, 0) = center_x - eye_radius
eye_center(0, 1) = center_y + eye_radius
eye_center(1, 0) = center_x + eye_radius
eye_center(1, 1) = center_y + eye_radius
LOOP
CLS2
PROC DrawBar
PROC DrawEyeBase
PROC DrawEye
UPDATE
REPEAT
END
DEF FN GetRadian(x1, y1, x2, y2)
radian = ATAN( ( y2 - y1 ) / ( x2 - x1 ) )
=radian
DEF PROC DrawBar
COLOR = PINK
CIRCLE ( center_x, center_y, radius, 1)
CIRCLE ( ear_center(0, 0), ear_center(0, 1), radius / 2, 1)
CIRCLE ( ear_center(1, 0), ear_center(1, 1), radius / 2, 1)
ENDPROC
DEF PROC DrawEyeBase
COLOR = WHITE
CIRCLE ( eye_center(0, 0), eye_center(0, 1) , eye_radius, 1)
CIRCLE ( eye_center(1, 0), eye_center(1, 1), eye_radius, 1)
ENDPROC
DEF PROC DrawEye
radian1 = FN GetRadian(MOUSEX, MOUSEY, eye_center(0, 0), eye_center(0, 1))
radian2 = FN GetRadian(MOUSEX, MOUSEY, eye_center(1, 0), eye_center(1, 1))
COLOR = YELLOW
CIRCLE ( eye_center(0, 0) + ( SIN(radian1) * eye_radius ) , eye_center(0, 1) + ( COS(radian1) * eye_radius ), radius / 10, 1)
CIRCLE ( eye_center(1, 0) + ( SIN(radian2) * eye_radius ) , eye_center(1, 1) + ( COS(radian2) * eye_radius ), radius / 10, 1)
ENDPROC
-
FULLSCREEN
命令が使えるけど、VirtualBOX環境では画面がおかしくなったりするのえ使わないほうがいいです。 - 暴走したらvagrantを起動した端末で
subo reboot
で逃げました。 - 座標は左下が
(0,0)
。普通と逆でちょっとびっくりした。 -
FUNCTION
の作り方、PROCEDURE
の作り方がわかった-
FUNCTION
やPROCEDURE
は実行できないのでEND
命令の後に書くのがポイント
-
- 配列の持ち方がわかった
所感
- 数学ヤバイ、全然忘れてる…
- 明日きちんと動くようにしよう
- グローバル変数使いまくりだなー