Casio Basic入門G06
Casio Basic入門
誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します
修正更新 2015/08/02
修正更新 2015/08/02
5. Casio Basic でグラフィックス
前回: Casio Basic入門G05
Chapter G06
F-Line と 線のスタイル設定
今回は、F-Line コマンドと線のスタイル設定コマンドを調べます。
これらコマンドについては、fx-9860GII の取扱説明書(fx-9860GII_Soft_J_2.04.pdf)の 8-24 ページには、
F-Line <X座標値1>,<Y座標値1>,<X座標値2>,<Y座標値2>
SketchThick <Sketch文またはGraph文>
SketchBroken <Sketch文またはGraph文>
SketchDot <Sketch文またはGraph文>
SketchNormal <Sketch文またはGraph文>
※ Sketch...... は、線のスタイル設定コマンド.
と記載があるだけなので、実際にプログラムを作りながら細かい点を確認してゆきます。
最初に、軽くおさらい。以下のプログラム FLINE0.1 を作ります。
ファイル名: DLINE1.0
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
VewWindow 0,126,0,0,62,0
F-Line 0,31,126,31
⇒ ダウンロード: DLINE1.0
後で使うので、入力/保存しておいてください。
F-Line コマンド
・書式: F-Line <X1>,<Y1>,<X2>,<Y2>
- 座標 (X1, Y1) と (X2, Y2) を端点として直線を描画する。
- 座標は、論理座標あるいはViewWindow座標系に従う。
これを実行すると、以下のようになります。

グラフィックス描画エリアは、127ピクセル x 63 ピクセルなので、値1が1ピクセルに相当するように座標指定するのが、グラフィックス描画のポイントでした。
ViewWindow 0,126,0,0,62,0,0
F-Line コマンドで、画面中央に横線を引くには、座標 (X1, Y1) = (0, 31) と (X2, Y2) = (126, 31) の間に線を描画するように設定。
F-Line 0,31,126,31
プログラム冒頭の5行は、おまじないように設定しておくと良い。
但し ClrGraph は Cls でも良い。ClrGraph は、座標系を論理座標系に自動指定し、もし座標軸を描画すれば目盛間隔が1 になるように自動設定されるので、ある意味きちんと初期化されることから GlrGraph はおまじないに使えます。設定を変えたくない場合は Cls を使えば良のですが、今の設定が何かは不明なのでプログラム冒頭での Cls 使用の場面は限られると思います。
次に、画面中央に点線を描画しましょう。
ファイル名: DLINE1.1
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
VewWindow 0,126,0,0,62,0
SketchDot F-Line 0,31,126,31
直線描画のプログラム DLINE1.0 に赤文字部分を追加しています。
⇒ ダウンロード: DLINE1.1
後で使うので、入力/保存しておいてください。
SketchDot コマンド
・書式: SketchDot [描画(スケッチ)コマンド]
- 1行で記述しないとエラーになる
- 点線として線を描画
- 有効な描画(スケッチ)コマンドには、F-Line、Line や Vertical、Horizontal、Circle が使える。
上記を実行すると以下のようになります。

なお、SketchDot を入力する時、他にも線のスタイル設定コマンドがあります。

