第7回:Small Basicを使ってみよう

こんにちは。「50歳からのプログラミング講座」を担当する JLabo(ジェイラボ) です。

前回は グラフィック画面にボタンを表示させる方法を勉強しました。今回は、ゲームのプログラムから一旦離れ、他の Small Basic ユーザーが、実際にどのようなプログラムを作成しているのか、その一部をご紹介いたします。※ほとんどの作者は連絡先不明のため、勝手に掲載させて頂くことになりますが、悪しからずご了承ください。

もし参考にしたい動作や機能があれば、そのソースを確認してご自分のライブラリーとして確保しておくのも楽しいかもしれません。

コマンドの意味はMyHelpで調べて、気になるようならプログラム例やMyMemoに保存することでご自分のレパートリーが広がりますので、ぜひご活用ください。

ちなみにMyHelpは1回目のコラムでご紹介しております。

また「たかはしのんき様」が連載されている「Small Basic で学ぶプログラミング」では、いろいろな角度から詳しく解説されています。ぜひこちらもご参考になさってください。
http://www.nonkit.com/smallbasic.html

プログラムのインポート

Small Basic を起動します。
インポートをクリックしてプログラムIDを入力します。
大文字、小文字どちらでも大丈夫です。

なお何らかの理由でインポート出来なかった場合は以下のメッセージが表示されます。

VDK353

矢印キーでマス目を移動し、Enterキーで色を反転させます。全部が同じ色になると「勝利」みたいな感じです。変転ロジックはわからないので闇雲に操作しても全く進展しませんが、なんとなくコツがわかるといけそうな気がします。私の想像ですが、この作者は反転ロジックを見抜く楽しみを与えてくれてるのかもしれません。

SLX082 信号機


青黄赤が連続して点灯するだけなのですが、短いブログラムの中で
Shapes.AddEllipse
Shapes.SetOpacity
Timer.Tick
などが効率的に使われています。

PVC510

色当てゲームというかパチスロのような感じです
Color[0] = “Black”
Color[1] = “Blue”
Color[2] = “Red”
Color[3] = “Purple”
Color[4] = “Green”
Color[5] = “Cyan”
Color[6] = “Yellow”

MTP573

名前を入力すると相性を計算してくれます。
どのようなロジックなのか気になる方はソースを解析してください。

TETRIS

単純に楽しめます。ここまで来ると市販のゲームと変わりありません。ご興味のある方は是非ソースをご覧になってください。

MRV593-2 戦艦ゲーム

ルール
対戦ゲームで敵の船を破壊します。各プレイヤーは自分の船を10×10セルグリッドに配置して戦場を定義します。ある船を別の船と並べることはできません。プレイヤーは対戦相手の戦場で爆弾を発射します。ということですがよくわかりませんでした。

MXV150

カラーコードの表示

TJJ853

画面に文字をランダム表示します。

LDR914

シェルピンスキーの三角形と呼ばれるフラクタル風の図形です。たった20行ほどのプログラムで実現しています。どーなっているのか私にはさっぱりわかりません。すごいです。
描画終了まで2~3分かかります。

GraphicsWindow.BackgroundColor = "Black"
x = 100
y = 100
For i = 1 To 100000
 r = Math.GetRandomNumber(3)
 ux = 150
 uy = 30
If (r = 1) then
 ux = 30
 uy = 1000
EndIf
If (r = 2) Then
 ux = 1000
 uy = 1000
EndIf
x = (x + ux) / 2
y = (y + uy) / 2

 GraphicsWindow.SetPixel(x, y, "LightGreen")
EndFor

ソース中の変数を変えてみましょう。
ux = 150
uy = 30

ux = 510
uy = 200
に変更するとほぼ正三角形になります。

DHW175-5 トラフィックゲーム

←→↑↓キーで左右、前進、後進(ブレーキ)の操作ができます。

VSC500-0 猫の目時計

猫の目が一定時間で動きます。かわいいです。

MDW647 アラーム時計

