見出し画像

BASICのDRAWコマンドとタートルグラフィックス

パソコン黎明期からパソコンでやりたいことのひとつとしてコンピュータ・グラフィックというものがありました。当時のパソコンのグラフィック能力といえば、せいぜい320✕200程度の画面に8色までの色が使えるくらいだったので、あまり複雑なものを描くことは出来ず、基本的には点や線で図形を描画していました。

そんな時代、BASIC言語のグラフィック命令の中で特徴的な命令に DRAW というコマンドがありました。これは1960年代後半に開発された LOGO というプログラミング言語で取り入れられた「タートルグラフィックス」の影響を受けたコマンドで「筆を尻尾に付けた亀が歩き回って図を描く」という手順でグラフィック命令を実行するものです。

LOGO

DRAWコマンドは、その操作をすべて文字列で指定します。例えば

DRAW “BM100,100L12D8R32”

と書けば、(最後に描画した点から)座標[100,100]に”移動”し(線は描かない)、そこから左に12ドット、続けて下に8ドット、さらに右に32ドットをフォアグラウンドカラーで線を描くとなるわけです。BASICによって細かなバリエーションがありますが、前後左右命令の角度を回転させたり、指定した倍率で拡大縮小することも出来ます。また、これらは文字列で指定するので、予め文字列変数に格納した値を使うことも出来ます。

N88-BASIC(86) DRAW命令

3.13 ステートメント - MSX Datapack wiki化計画

http://ngs.no.coocan.jp/doc/wiki.cgi/datapack?page=2%C9%F4+3%2E13+%A5%B9%A5%C6%A1%BC%A5%C8%A5%E1%A5%F3%A5%C8#DRAW

ちょっと毛色の変わった命令で、キレイな図形を描くにはなかなか便利ではあったのですが、あまりパフォーマンスの良い命令ではなく、ゲームなどで使われることはありませんでした。文字列で命令を書き連ねるあたりは音を出す命令に似た雰囲気もありますね。

タートルグラフィックスの考え方は、なかなか先進的なものと考えられていたようで、あのAPPLE][の10KBASIC(APPLESOFT BASIC)にもDRAW命令は存在します。もっとも命令を文字列で行うのではなく、ひとつひとつの移動をひとつの命令で行う形式ではありましたが。実は6KBASICにはDRAWコマンドこそ無かったものの、類似のSHAPEという機能がモニタROM内のサブルーチンとしては存在していて、あの赤いマニュアルには、その使い方が「手書き」の図を使って解説されていたりします。

Applesoft BASIC Quick Reference

https://mirrors.apple2.org.za/Apple II Documentation Project/Software/Languages/Applesoft BASIC/Manuals/Applesoft II Quick Reference Guide.pdf

Apple II Reference Manual 1978 - P52からを見てください

https://downloads.reactivemicro.com/Apple II Items/Documentation/Manuals/Apple II Reference Manual - The Red Book/2023-04-27 - Apple II Redbook.pdf

その後もタートルグラフィックスは大事にされていて、JavaScriptやpythonなどでも使うことが出来ます。

JavaScript Turtle Graphics

turtle --- タートルグラフィックス - Python

実用的なのかと言われれば悩ましい分野なのですが、プログラミングを勉強する時に、なにやら意味があるのか無いのかわからない数字や文字をこねくり回すよりは、結果が見た目に反映されるので、楽しむことはできると思いますよ。

ヘッダ画像は、以下のものを使わせていただきました。
https://commons.wikimedia.org/wiki/File:KTurtle_-_Example_2.png
KTurtle developers - Screenshot by me using KSnapshot, GPL, https://commons.wikimedia.org/w/index.php?curid=5909222による

#グラフィック #DRAWコマンド #LOGO #タートルグラフィックス #BASIC #JavaScript #python  

この記事が気に入ったらサポートをしてみませんか?