これらを全て使ってみましょう。
ファイル名: DLINE1.2
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
VewWindow 0,126,0,0,62,0
F-Line 0,0,126,0
SketchThick F-Line 0,4,126,4
SketchBroken F-Line 0,8,126,8
SketchDot F-Line 0,12,126,12
SketchNormal F-Line 0,16,126,16
⇒ ダウンロード: DLINE1.2
最初に普通の線、続いて、太線 (SketchThick)、破線 (SketchBroken)、点線 (SketchDot)、そして 普通の線 (SketchNormal)を、4ピクセルおきに、下から上へ順に描画しています。
- 太い = Thick (シック) ⇒ 太線
- 破 = Broken (ブロークン) ⇒ 破線、コマンドを実行すると太い破線になります
- 点 = Dot (ドット) ⇒ 点線
- 普通 = Normal (ノーマル) ⇒ 普通の線、コマンドを実行すると線の装飾指定を付けない時と同じになります
SketchThick コマンド
・書式: SketchThick [描画(スケッチ)コマンド]
- 1行で記述しないとエラーになる
- 太線として線を描画
- 有効な描画(スケッチ)コマンドには、F-Line、Line や Vertical、Horizontal、Circle が使える。
SketchBroken コマンド
・書式: SketchBroken [描画(スケッチ)コマンド]
- 1行で記述しないとエラーになる
- 点線として線を描画
- 有効な描画(スケッチ)コマンドには、F-Line、Line や Vertical、Horizontal、Circle が使える。
SketchDot コマンド
・書式: SketchDot [描画(スケッチ)コマンド]
- 1行で記述しないとエラーになる
- 点線として線を描画
- 有効な描画(スケッチ)コマンドには、F-Line、Line や Vertical、Horizontal、Circle が使える。
SketchNormal コマンド
・書式: SketchNormal [描画(スケッチ)コマンド]
- 1行で記述しないとエラーになる
- 点線として線を描画
- 有効な描画(スケッチ)コマンドには、F-Line、Line や Vertical、orizontal、Circle が使える。
これを実行すると以下のようになります。

==========
同じことを、別のコマンドを使って実現できます。
ファイル名: DLINE1.3
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
VewWindow 0,126,0,0,62,0
F-Line 0,0,126,0
S-L-Thick
F-Line 0,4,126,4
S-L-Broken
F-Line 0,8,126,8
S-L-Dot
F-Line 0,12,126,12
S-L-Normal
F-Line 0,16,126,16
⇒ ダウンロード: DLINE1.3
赤文字で示したコマンドは、線のスタイル設定を行います。
これらのスタイル設定後、普通の線を描画すれば、設定したスタイルが反映されます。

S-L-Thick コマンド
・書式: S-L-Thick
- パラメータは無い。
- これが設定されていると、描画する線が太線になる
- F-Line、Line や Vertical、Horizontal、Circle などの描画(スケッチ)コマンドに使える。
- 次に S-L-xxxx で設定されるまで、線のスタイル設定は保持される。
S-L-Broken コマンド
・書式: S-L-Broken
- パラメータは無い。パラメータを付けるとエラーになる。
- これが設定されていると、描画する線が破線になる
- F-Line、Line や Vertical、Horizontal、Circle などの描画(スケッチ)コマンドに使える。
- 次に S-L-xxxx で設定されるまで、線のスタイル設定は保持される。
S-L-Dot コマンド
・書式: S-L-Dot
- パラメータは無い。パラメータを付けるとエラーになる。
- これが設定されていると、描画する線が点線になる
- F-Line、Line や Vertical、Horizontal、Circle などの描画(スケッチ)コマンドに使える。
- 次に S-L-xxxx で設定されるまで、線のスタイル設定は保持される。
S-L-Normal コマンド
・書式: S-L-Normal
- パラメータは無い。パラメータを付けるとエラーになる。
- これが設定されていると、描画する線が普通の線になる
- F-Line、Line や Vertical、Horizontal、Circle などの描画(スケッチ)コマンドに使える。
- 次に S-L-xxxx で設定されるまで、線のスタイル設定は保持される。
これらの線のスタイル設定コマンド S-L-xxxx は、一旦設定されると、次に設定を変えない限り、その設定が維持されます。
これに対して、既に調べた Sketchxxxx コマンドは、その場限りのスタイル設定です。描画の効果は同じですが、設定の有効性が異なる点に注意が必要です。
==========
S-L-xxxx コマンドによる設定の有効範囲を確認するプログラムを作ってみます。
ファイル名: DLINE1.4
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
VewWindow 0,126,0,0,62,0
" 0:No"
" 1:Thick"
" 2:Broken"
" 3:Dot"
" 4:Normal"
"Input menu#"?→M (入力待ちして、入力されたテンキーの数字を変数 M に代入)
M=0⇒"" (何もせずテキスト画面で改行するだけ)
M=1⇒S-L-Thick
M=2⇒S-L-Broken
M-3⇒S-L-Dot
M=4⇒S-L-Normal
M≥5⇒Return
Prog "DLINE1.0"
⇒ダウンロード: DLINE1.4
このプログラムは、線のスタイル設定をするだけで、最後に既に作った普通の 直線を引くプログラム DLINE1.0 を呼び出して実行しています。このように直線描画を敢えて別プログラムで行わせているのは、スタイル設定 S-L-xxxx コマンドの有効範囲が、他のプログラムにまで及ぶのかどうかを確認するためです。
- 出力命令" " と 入力命令?を使ったメニュー選択のコードを使っています。⇒ コマンドリファレンス 出力命令" "、入力命令?参照
- 別のプログラム呼び出しコマンド Prog を使っています。⇒ コマンドリファレンス Prog 参照
- 条件分岐命令 ⇒ を使っています。⇒ コマンドリファレンス 条件分岐命令 ⇒ 参照
- プログラム終了コマンド Return を使っています。⇒ コマンドリファレンス Return 参照
・入力命令?: [SHIFT] [VARS] [F4] (?)
・比較演算 = : [SHIFT] [VARS] [F6] (▷) [F3] (REL) [F1] (=)
・条件分岐 ⇒ : [SHIFT] [VARS] [F3] (JUMP) [F3] (⇒)
・比較演算 ≥ : [SHIFT] [VARS] [F6] (▷) [F3] (REL) [F5] (≥)
・Return : [SHIFT] [VARS] [F2] (CTL) [F2] (Rtrn)
ここで使った命令やコマンドについての詳細な使い方については、Casio Basic入門38 を参照してください(但し、これは fx-5800P を前提にしているので、上の fx-9860GII での入力方法を参考にして読んで下さい)。
で、このプログラムを起動します;

