第9回:Small Basicを使ってみよう
こんにちは。「50歳からのプログラミング講座」を担当する JLabo(ジェイラボ)です。
前回は「ブロック崩し」の画面にブロックを配置して、実際にボールを当ててクリアにするプログラムを組みました。今回と次回でほぼ最終の形をご紹介します。それでは早速「最終版」をインポートしてください。
まずはこのプログラムの前半の内容を説明します。コマンドや設定値をご自分で変更することでゲームの動作を確認することが出来ます。何となく理解したプログラムを動作確認することで、動かなくなったり、思い通りになったりすることを体験することでプログラム習得にお役に立てるのではと思います。
1 'ブロック崩しサンプル 2021/02/28 ダウンロード
2
3 タイトル1="ジィジが作った"
4 タイトル2="太郎のブロック崩し"
5
6 GraphicsWindow.Title =タイトル1 + タイトル2
説明のために行番号を表示しています。コマンド部分をコピーしてSmall Basic を起動し、左上の「新規」をクリックして 貼り付けます。行番号はコピーしないでください。
実行をクリックします。
プログラムを終了させるには、大きい方の Small Basic 画面右下の「プログラムの終了」をクリックします。
1は先頭に「アポストロフィ」があるので説明文と見なされ実行されません。
3と4では、タイトル1、タイトル2という変数に “ジイジが作った” と “太郎のブロック崩し”の値を定義します。
6では グラフィックウインドウのタイトルバーに定義した値を表示します。
GraphicsWindow.Title =タイトル1 + タイトル2 ではなく、GraphicsWindow.Title =”ジィジが作った太郎のブロック崩し” と個別に設定しても問題ありません。文字列を定義する場合は、前後に「ダブルクォーテーション」が必要ですがこのほうが行が少なくて良さそうです。
今回のプログラムでは136、137行目でタイトル1 + タイトル2を使っています。太郎を花子に変更することで137行目も同時に変更されますが、個別に設定するとすべてを手作業で修正することになります。手間もかかるし修正モレも考えられるので、変数割当をすることが「しきたり」だと考えてください。プログラムのブロックであるサブルーティン(プロシジャー)も同じことです。「1度しか使わなくてもサブルーティン化せよ」との教えもあります。できるだけ心がけましょう。
難易度を選択するボタンを描画してみます。
37 幅1 = 640 'ゲームエリア
38 幅2 = 400 ' データ表示エリア
39 高さ = 480
77 GraphicsWindow.Width = 幅1 + 幅2 'ADD
' Graphics Window の横幅を取得または設定します
78 GraphicsWindow.Height = 高さ 'ADD
' Graphics Window の高さを取得または設定します
146 難易度1 = Controls.AddButton(" 1 ", 700, 150+120)
147 難易度2 = Controls.AddButton(" 2 ", 750, 150+120)
148 難易度3 = Controls.AddButton(" 3 ", 800, 150+120)
これを実行すると右側にボタンが表示されます。
これに装飾を加えてみましよう。
25 青色="Blue"
31 白色="White"
33 背景色= GraphicsWindow.GetColorFromRGB(64, 64, 64)
37 幅1 = 640 'ゲームエリア
38 幅2 = 400 ' データ表示エリア
39 高さ = 480
44 座表X1 = 幅1 + 2 ' 仕切りの線座標
45 座表X2 = 幅1 + 2
46 座表Y1 = 5
47 座表Y2 = 高さ
72 GraphicsWindow.BackgroundColor =背景色
' Graphics Window の背景色を取得または設定します
73 GraphicsWindow.BrushColor = 白色
' 図形の塗りつぶしに使うブラシの色
77 GraphicsWindow.Width = 幅1 + 幅2 'ADD
' Graphics Window の横幅を取得または設定します
78 GraphicsWindow.Height = 高さ 'ADD
' Graphics Window の高さを取得または設定します
85 GraphicsWindow.PenColor =白色 ' 図形の描画に使うペンの色
86 GraphicsWindow.DrawLine(座表x1,座表y1,座表x2,座表y2) '
139 GraphicsWindow.BrushColor =青色
140 GraphicsWindow.FontSize =20
146 難易度1 = Controls.AddButton(" 1 ", 700, 150+120)
147 難易度2 = Controls.AddButton(" 2 ", 750, 150+120)
148 難易度3 = Controls.AddButton(" 3 ", 800, 150+120)
25,31,33は色定義です。
77,78は描画するスケールです。
方眼紙のマス目の大きさを決めることになります。
85 GraphicsWindow.PenColor =白色 ' 図形の描画に使うペンの色
86 GraphicsWindow.DrawLine(座表x1,座表y1,座表x2,座表y2) '
86は85の色(白)で引数の座標に線を描きます。
146,147,148がボタンの描画です。139,140で文字の色と大きさを設定しておきます。
このボタンをクリックしたときプログラムが反応するには
Controls.ButtonClicked = クリック
このコマンドで「クリック」というサブルーティンに飛びます。
468 Sub クリック
482 If Controls.LastClickedButton = 難易度1 Then
483 難易度= 1
484 EndIf
485 If Controls.LastClickedButton = 難易度2 Then
486 難易度 = 2
487 EndIf
488 If Controls.LastClickedButton = 難易度3 Then
489 難易度 = 3
490 EndIf
496 EndSub
これをループの中に配置すればいつでも分岐ができるようになります。
231 ゲーム開始位置: '===========================
233 Controls.ButtonClicked = クリック
・
・
435 Goto ゲーム開始位置
このループの中に選択した難易度を表示することで現在値を把握することが出来ます。この部分だけ切り取ったプログラムで動作を確認してください。難易度のボタンをクリックすると 難易度:3 の様に選択したボタンの定義値を表示することが出来ます。
初期設定開始:
青色="Blue"
白色="White"
背景色= GraphicsWindow.GetColorFromRGB(64, 64, 64)
幅1 = 640 'ゲームエリア
幅2 = 400 ' データ表示エリア
高さ = 480
開始ポイント: ' 開始ポイント ここから始まります。
GraphicsWindow.Clear() ' 画面を初期化のために消去する
GraphicsWindow.BackgroundColor =背景色
' Graphics Window の背景色を取得または設定します
GraphicsWindow.Width = 幅1 + 幅2
' Graphics Window の横幅を取得または設定します
GraphicsWindow.Height = 高さ
' Graphics Window の高さを取得または設定します
GraphicsWindow.BrushColor =青色
GraphicsWindow.FontSize =20
難易度1 = Controls.AddButton(" 1 ", 700, 150+120)
難易度2 = Controls.AddButton(" 2 ", 750, 150+120)
難易度3 = Controls.AddButton(" 3 ", 800, 150+120)
GraphicsWindow.FontSize =17
GraphicsWindow.BrushColor = 白色
GraphicsWindow.DrawText(840,275," 難易度: ")
難易度表示 = Shapes.AddText(難易度)
' テキストを、移動、動画化、または回転できる図形として追加します
Shapes.Move(難易度表示,920,275)
' 指定された名前の図形を新しい場所に移動します
ゲーム開始位置:
Controls.ButtonClicked = クリック
Shapes.SetText(難易度表示,難易度)
Goto ゲーム開始位置
Sub クリック
If Controls.LastClickedButton = 難易度1 Then
難易度= 1
EndIf
If Controls.LastClickedButton = 難易度2 Then
難易度 = 2
EndIf
If Controls.LastClickedButton = 難易度3 Then
難易度 = 3
EndIf
EndSub
今回のコラムは以上になります。次回は残りの動作についてご紹介します。
さて、ここからは私が気に入っているグッズと我が家の工夫の一部をご紹介します。
リモコンなど「樹脂ハウジング」を分解するツールです。右の2つは車用のパネル外し用です。
通常は分解の手順がわからないので試行錯誤ですすめます。接合部が割れないよう隙間をすこしずつ広げて分解します。こちらは材質と形状が絶妙で圧倒的に使いやすいです。
リモコン外しというズバリの名前らしいのです。だいぶ痛んでいるので新しいのが欲しいのですが手に入りません。
業務用の厚いまな板を作業台にしています。切断やはんだ付け、組立、塗装、接着など5年以上使っていてキズや穴の中に接着剤や塗料が付着してかなり汚れています。そろそろ裏返してきれいにしようか、と考えているところです。
まな板はベニア板に取り付けて3方はリブが付いています。小さな部品やゴミ、はんだ屑が下に落ちないようにしています。
引出は耐荷重が大きめのスライドレールベアリングを使っています。引き出して、ちょっと物を置くのに便利です。まな板を置くとほぼ平らになり、作業スペースが広くなります。
引出は少し奥に収まるのでひさしが出る感じになり、部品をクランプしたり削りカスを集めるのに便利です。
次はゴミ箱、 作業台、踏み台3役の箱をご紹介します。
木工をしたときの木くずなどをこの箱に入れます。穴がありますのでこの上でドリルを使います。小さな物を切断したり削って直接ゴミをこの中に入れます。
踏み台にもなりますが以前傾いて危うく落ちそうになったので・・・・
再発防止で下に回転する板を付けました。
輪ゴムで軸の外側を引っ張り、ちょっと回すと出たり戻ったりするようにしています。
電子工作の配線でワニ口クリップを使います。何十年も2~30cmの長いもの(普通)を使っていましたがあるとき気づきがあって全部短くしてみました。とても使いやすくなりました。
これを壁に掛けて使っています。
瞬間接着剤は空気中の水分で固まりますので開封するとすぐに白化して使えなくなります。最近は100均で使い切りタイプが出ていますがそれを長持ちさせるために簡易的なデシケーターを作りました。綿棒のケース→2個で二重の上げ底を作ります。ドライフラワーを作る材料のシリカゲル→吸湿用CDケースの不織布→シリカゲルが落ちないようにします。などが材料です。シリカゲルの効果は半年以上あります。フライパンで熱すると再利用できます。保存期間の効果測定をきちんとしていないので不明ですが何もしないより長持ちと思います。
リフォームで作り付けの家具を作ってもらいました。この時のニスをもらってあるのでタッチアップペイントを適当な容器で作ってみました。
小さなキズの場合は簡単に補修できます。こまめに補修できる工夫ということでご理解ください。
最近L型金具を購入しました。意外と良かったのでご紹介します。
名称:コーナーブラケットアルミ合金
実際に使っている写真は撮れないので端材で試して見ました。
2箇所の突起が木に食い込んでがっしりと固定出来ます。
熱収縮チューブの加熱やアクリルのバリ取りなどでターボライターを使いますが喫煙をやめて久しいので不完全なものが数個あるのですが使う度にガスがなくなったり点火しなかったりで不安定です。ガスを注入したりで何とかはなるのですがイライラします。それで小型のガスバーナーを購入し調子が良かったのでライターは全部捨てました。
ホットメルトを使うとき我が家のグルーガンは5分以上時間がかかります。これだとすぐに溶け始めるので簡単です。
健康維持のため通院は欠かせません。処方薬はすべて食後です。薬を飲むためにご飯を食べているような錯覚をするくらい大量の薬をきちんと飲んでいます。以下はきちんと飲む工夫です。朝、夜の薬を1週間分ケースに入れこの手作りケースに並べます。この作業は妻がやってくれます。感謝しています。
包装シートの切り端を誤飲すると大変な事になる可能性があるらしいので専用のカップを作りました。
フタの材料はファイルの表紙です。赤いつまみは画鋲を使っています。
雑多な内容でしたがほんの一部でもご参考になれば幸いです。