入力した時間になるとアラームが鳴ります。止める方法はありますので探してみてください。

TWD629 キーとテキスト入力のサンプル

キーアップ、キーダウン、ラストキーなどゲームの参考になります。このプログラムのソースは是非参考になさってください。

GraphicsWindow.Title = "Key and Text Input Sample"
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(10, 10, "LastKey at KeyDown:")
txtDown = Shapes.AddText("")
Shapes.Move(txtDown, 160, 10)
GraphicsWindow.DrawText(10, 40, "LastKey at KeyUp:")
txtUp = Shapes.AddText("")
Shapes.Move(txtUp, 160, 40)
GraphicsWindow.DrawText(10, 70, "LastText at TextInput:")
txtTxt = Shapes.AddText("")
Shapes.Move(txtTxt, 160, 70)
GraphicsWindow.KeyDown = OnKeyDown
GraphicsWindow.KeyUp = OnKeyUp
GraphicsWindow.TextInput = OnTextInput

Sub OnKeyDown
 lastKeyDown = GraphicsWindow.LastKey
 Shapes.SetText(txtDown, lastKeyDown)
EndSub

Sub OnKeyUp
 lastKeyUp = GraphicsWindow.LastKey
 Shapes.SetText(txtUp, lastKeyUp)
EndSub

Sub OnTextInput
 lastTxt = GraphicsWindow.LastText
 Shapes.SetText(txtTxt, lastTxt)
EndSub

RCB513 インベーダーゲーム風

正直あまり興奮しませんが、プログラミングの勉強素材としては十分参考になります。

この他にも公開されているプログラムは数多くあります。ネットで探して内容を確認するなど、お手すきの時に是非一度お楽しみください。すごいプログラムに巡りあえるかもしれません。


さてここからは「我が家の工夫」をご紹介します。

今回は「測る」をテーマにしたいと思います。いづれもプロの方にとっては珍しくないものばかりですが、プロ以外の方に知って頂ければ幸いです。

ノギス

DIYで結構活躍するのはノギスです。同じメーカのノギスを3本持っています。同じと言うのが使いやすいコツです。下は入社したとき支給されたもので、約50年たっていますが今でも同じ物が売られているのは驚きです。

ノギスで測ってナタで切る。という言葉が好きです。本来は計画と実行が「ちぐはぐ」で行動が不揃いというような悪い意味かもしれませんが、必要も無いのにとりあえずきちんと測るという行動パターンです。
測るということが目的になり、その結果いつの間にかツールが増えたという感じでしょうか。
ノギスの例で言うと、寸法を測るというより寸法を取って加工することが多いので複数本必要です。この使い方だとノギスである必要はないかもしれません。

実際に寸法を測る時はデジタルが便利です。

またこのような変わった形のノギスもあります。軸が円筒でヘッドが回転するので段差などを測定する場合に便利です。けがき線を入れるための先端チップもあります。

巻き尺

次は普通の巻き尺です。目盛板の幅は15mmで、天井まで測るときは途中で折れ曲がって自立できません。真ん中のは幅が25mmで自立します。しかし長さが10mもあるので重くて、大きくて使いにくいです。それで探したところ同じ25mmで長さ5.5mがありました。家の中ではこれで十分です。巻き尺でも使い方、ニーズに合わせていろいろな商品がでています。

最近購入したのですがデジタルの距離計です。これがまたびっくりするくらい精度が高いんです。反射面にもよりますが、おおむね巻き尺と同じ表示が出ます。

下地センサー

壁の中にある柱を見つける下地センサーです。釘打ち場所がわかります。

こちらは金属も検出出来ます。

これらで検出しても結局 石膏ボードの場合は針式センサーを刺して最終確認します。やはり直接の手感触が安心です。

水平器

水平を確認する場合、通常の水平器で十分ですが任意の角度でなにかを取り付ける場合はアナログメーターが便利です。滅多に使いませんが・・・