[1] (1:Thick) を押し、続いて [EXE] を押すと、

太線が描画されます。つまり、描画(スケッチ)のスタイル設定が保持されていて、別のプログラムにも効果を与えることが分かります。
[EXE] を2回押して、Program List 画面へ戻ります。
再び、[EXE] か[F1] を押して、同じ DLINE.1.4 を起動します。

ここで、[0] (0:No) 、続いて [EXE] を押すと、

このように、S-L-xxxx を設定していないにもかかわらず、太線が描画されます。これで、一旦、線のスタイル設定を行うと、設定は保持されままであることが確認できます。
さて、このプログラムで、[1] (1:Thick) を選び、太線を描画させてから、[AC] で強制終了します。続いて、破線を描画するプログラム DLINE1.1 (既に作っています)を実行してみます。

すると、太線にならず破線が描画されます。つまり、S-L-Thick よりも SketchThick が優先されることが分かります。
==========
このプログラムは、1つのスタイルを試したらプログラムが終了するので、他のスタイルを試すにはプログラムをもう一度起動する必要があります。繰り返しスタイルを試せる方が分かりやすいので、プログラムを改良します。
繰り返し実行させるには、ループを使えば良いので、以下のようにプログラムを変更してみます。
ファイル名: DLINE1.5
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
VewWindow 0,126,0,0,62,0
While 1
ClrText
" 0:No"
" 1:Thick"
" 2:Broken"
" 3:Dot"
" 4:Normal"
"Input menu#"?→M
M=0⇒""
M=1⇒S-L-Thick
M=2⇒S-L-Broken
M-3⇒S-L-Dot
M=4⇒S-L-Normal
M≥5⇒Return
Prog "DLINE1.0"◢
WhileEnd
(今回追加部分を赤文字で示す)
⇒ダウンロード: DLINE1.5
グラフィックスコマンドを調べるにあたり、このようにループによる繰り返し処理を使った方が、分かりやすいことが多いので、ループコマンドに抵抗のある方は、このタイミングで、その使い方に慣れて下さい。
今回は、While ループを使って、無限ループにしています。
⇒ Casio Basic コマンドリファレンス While
While ループの書式
While [ループ継続条件]
ループ内の処理
WhileEnd
[ループ継続条件] に 1 を指定すると、常に「真」 となって、常にループが継続されるので、無限ループになり、上のプログラムではこれを利用しています。ループから抜けるには、[AC] キーでプログラムを強制終了させます。

