第7回 〜get@とput@〜

 前回は、グラフィック関連の基本的な命令についてご紹介しました。
今回は、グラフィカルなゲームなど、多目的に多用途なget@とput@について説明しきたいと思っていま
す。
 さて、このget@とput@はどのような機能をするのか、というと、一言で言うと、「取り込んで置く」
です。
何のことやら訳が分からない方ばかりだと思いますが、読んでいくとおいおいわかってくると思います。
 それでは、早速、説明していくことにしましょう。
get@という命令は、現在グラフィック画面上に表示されている任意の点(ドット)群を配列変数に取り
込む、という動作をします。
早い話が、現在表示されているグラフィック画像の任意の領域を取り込む関数です。
それでは早速グラフィック画像を取り込んでみることにしましょう。
 まずはじめに、グラフィック画像を取り込む前に目的のデータが格納される場所を確保しなければい
けません。
この場所とは、配列変数のことを指します。通常、dim文で定義する時、使用する分しか定義しないよう
に、このグラフィック画像を取り込む際に必要な領域の値も必要な分しか定義しません。
それでは、必要な領域のサイズはどのようにして求めるのかを御紹介しましょう。

配列変数のサイズ-1=(((横のドット数+7)\8)*縦のドット数*M+4+1)\2-1
 ※白黒モード…M=1,8色モード…M=3,16色モード…M=4
 ※今回は整数値型配列変数を使用する場合のみ紹介する

ここで、あえて″配列変数のサイズ-1″としたのは、添字の値(配列変数の番号)が0番から始まること
を考慮して右辺の式がそのまま添字の値に使用できるようにしたためです。
 次に、グラフィック画面を初期化し、グラフィックを描きます。以下のステートメントを入力して下
さい。

  screen 3,0,0,1
  color ,,,,0
  cls 2

これで、今回使用するグラフィック画面に設定されました。
今回は640*400ドット、8色中8色モードを使用します。
それでは、以下に描画するサンプルプログラムを示しますのでコンピュータに入力してみて下さい。

    5 ' Graphic draw sample program
   10 cls 3:xx=100:yy=100
   20 for y=0 to 15
   30 read a$
   40 for x=0 to 15
   50 pset(xx+x,yy+y),val(mid$(a$,x+1,1))
   60 next
   70 next
   80 end
   90 ' Graphic datas
  100 data ""
  110 data ""
  120 data ""
  130 data ""
  140 data ""
  150 data ""
  160 data ""
  170 data ""
  180 data ""
  190 data ""
  200 data ""
  210 data ""
  220 data ""
  230 data ""
  240 data ""
  250 data ""

上のプログラムの data "" のところには、ダブルクォーテーションで挟まれた領域内に、0〜7までの数
値を16個続けて入力して下さい。
下の data "" と合わせると16*16の絵が出来上がります。
上記のプログラムを実行すると、16*16の絵が(100,100)の位置に表示されます。
エラーが出たら、記述した数値が正しいかどうか、プログラムにタイプミスがないかどうか確認して下
さい。
 さて、ようやくget@を使う準備が出来ました。
では、早速、今作成した絵をget@で取り込んでみましょう。
今回使用する絵のサイズは、縦16ドット、横16ドット、使用色数は8色であるので、これらを上の式に代
入して計算すると 49 になります。
この数値に基づき、配列変数gd%を定義します。
今回は整数値型配列で取り込むので、変数名の末尾に % を付けます。

  dim gd%(49)

いよいよ表示されている画像を取り込みます。
その前に、get@の使いかたについて説明しておきます。

  get@(x,y)-(x+増加分,y+増加分),変数

この命令は、(x,y)-(x+α,y+β)で定義される長方形内の画像を取り込む命令です。
それでは、早速変数に取り込むことにしましょう。

  get@(100,100)-(115,115),gd%

これで、gd%に画像が取り込まれました。
では、本当に取り込まれたかどうか確かめるために他の位置に表示させてみましょう。

  put@(150,150),gd%,pset

先程の絵の右斜めしたに同じ絵が表示されましたね。
このように、put@はget@で取り込んだ情報を表示させる場合に使用します。
以下に汎用例を示します。

  put@(x,y),変数,pset|preset|or|and|xor

″変数″のとなりのパラメタは、記述の5つの中から1つ選んで使用することが出来ます。
通常は pset を使います。
この pset というパラメタは、取り込まれた絵をそのまま表示する、という意味を持っています。
また、 preset は、 現在の表示色の最大値(現在は7)-そのドットのパレット番号 の色で表示されます。
残りは読んで字のごとしです。
アップエンドとして記述しますが、このput@命令を使用すると、グラフィック画面上に漢字を表示させ
ることが出来ます。

  put@(x,y),kanji(漢字コード)

この命令は一つずつしか表示させることが出来ませんのでご注意下さい。

それでは今回はこの辺で。
みなさん、BASICプログラミングを頑張って下さい\(^^)/
  • 参考文献 『N88−日本語BASIC(86)(MS-DOS版)Ver 6.2リファレンスマニュアル』/NEC著
  • N88−日本語BASIC(86)ホーム
    ご質問、ご意見、お問い合わせは…
    山本 裕之
    E-mail:hiro1978@mx10.freecom.ne.jp