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

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

プログラムを開発するためには、まず「開発環境」を準備する必要があります。前回お話ししました「Small Basic」は、正規品が【無料】でダウンロード出来ます。ダウンロードサイズもかなり小さいので、気楽に開発環境を構築することが出来ます。

マイクロソフトなので、どうしても「Windowsのみ」の対応となりますが、バージョンの制約はありません。説明の都合上「Windows10」でご説明しますが、「Windows8.1、7」でも同じ手順で大丈夫です。

また「Windows10」でもバージョンによって表示画面が異なる場合がありますが、何卒ご容赦ください。

それでは早速「マイクロソフトダウンロードセンター」から「Small Basic 1.2」をダウンロード・インストールしてみましょう。
https://www.microsoft.com/ja-JP/download/details.aspx?id=46392
第2回:Small Basicを使ってみよう

『日本語版のダウンロードの手引きは現在準備中です。』というメッセージが出ますが、開発環境はすでに日本語対応されていますので問題ありません。まずは【ダウンロード】をクリックしてください。
第2回:Small Basicを使ってみよう

数十秒で左下に以下のメッセージが出るので、【ファイルを開く】をクリックしてください。
第2回:Small Basicを使ってみよう

もし下図のような画面が出て「Microsoft検証済みアプリではありません」というメッセージが出ても、無視してインストールを進めます。【インストールする】をクリックしてください。
第2回:Small Basicを使ってみよう

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

第2回:Small Basicを使ってみよう
【使用許諾契約書に同意します】にチェックを入れて【次へ】へ進みます。

第2回:Small Basicを使ってみよう
この状態になったら【次へ】をクリックします。

第2回:Small Basicを使ってみよう
【インストール】をクリックしてください。

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

もし以下の画面が表示されたら【はい】で次へ進みます。タスクバーで点滅している場合はクリックすると画面に表示されます。また、ここで【はい】を選択しないで【ENTER】を押してしまうとインストーラーは処理を中止してしまい、最初からやり直しになるのでご注意ください。
第2回:Small Basicを使ってみよう

第2回:Small Basicを使ってみよう
第2回:Small Basicを使ってみよう
長くても数分でインストールは完了します。【完了】を押し、左下の【スタートメニュー】の中にある【最近追加されたもの】の中に【Microsoft Small Basic】が追加されていれば成功です。

第2回:Small Basicを使ってみよう
では早速【Microsoft Small Basic】をクリックして起動してみましょう。

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

次にプログラムを走らせてみましょう。【インポート】をクリックしてください。
第2回:Small Basicを使ってみよう

クリックすると、下図のような画面が出るので、空欄に【chc238】と入力し【OK】をクリックしてください。インターネット環境が正常であれば、数秒で以下のソースがダウンロードされます。
第2回:Small Basicを使ってみよう
第2回:Small Basicを使ってみよう

ソースが表示されたら画面右上の【実行】をクリックしてみましょう。
第2回:Small Basicを使ってみよう

すると以下のメッセージが表示されます。【OK】をクリックしましょう。
第2回:Small Basicを使ってみよう

先ほど空欄に【chc238】と入力し、Webからダウンロードしたソースは事前に私が作成したもので、このメッセージを表示させるためのソースでした。中身は以下の通りでしたね。

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

ここで作成したプログラムは、画面の上の方にある【発行】ボタンを押すとマイクロソフトのサーバーに保管されます。発行された6桁の番号を入力することで、どこからでもダウンロードすることが出来ます。この仕組みも Small Basic の特徴です。海外も含め、いろいろなプログラムが公開されていますので、適当な時期にご紹介させて頂きます。
第2回:Small Basicを使ってみよう

それではここからは早速【ブロック崩し】のゲーム作成に取りかかりましょう。下図は今回の出来上がりの画面です。
第2回:Small Basicを使ってみよう
ブロック崩しとはずいぶん違いますが、要素的にはブロック崩しに対応していますのでご安心ください。

今回のコラムでは、【ボールが落ちて跳ね返るのを繰り返すだけ】のプログラムを作成します。以下のソースをコピーして【Small Basic】に貼り付け、【実行】をクリックしてください。すると動作するはずです。