[1] (1:Thick)、[2] (2:Broken)、[3] (3:Dot)、[4] (4:Normal) を選んで [EXE] を押すと、選んだスタイルで線が描画されます。
ところが、[0] (No) を選んだ場合は、直線に選んだスタイルで線が描画されることを確かめて下さい。
==========
上のプログラムでは、メニューの入力待ちのところで、うっかりテンキー以外を押すと異常動作します。これは、入力命令?を使う限りしかたありません。グラフィックスコマンドの確認の目的では、これで十分ですが、実用プログラムでは誤動作の原因になったり、、操作上の問題になることもあります。
そこで、入力命令? の代わりに Getkey コマンドを使って、必要な [0] ~ [4] 以外には反応せず、さらに[AC] で強制終了させる代わりに [EXIT] で正常終了させるようにプログラムを改造してみます。今回のテーマには直接必要のない改造ですが、グラフィックスを利用した実用プログラムの練習・準備のために、作ってみました。
ちなみに、以下の Doループでのキーコード取得と、それに続く If / Else If / Else / IfEnd によるキーコード別の条件分岐、ならびにそれらを 無限ループ内に入れて、[EXIT] などの特定キーで正常終了させるのは、Casio Basic での構造化プログラミングの定石といって良いコードだと思います。
⇒ Casio Basic入門43 参照
ファイル名: DLINE1.6
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
VewWindow 0,126,0,0,62,0
While 1
ClrText
" 0:No"
" 1:Thick 2:Broken"
" 3:Dot 4:Normal"
"Input menu#"
Locate 16,7,"<EXIT>"
Do
Getkey→K
LpWhile K=0
If K=71:Then
Else If K=72:Then
S-L-Thick
Else If K=62:Then
S-L-Broken
Else If K=52:Then
S-L-Dot
Else If K=73:Then
S-L-Normal
Else If K=47:Then
Break
Else 0→K
IfEnd:IfEnd:IfEnd
IfEnd:IfEnd:IfEnd
K⇒Prog "DLINE1.0"◢
WhileEnd
ClrText
Locate 9,5,"bye!"
⇒ ダウンロード: DLINE1.6

今回のまとめ
- 線のスタイル設定コマンド SketchThick / SketchBroken / SketchDot / SketchNormal は、パラメータに描画コマンド (Line, F-Line, Horizontal, Vertical, Circle) を指定すると、描画コマンドで書かれる図形は指定された線のスタイルで描画される。これらのスタイル設定コマンドは、その場限りの設定になる。
- 線のスタイル設定コマンド S-L-Thick / S-L-Broken / S-L-Dot / S-L-Normal は、パラメータを設定しない。設定するとエラーになる。これらのコマンドは、次に設定するまで、その設定は保持され、他のプログラムにも影響を及ぼす。これらのスタイル設定コマンドは、描画コマンド (Line, F-Line, Horizontal, Vertical, Circle) で書かれる図形の線のスタイルに反映される。
- 設定が保持される S-L-xxxx コマンドよりも、その場限りの設定を行う Sketchxxxx コマンドが優先される。
今回使ったグラフィックス コマンド
- F-Line
- SketchDot
- SketchBroken
- SketchThick
- SketchNormal
- S-L-Dot
- S-L-Broken
- S-L-Thick
- S-L-Normal
つづく...
⇒ Casio Basic入門 G07 / 目次
応援クリックをお願いします。励みになるので...