2021/04/30(金) [n年前の日記]
#1 [basic] SmallBASIC(非Microsoft版、GPL版)を試用
SmallBasicと言うと、Microsoftが提供しているプログラミング学習用のBASIC環境、
_Microsoft Small Basic
を連想してしまうのだけど。
Microsoft とは無関係で、GPLライセンス・無償で利用できる、SmallBASIC というBASIC環境があるらしいと知った。気になったので試用してみた。
_SmallBASIC - Wikipedia
_SmallBASIC | one more basic
_SmallBASIC | download
_SmallBASIC | guide
_smallbasic/SmallBASIC
_SmallBASIC | screenshots
_SmallBASIC | samples
_SmallBASIC | sdl
Windows10 x64 20H2上で試用。smallbasic_12.20.zip をDLして解凍。任意のフォルダに置いて環境変数PATHを通しておく。
中には4つの exeファイルが入ってた。同梱されていた README.TXT によると、以下のような違いがあるらしい。
_SDL - Wikipedia
_FLTK - Wikipedia
また、examplesフォルダ内には、サンプルファイル(.bas)がたくさん入っていた。
sbasicg.exe を実行すると、スクリーンエディタっぽいウインドウが開く。
sbasici.exe を実行すると、グラフィック描画ができる模様。
examples\*.bas は、sbasici.exe か sbasicg.exe を使って実行できる。
sbasici (FLTK使用) は描画が激遅だったけど、sbasicg (SDL使用) は描画が爆速に見えた。
README.TXT には、sbasic.exe を使った、サンプルの実行方法も書かれていた。
この gui.bas は、raylib というGUIライブラリを使う際のサンプルらしい。
_raysan5/raylib: A simple and easy-to-use library to enjoy videogames programming
examples\modules\*.bas は、sbasic.exe を使って実行する模様。
-m は何の指定だろう…。sbasic.exe --help と打ってみた。
-m の指定は、モジュールのパスを指定しているようだなと…。「-m .」で、カレントディレクトリをモジュールパスとして指定しているのかも。
Microsoft とは無関係で、GPLライセンス・無償で利用できる、SmallBASIC というBASIC環境があるらしいと知った。気になったので試用してみた。
_SmallBASIC - Wikipedia
_SmallBASIC | one more basic
_SmallBASIC | download
_SmallBASIC | guide
_smallbasic/SmallBASIC
_SmallBASIC | screenshots
_SmallBASIC | samples
_SmallBASIC | sdl
Windows10 x64 20H2上で試用。smallbasic_12.20.zip をDLして解凍。任意のフォルダに置いて環境変数PATHを通しておく。
中には4つの exeファイルが入ってた。同梱されていた README.TXT によると、以下のような違いがあるらしい。
- sbasicg.exe ... Uses SDL for fast graphics rendering, compiled as a 64 bit executable.
- sbasici.exe ... Classic FLTK version, brought back to life using FLTK 1.4, 64 bit executable.
- sbasic.exe ... Console command line. Use this version to test examples\modules\
- sbasicw.exe ... Web server version, renders to your browser using HTML5
_SDL - Wikipedia
_FLTK - Wikipedia
また、examplesフォルダ内には、サンプルファイル(.bas)がたくさん入っていた。
sbasicg.exe を実行すると、スクリーンエディタっぽいウインドウが開く。
- Ctrl+H でショートカットキーの一覧が表示される。
- 右下のほうにメニューアイコンがあるのでクリックするとメニューが出てくる。
- Ctrl + R で、今現在読み込んでいる・編集中のBASICソースを実行できる。
sbasici.exe を実行すると、グラフィック描画ができる模様。
examples\*.bas は、sbasici.exe か sbasicg.exe を使って実行できる。
例 : sbasici.exe examples\stars.bas sbasicg.exe examples\stars.bas
sbasici (FLTK使用) は描画が激遅だったけど、sbasicg (SDL使用) は描画が爆速に見えた。
README.TXT には、sbasic.exe を使った、サンプルの実行方法も書かれていた。
sbasic -m . examples\modules\gui.bas実行するとGUIウインドウが表示された。
この gui.bas は、raylib というGUIライブラリを使う際のサンプルらしい。
_raysan5/raylib: A simple and easy-to-use library to enjoy videogames programming
examples\modules\*.bas は、sbasic.exe を使って実行する模様。
-m は何の指定だろう…。sbasic.exe --help と打ってみた。
> sbasic --help SmallBASIC version 12.20 Console Win_64 Fri, 08 Jan 2021 - kw:122, pc:61, fc:147, V:56 I=8 N=8 usage: sbasic [options]... -v, --verbose -k, --keywords -f, --no-file-access -x, --gen-sbx -m, --module-path='<argument>' -s, --decompile='<argument>' -o, --option='<argument>' -c, --cmd='<argument>' --, --stdin='<argument>' -h, --help='<argument>' https://smallbasic.github.io
-m の指定は、モジュールのパスを指定しているようだなと…。「-m .」で、カレントディレクトリをモジュールパスとして指定しているのかも。
◎ Ubuntuでも試用。 :
Ubuntu Linux 20.04 LTS 64bit版上でも試用してみた。smallbasic_12.19_amd64.deb をDLして、以下でインストール。
smallbasic というパッケージ名でインストールされる。
/usr/bin/sbasicg が実行ファイルで、端末上で sbasicg と打てば実行できる。Linux上では、Windows版におけるSDL利用版相当のみがインストールされる模様。
サンプルファイルもどこかにインストールされるのかと思ったけれど、実行ファイルやアイコンファイル以外はインストールされないっぽい。例えば Debian系 Linux の場合、dpkg -L パッケージ名、と打てばインストールされたファイルの一覧を表示できるのだけど…。
とりあえず、Windows版の examplesフォルダを Ubuntu にコピーして動作確認した。
sudo apt install ./smallbasic_12.19_amd64.deb
smallbasic というパッケージ名でインストールされる。
/usr/bin/sbasicg が実行ファイルで、端末上で sbasicg と打てば実行できる。Linux上では、Windows版におけるSDL利用版相当のみがインストールされる模様。
サンプルファイルもどこかにインストールされるのかと思ったけれど、実行ファイルやアイコンファイル以外はインストールされないっぽい。例えば Debian系 Linux の場合、dpkg -L パッケージ名、と打てばインストールされたファイルの一覧を表示できるのだけど…。
$ dpkg -L smallbasic /. /usr /usr/bin /usr/bin/sbasicg /usr/sbin /usr/share /usr/share/applications /usr/share/applications/smallbasic.desktop /usr/share/icons /usr/share/icons/hicolor /usr/share/icons/hicolor/128x128 /usr/share/icons/hicolor/128x128/apps /usr/share/icons/hicolor/128x128/apps/sb-desktop-128x128.pngサンプルファイルの類はインストールされてないように見える。
とりあえず、Windows版の examplesフォルダを Ubuntu にコピーして動作確認した。
◎ この名前は厳しい。 :
それにしても、Microsoft Small Basic と間違えそうな名前だなと…。ググっても情報が出てこない…。出てくるのは Microsoft Small Basic の記事ばかり…。
こちらのほうが 2000年5月(2001年2月?)に出てきて、Microsoft Small Basic が 2008年10月に登場してるから、後から似た名前を平気で出してきた Microsoft が悪いのだろうけど…。 *1
こちらのほうが 2000年5月(2001年2月?)に出てきて、Microsoft Small Basic が 2008年10月に登場してるから、後から似た名前を平気で出してきた Microsoft が悪いのだろうけど…。 *1
◎ 20201/05/01追記。フォントの設定。 :
sbasicg を実行すると文字が見づらい。フォントを指定したい。以下のページで、フォントを指定する方法が書かれている。
_SmallBASIC | sdl
TTFファイルは利用できるが、OTFファイルは利用できない模様。試してみたらエラーが出た。
とりあえず、Envy Code R と Source Code Pro を入手して導入してみる。
_EnvyCodeR-PR7.zip
_Releases - adobe-fonts/source-code-pro
_software installation - How to use the Adobe Source Code Pro font? - Ask Ubuntu
EnvyCodeR-PR7.zip と TTF-source-code-pro-2.038R-ro-1.058R-it.zip を入手して解凍。
Ubuntu Linux 20.04 LTS の場合は、~/.fonts ディレクトリを作成して、中に *.ttf をコピーする。
フォントキャッシュを更新。
インストールできたか確認。
sbasicg の実行時、以下のように指定すれば、sbasicg の画面に反映される。
以下のフォント指定が使えるらしい。
Windowsの場合は、sbasicg.exe と同じ場所に、Envy Code R*.ttf を置けば反映されるらしい。
_SmallBASIC | sdl
TTFファイルは利用できるが、OTFファイルは利用できない模様。試してみたらエラーが出た。
とりあえず、Envy Code R と Source Code Pro を入手して導入してみる。
_EnvyCodeR-PR7.zip
_Releases - adobe-fonts/source-code-pro
_software installation - How to use the Adobe Source Code Pro font? - Ask Ubuntu
EnvyCodeR-PR7.zip と TTF-source-code-pro-2.038R-ro-1.058R-it.zip を入手して解凍。
Ubuntu Linux 20.04 LTS の場合は、~/.fonts ディレクトリを作成して、中に *.ttf をコピーする。
mkdir ~/.fonts cp *.ttf ~/.fonts/
フォントキャッシュを更新。
sudo fc-cache -fv
インストールできたか確認。
fc-list | grep Source fc-list | grep Envy
sbasicg の実行時、以下のように指定すれば、sbasicg の画面に反映される。
sbasicg -f "Envy Code R" sbasicg -f "Source Code Pro" sbasicg --font="Liberation Mono"
以下のフォント指定が使えるらしい。
"Envy Code R" "Source Code Pro" "Ubuntu Mono" "DejaVu Sans Mono" "FreeMono" "Liberation Mono" "Courier New"
Windowsの場合は、sbasicg.exe と同じ場所に、Envy Code R*.ttf を置けば反映されるらしい。
*1: まあ、Microsoft って、「Windows」という名前の商品も平気で出しちゃう企業だから…。もっとも、「Apple」よりはマシか…。
[ ツッコむ ]
#2 [basic] FreeBASICのグラフィックスライブラリを試用
ググっていたら、FreeBASIC にもグラフィックスライブラリ・描画機能があることを知った。
_さらにFreeBASIC | PIC AVR 工作室 ブログ
であれば、それら機能を試しに使ってみようかなと。環境は Windows10 x64 20H2 + FreeBASIC 1.07.3 (2021-04-10) 32bit。
_gdemo.bas
fbc gdemo.bas で、gdemo.exe を生成。gdemo.exe を実行。描画ウインドウ内に円をたくさん書いた後、文字列の入力待ちになる。入力した文字列を描画して、キー入力待ちになる。
各命令について補足。
ということで、今回色々触ってみたBASICの中で、線だの何だのを描画できるモノとなると、以下のような感じになるのだろうか…。
_さらにFreeBASIC | PIC AVR 工作室 ブログ
であれば、それら機能を試しに使ってみようかなと。環境は Windows10 x64 20H2 + FreeBASIC 1.07.3 (2021-04-10) 32bit。
_gdemo.bas
dim as integer x, y, radius, w, h, i, cnt, r, g, b dim s as string w = 512 h = 512 screenres w, h, 32 randomize cls cnt = 256 for i=0 to cnt x = rnd * w y = rnd * h radius = (w / 3) * i / cnt r = rnd * 255 g = rnd * 255 b = rnd * 255 circle (x, y), radius, RGBA(r, g, b, 32) next i color RGB(255, 255, 255) locate 4, 1 input "input any word : ", s print "input text is ... " + s print "push any key" sleep
fbc gdemo.bas で、gdemo.exe を生成。gdemo.exe を実行。描画ウインドウ内に円をたくさん書いた後、文字列の入力待ちになる。入力した文字列を描画して、キー入力待ちになる。
各命令について補足。
- dim as integer x, y, c で使う変数を宣言。integer は整数。string は文字列。
- screenres W, H, DEPTH で描画用ウインドウを生成。W, H が横幅・縦幅、DEPTH が1ドットあたりのビット数。32を指定すると、RGB各8bit+アルファチャンネル8bitの指定になる。
- cls で描画ウインドウ内をクリア。
- randomize で乱数を初期化。
- rnd で乱数を取得。0.0以上1.0未満の値が返ってくる。
- circle (X, Y), Radius, Color で円を描ける。Color は RGB(r, g, b) または RGBA(r, g, b, a) で指定できる。
- locate Y, X で、描画を開始する位置を指定できる。単位は文字サイズ。行、列の順番で指定することに注意。
- sleep で、キー入力があるまで待つ。
ということで、今回色々触ってみたBASICの中で、線だの何だのを描画できるモノとなると、以下のような感じになるのだろうか…。
- yaBasic
- Chipmunk Basic
- FreeBASIC
- SmallBASIC (非Microsoft・GPL版)
- Basic-256
[ ツッコむ ]
以上、1 日分です。