プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

入門その1 モアレ模様を描いてみよう

本カテゴリの「プチコン入門」では、僕が二十数年前にパソコンのプログラミングに興味を覚えた時の経験を基に、「BASICでグラフィックを描いてみる」ことを中心に、プログラミングすることそのものを習得することを主眼に書いています。
BASICそのものやプログラムを入力することがわからない方は、本家の入門編( プチコン:初心者むけ講座 )を見ることをおすすめします。この記事が皆様の参考となりますように。

では、はじまりはじまり...。

この「プチコン入門」の狙い

かつて20数年前、プログラミングすることとは、自分で試行錯誤しながら様々な発見をしつつ、コンピュータの動作原理そのものを理解することでした。
今となってはそれをプログラムする人全てに求めることは、全く古いことかもしれません。
しかし、かつてのプログラミングするということの経験は、宝島の地図を自分の力で解読していくような楽しみがあったことを僕は忘れることができません。
この「プチコン入門」では、そうした私的な体験を皆さんにも追体験していただくとともに、プログラミングとは発見すること、プログラミングとはとても面白いこと、とわかっていただけたらなぁとの想いで書き始めるものです。

ここで想定するプログラミングする人、いわいるプログラマーという人は、次のような人物像です。

  • なぜこのようになるのか?、と好奇心を持つ人
  • こうなったら面白いかもしれない!、と想像力を持つ人
  • ないものは自分でつくってやろう!!、というDo It Yourselfの精神を持つ人

とこれらのどこかにあてはまれば、あなたは立派なプログラマーとなることができるでしょう。
かつてはパソコンを買うことができずに、興味はあったのに次第に縁遠くなってしまった人たち、いわいる「ナイコン」だった皆さん。おかえりなさい。やっと、かつての思いを果たすことができますね。

このカテゴリの記事では、プチコンで動くBASICでグラフィックを描いたりしながら、プログラミングそのものに興味をいだいてもらうことを主眼に書いています。文法その他は二の次です。
当ブログは、皆さんのプログラミングライフを応援しています。

モアレ模様を描いてみる

いにしえの「習うより慣れろ!」という言葉通り、いきなり次のプログラムを入力して実行してみましょう。
プログラムの入力の仕方や、実行の仕方がわからない人は、スマイルブーム本家のページ( プチコン:初心者むけ講座 )を参照してみてください。
それでもわからない、という方はコメントください。僕の可能な範囲でフォローします。
(あくまで、ほかに仕事をもつ人間が趣味で書いているブログなので即レスとかは勘弁してください。)

さてプログラムです。「編集」で1字1句たがわず入力してください。

CLS
GPAGE 0:GCLS
FOR I=0 TO 255 STEP 2
GLINE I,0,255-I,191,15
NEXT I

入力できましたか?
0=ゼロ と O=オー が見分けづらいですが、3行目にある「TO」の「O」はオーで、それ以外はすべてゼロです。

では、「実行」モードにして、「RUN」と入力してみましょう。

こんな風に表示されましたか?同じにならない場合は、もう一度見直しましょう。

なんだか不思議な模様が見えませんか?
これがモアレ模様というものです。いわいる干渉縞です。
モアレ - Wikipedia

では、プログラムの3行目の「STEP 2」という箇所の「2」を「4」に変えてみましょう。
変更後の3行目は次のようになります。

FOR I=0 TO 255 STEP 4

ちゃんと修正できましたか?
修正できたら、「実行」モードにして「RUN」を入力しましょう。

ちょっと模様が変わりましたね?
なんだか実験みたいで楽しくないですか?
では数字をさらに大きくして「4」を「8」にしてみましょう。
変更後の3行目は次のようになります。

FOR I=0 TO 255 STEP 8

修正できたら、「実行」モードで「RUN」を入力しましょう。

ん?なんだかもとの縞模様が見えないような...。
実は数字を大きくしすぎると縞模様に見えなくなります。
では今度は数字を小さくして、「8」を「1」にしてみましょう。
変更後の3行目は次のようになります。

FOR I=0 TO 255 STEP 1

修正できたら、「実行」モードで「RUN」ですね。

あれ?今度は縞模様どころか、ボーリングのスコアに書いてある「ストライク!」みたいなマークになってしまいました。(ちょっと向きがちがいますが)

では「1」を「0」にするとどうなるのでしょうか?
早速やってみましょう。

FOR I=0 TO 255 STEP 0

そして、「実行」モードで「RUN」します。

お?線が一本引かれたきり、キーを押しても反応しなくなってしまいました...。
やばい、DSiが壊れた?! ってあせりましたけど、これがいわいる「無限ループ」ってやつです。

あわてず騒がず、下画面左下にある、「停止」をタッチしましょう。

すると、次のような画面になったでしょう。

「Break in 4」って表示されてますけど、これは、プログラムの4行目で実行を停止しました、って意味合いです。
「停止」を押すタイミングによって、数字の4が3〜5になりますけど、とにかく3行目から5行目の間で止まりましたよ、ってことです。

これは実は、3行目の「FOR」と書いてある行と、5行目の「NEXT I」と書いてある行の間をグルグル回っているってことです。
「STEP」の数字を「0」にする以前は、絵が描かれた後に「OK」と表示されてプログラムが終了しました。
これは「FOR」と「NEXT I」という間をグルグル回っているのだけれど、ある条件になるとグルグル回るのをやめるのです。

3行目の数字をいろいろいじくってみて、どんな画面が表示されるのか、どんな動きになるのか試してみましょう! 【好奇心】
いろいろ試してみてもDSiは壊れません。
「無限ループ」になってしまった場合は、あわてず騒がず、「停止」をタッチしましょう。
「SELECT」ボタンを押しても、「停止」を押したのと同じになります。

上下には模様が表示されますが、左右の空間が空いています。ここにも模様を描いてみたい場合にはどうすればよいでしょうか?

色が白だけで描いてありますが、もっとカラフルにしてみたいのではないでしょうか。どうしたら色を変えることができるでしょうか?

これらの方法は果たして?


普通の入門書だったら、FORっていうのが何か、とかGLINEっていうのが何か、とか説明しますが、ここでは一切説明しません。
とにかく、いろいろいじくってみて、どんな動きになるのかを体感してみてください。
不思議がること、面白がること、これがプログラミングすることの第一歩だと、僕は信じています。

ではまた次回お会いしましょう!!