-------------------ここから
'プログラムの始まり
' ブロック崩しサンプル 2020/08/01 ダウンロード
' Step01_01
' 色の定義 今後使うかもしれない色をここで定義しておきます。
黒色="Black"
濃青="DarkBlue"
濃緑="DarkGreen"
濃水色="DarkCyan"
濃赤="DarkRed"
濃マゼンタ="DarkMagenta"
濃黄="DarkYellow"
濃白="Gray"
灰色="DarkGray"
青色="Blue"
緑色="Green"
水色="Cyan"
赤色="Red"
マゼンダ="Magenta"
黄色="Yellow"
白色="White"
オレンジ="Orange"
' 赤、緑,青をおのおの 0~255 で設定すると 1600万色を表現出来ます。
背景色= GraphicsWindow.GetColorFromRGB(64, 64, 64)
' データを描画する座標を設定します。
' ゲームエリア 左が 0 で右が 640 です。 単位は気にしないでください。
幅1 = 640
' ゲームエリア 上が 0 で下が 480 です。 普通の座標とは上下逆です。
高さ = 480 
' ボールの大きさを設定します。 
ボールサイズ = 160
' ボールが止まらなくなることを防ぐため最大速度をきめておきます。
縦速度Max = 10
' 重力の値を設定しておきます。ここでは物理法則の980ではなく適当な値にしています。
' また計算式も物理とは違いゲーム用にアレンジしています。
重力 = 0.015
' 0.9 の場合、跳ね返ると10%速度が低下します。
反発1=0.9
' スタート時点のボールの座標です。
' エリアの中心に設定します。
ボール座標x = 幅1 / 2 - ボールサイズ /2 
' 上から 50 の場所  下からは430 になりますね ボール座標y = 50
' 最初は止まっている状態から始めます。 -1にすると 上に上がってから降りてきます。
縦速度 = 0
'===変数の割り当てはほぼ終了です。===
'===ここからはプログラムの初期設定をします。===
' 画面を初期化のために消去します
GraphicsWindow.Clear() 
' Graphics Window の背景色を取得または設定します
GraphicsWindow.BackgroundColor =背景色
' Graphics Window の横幅を取得または設定します
GraphicsWindow.Width = 幅1   
' Graphics Window の高さを取得または設定します
GraphicsWindow.Height = 高さ
' 図形の塗りつぶしに使うブラシの色
GraphicsWindow.BrushColor = 白色
' 図形の描画に使うペンの色
GraphicsWindow.PenColor = 赤色
' 指定された横幅と高さで楕円を追加します。縦横同じなので円になります。
ボール = Shapes.AddEllipse(ボールサイズ, ボールサイズ)
' ボールという Shapesコマンドで定義してある「物」を 指定の座標に描画します。
' プログラム中で記述しているので 本来不要ですが プログラムを起動したとき 
' すぐボールを表示させたいためだけに ここで描画します。
Shapes.Move(ボール, ボール座標x , ボール座標Y)
' ゲーム開始位置 という名前の番地です。プログラムのどこからでも
' この場所を指定するとジャンプ出来ます。
' ゲーム開始位置: と末尾に : をつけます。 ジャンプする場合は 
' goto ゲーム開始位置  とします。
' このとき :  は不要です
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ゲーム開始位置:
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' ボールという名前の 物を 指定の座標に描画します。
Shapes.Move(ボール, ボール座標x , ボール座標Y)
' プログラムを指定時間停止します。 単位は ミリ秒です
Program.Delay (7)            
' 新しい速度を計算します 新しい速度は前の速度に 重力という変数できめてある値を加えます
' 新しい速度を計算します 新しい速度は前の速度に 重力という変数できめてある値を加えます
' 速度に重力を加えるのは物理的におかしいですがゲーム的にはokです
縦速度 = 縦速度 + 重力          
                            
' 新しい高さを計算します。 新しい高さは 前の高さより 増えた速度を加えます。座標は上が0
' 下が480 なので増えるということは下に落ちる ということになります。
ボール座標y = ボール座標y + 縦速度 
' If文の始まりです。もし ボールの位置が高さより大きくなったら 
If (ボール座標y >高さ-ボールサイズ) Then  
' 加算する速度を反転します。ボールサイズを入れてあるのでボールの外形位置で判定します。
縦速度 = -縦速度 * 反発1
' ズレが無く設置しているように見せかけるため 最下位の位置で座標を確定しておきます。
ボール座標y = 高さ-ボールサイズ         
' IF文のロジックを閉じます    
EndIf                    
' ゲーム開始位置: へ飛びます : は付けません。
goto ゲーム開始位置
'プログラムの終わり
-------------------ここまで

今回のプログラムは、「Small Basic」に慣れていただくことを目的としております。【実行】でプログラムの動きが確認できましたら、次はプログラム中の各値を変更して動作がどのように変わるかを試してみてください。

ボールの色や大きさ、動作環境の設定値を変更することで動作が変わり、また変わることでプログラムのロジックが理解出来ると思います。

次回のコラムでは、もう少し入り組んだ内容に踏み込みたいと思いますのでお楽しみに!!


ここからは、我が家の工夫についてご紹介させてください。「Small Basic」とは全く関係ありませんが何卒ご容赦ください。

拙宅はマンションです。中古マンションを購入して、自分の思うようにリフォームしました。今回は洗面所をご紹介します。

マンションは年に1回「排水管清掃」があります。ドラム式の洗濯機がなかったときは、洗濯機の下にある排水口に高圧洗浄ホースを差し込むため、洗濯機を移動することで対応出来ましたが、ドラム式は相当重いので(我が家のは100kg) 洗浄してもらえません。

最近のマンションは排水場所をずらすことによって対応出来ていると思いますが、しかしこのスペースが無駄になっているかもしれません。

そこで今回ご紹介するのは「段違いレール」の上をスライドする「収納ラック」です。
第2回:Small Basicを使ってみよう

まず排水口を壁際に移動しました。 床をくりぬき、排水用の塩ビパイプを追加して50cm ほど移動しました。
第2回:Small Basicを使ってみよう

もちろん素人なので水周りは怖いのですが、距離も短いので頑張りました。

そしてご紹介する収納ラックです。前に大きなタイヤがついていて、後ろには小さな戸車が付いています。モノレールの橋架のように、排水パイプの太さだけレールが浮いています。このレールの下に排水パイプが通り、その上を 収納ラックが移動します。

排水管清掃の日はラックを外に移動し、ネジ2本で固定されているレールを外します。これで業者に清掃をお願い出来ます。ちなみに収納ラックは、化粧合板をホームセンターでカットしてもらい自作しました。

また、壁は石膏ボードで中は中空です。片面を切り取り、壁の厚さ分だけ棚をはめ込みました。スライドの収納棚と壁埋め込みの棚2個は、910×1820サイズの両面化粧合板1枚で足りるよう何度も大きさを計算し、ほとんど余ることのないサイズで作りました。端面もこの合板用のテープを貼り付けています。

ホームセンターで購入する化粧合板や端面化粧テープは高価です。これを業者にお願いすると、材料は安くても設計料やいろいろで結構な金額になるのではと思い、DIYの結果に自己満足しています。
第2回:Small Basicを使ってみよう

思い通りにできあがったので、多少出来が悪くても気になりません。ご参考になれば幸いです。ではまた次回をお楽しみに!!