プチコンとMSX2+規格のホームコンピュータ「FS-A1WSX」とで、グラフィックス命令を使った簡単なベンチマークテストをしてみた。結果は想像通りだが、なるほど、グラフィックス命令よ、なかなか使えるな!
皆さん、「プチコン大喜利」をご存じでしょうか。
私たちスマイルブームが開催(2012年8月3日〜9月30日)した“「プチコンmkII」限定のプログラミングコンテスト”のことです。ニンテンドーDSi/3DSでBASICプログラミングを実現するプチコンを題材にしたコンテストだけあって、寄せられたプログラム作品もなかなかユニークなものばかりでした。
特に多くの作品でみられたのが、グラフィックス命令(スプライトやBG機能によらない、ピクセル座標によるビットマップ描画)を使ったリアルタイム描画です。中には、開発元の私たちが「こんなこと(使い方)できるんだ……」と、うなるような作品もありました。ちなみに、グラフィックス命令については、連載第3回「可能性は無限! コンソールだけで『ギャルゲー』もいける!?」で解説しています。覚えていますか? えっ、覚えてないって!?
他人のプログラムを見て、初めて気が付くのもおかしな話ですが、無理もありません。なにしろグラフィックス機能の使い方が、かつてのマイコン時代とは大きく違っているのです。当時、グラフィックス命令といえば、四角形1つ描くのにもそれなりのフレームを消費しましたから、リアルタイムのアクションゲームに使うにはかなり無理がありました。
ふむ。いまさらながらいい時代になったもんじゃ……。
スプライトやBG機能は高速で便利な半面、制約も多いので、スピードが確保できるなら、「グラフィックス命令で描画する」というのも1つの方法なわけですね。
確かに、サイズや枚数制限を気にしないで済むものね。まぁ、1フレームごとに書き換え続けるのはラクじゃないけど……。
ふむ。この新しい可能性に、ワシもだまってはおれん!! 1つグラフィックス命令を駆使したプログラムを見せつけてやろうぞ。題して……、「自動モンドリアン生成プログラム」じゃ!
……。
……。ええと、読者の皆さんに説明しておくと、ピエト・モンドリアンは抽象絵画の第一人者的な画家で、ニューヨーク近代美術館のコレクションにも収録されている『コンポジション』シリーズなどが有名ですが……。
イイかげんにしろ!
CLEAR:CLS:GCLS G=48 'ク゛リット゛サイス゛ FOR X=0 TO 256 STEP G FOR Y=0 TO 192 STEP G 'イロ カクリツ CR=RND(100) C=15 'シロ IF CR<35 THEN C=14 'クロ IF CR<30 THEN C=12 'キ IF CR<20 THEN C=4 'アオ IF CR<10 THEN C=2 'アカ 'サ゛ヒョウ X1=X+4 Y1=Y+4 X2P=RND(3)+1 'ハハ゛ ユレ Y2P=RND(3)+1 'ナカ゛サ ユレ X2=X+(G*X2P) Y2=Y+(G*Y2P) 'カサネカ゛キ ホ゛ウシ IF X1>256 OR Y1>192 THEN @SKIP IF GSPOIT(X1,Y1) THEN @SKIP FOR I=1 TO Y2P IF GSPOIT(X1,Y+(G*I)) THEN Y2=Y+G NEXT 'ヒ゛ョウカ゛ GFILL X1,Y1,X2,Y2,C @SKIP NEXT Y NEXT X
ソースコード1 汎用性を考えている当たりが余計鼻につきます |
まったく! 前回からランダムで自動生成とか、そんなのばっかりかヨ!
気に入らんか、ワンパクよ。自動生成アルゴリズムには美大卒のデザイナーの意見も採り入れたのじゃが……。唯一の気掛かりといえば、『モンドリアンは、こういうことじゃないです』と冷めた目で言われたことぐらいじゃろうかの。
ケッ、根本的にダメじゃねェか!
描画の前に座標を「GSPOIT」命令でサーチして、既に描画されていたらスキップかサイズ縮小、というのは確かに「GSPOIT」命令のない昔のマイコンBASICには難しい方法ですが……。
同じようなことは、プチコンじゃなくてもできるんじゃないのかな?
そうとも言えるし、そうでないとも言える。やはり、キーポイントは“速度”じゃな。プチコンの速度なら一瞬で1画面丸ごと描画されるから、いかにも抽象画っぽく見えるのじゃよ。描いている経過が見えると興ざめじゃ。
そう言いますが、そこまで遅いものだったんですか? そこがボクらの世代だとピンとこないんですが……。
甘いぞインテリ、そうくると思っておったわい! そこで、今回は現物を用意したのじゃ。ホレ!!
!?
Copyright © ITmedia, Inc. All Rights Reserved.