左は100均で見るからに精度悪そうですが右はしっかりしています。

円形の水準器は両面テープで電動ドリルの後ろに貼り付けます。だいたいですが、垂直に穴を開けたいときの目安となります。

電圧、電流テスター

最近デジタルのテスターも安くなりましたが、切替目盛がいっぱい付いたものより少し機能が多いオートレンジタイプがおすすめです。

こちらはもう少しオートレンジが充実したタイプですが大きいので使いにくいです。

時々アナログのテスターが必要な場合があります。昔使っていた簡易型ですが手放せません。

DC電源も出力がデジタルとアナログがあり両方重宝しています。1台に両方付いていると便利かと思うのですが製品は見たことがありません。やはり両方欲しがる私がおかしいのでしょうか?

テスターで電池残量を測るのは面倒です。電池がなくなると交換しますが、電圧を測り残量がある場合は捨てないでおきます。1.2,1.3,1.4,1.5Vの箱を作って電圧ごとに整頓しておきます。再利用する場合は同じ電圧のものを使います。そのための自作の電池専用テスターです。
モーターに通電した状態で電圧を測定します。モーターの音でもだいたい判別できますが
数値化出来た方が安心です。遊び盛りの孫がいると、玩具用にものすごい量の電池が必要なのです。測定している電池は単4です。右側の電池はテスター用の電源です。18650という直径18mm長さ65mmの3.7Vリチュームイオンです。

USB専用の電圧、電流チェッカーです。3個ありますが3個とも表示が10%ほどですが違います。だいたい合っているという見方も出来ます。1つは通電時間なども計測出来ます。
USBケーブルや充電器の不具合で充電できないなどのトラブル防止にはとても便利です。
また高速充電器と普通の充電器の違いは電流チェックでわかります。乱暴な言い方だと2Aと書かれていても小さくて安いのは電流が供給されませんので高速の充電にはむかないのがわかります。

デジタルスコープ

顕微鏡タイプと狭いところを見られるボアスコープです。ボアスコープで耳かきも出来るのではと思って買ったのですが、焦点深度が長くだめでした。それで耳かき用も購入してみました。いずれもスマホに接続するだけで画像を見ることが出来ます。便利な世の中になりました。
耳用はよく見えますが耳掃除するには慣れが必要です。道具ではなく ”どなたか” にやってもらうのが一番です。

手書きで作図する時の定規です。
ローラーが付いているので平行に動きます。

何種類かの縮尺が選べる三角スケールです。

健康

毎朝 室温、体温、血圧、血中酸素濃度と体重計で体重、体脂肪、体年齢、BMI、基礎代謝、内臓脂肪、皮下脂肪率、骨格筋率を30年以上測定しています。これもまた測定するのが目的なので別段アクションしていません。
測定結果は「おまかせ記念日管理」のアプリで出力したエクセルファイルを加工して1年分用意します。右側に家族の記念日が表示されるので大事な記念日を忘れることがありません。

昔、不整脈になったことがありましたが、診察では(問題になるような)異常はないといわれました。それでも心配なので聴診器を買いました。これで不整脈が出るまでチェックして、おかしな話ですが出ると喜んだりしてました。
しかし主治医にはエビデンスを提示できないので、家庭用の心電図計とアプリを購入し不整脈の状態を記録して医者に提示しました。
その結果かどうかは別として、CT検査をしたところ、心臓に狭窄があることが判明して太ももの血管から心臓に2本のステントを入れる手術をしました。
その成果ですが・・・不整脈は全然治りませんでした。「気にしないこと」が処方で、確かに2~3年で自然と治りました。

ということで「測る」をテーマにしていくつかの手持ちグッズをご紹介しました。ホームセンターやネットで見ていると欲しい工具や測定器がいっぱいあります。多分使わないのでなかなか購入出来ません。今持っている物でさえ「そろそろ整理したら・・」と言われています。だからなおさら買えないのです。

では今回はこの辺で。次回をお楽しみ頂ければ幸いです。