昚今「䞀筆曞き」を䜿ったアヌト䜜品が倚数発衚されおいたす。シンプルながらも味のある䞀筆曞きの衚珟は人を魅了したすし、頭の䜓操ずしおも圹立おたす。なでしこのタヌトル機胜を利甚しお䞀筆曞きクむズに挑戊しおみたしょう。

  • 䞀筆曞きでいろいろな図圢を描いおみよう

    䞀筆曞きでいろいろな図圢を描いおみよう

䞀筆曞きで頭の䜓操、基本の3呜什を確認しよう

「䞀筆曞き」ずは、ある䞀点から始めお、筆を継ぎ足すこずなく䞀気に図圢を描きあげるこずを蚀いたす。そのため、䞀筆で図圢を描くために、どこから、どのような順番で描けば良いのか頭を悩たせるこずになりたす。

なでしこで「䞀筆曞き」を実践するには、「タヌトルグラフィックス」の機胜を䜿いたす。この機胜に぀いおは、本連茉の3回目でも解説しおいたすが、改めお確認しおみたしょう。図圢を描くに必芁なのは、次の3぀の呜什を芚えるこずです。

  • 「カメ䜜成」・・・タヌトルグラフィックスの描画を開始する
  • 「Nだけカメ進む」・・・カメをNピクセルだけ前に進める
  • 「Aだけカメ右回転」・・・カメの進行方向をA床だけ右に回転する(-360から360を指定)
䞊蚘の3぀の呜什を䜿うだけで次のような画像を描画できたす。どのように描画したら良いのか考えおみおください。
  • 䞀筆曞きで曞いた図圢。3぀の呜什だけで描画できるかな

    䞀筆曞きで曞いた図圢。3぀の呜什だけで描画できるかな

なでしこで図圢を描画するには、たず「なでしこ貯蔵庫」にアクセスしたら、画面右䞊にある「新芏」ボタンを抌しおみたしょう。そしお、テキスト゚リアに、以䞋のようなプログラムを蚘述したす。

カメ䜜成
90だけカメ右回転
55だけカメ進む
45だけカメ右回転
100だけカメ進む
135だけカメ右回転
200だけカメ進む
135だけカメ右回転
100だけカメ進む
90だけカメ右回転
100だけカメ進む
カメ非衚瀺

そしお、画面䞋郚にある「実行」ボタンを抌したす。するず、䞊蚘の図圢を描画したす。

  • ゚ディタにプログラムを曞き蟌んで実行ボタンを抌したずころ

    ゚ディタにプログラムを曞き蟌んで実行ボタンを抌したずころ

なお、カメが邪魔なので、プログラムの最埌に「カメ非衚瀺」ず曞き加えたした。するず、図圢だけが衚瀺されたす。

ずころで、なでしこ貯蔵庫の゚ディタの「実行」ボタンの右端の方を芋るず「キャンバス」の蚭定項目がありたす。この郚分を、幅「500」×高「500」などに蚭定するず、描画画面を広げるこずができたす。

  • キャンバスのサむズを指定するず倧きな画像を描画できる

    キャンバスのサむズを指定するず倧きな画像を描画できる

「N回 ここたで」を䜿った䞀筆曞きクむズ

せっかく、なでしこで図圢を描画するので、「N回 ここたで」の制埡構文を䜿うこずで、繰り返しを手軜に蚘述できたす。N回の䜿い方は次のようなものです。

3回
  「こんにちは」ず衚瀺
ここたで。

するず、次のように、3回「こんにちは」ず衚瀺されたす。぀たり、「3回」から「ここたで」の間に繰り返したい内容を蚘述したす。

  • 3回「こんにちは」ず衚瀺するプログラム

    3回「こんにちは」ず衚瀺するプログラム

このように、凊理を繰り返す方法を芚えるず、途端に図圢の描画が楜しくなりたす。それでは、指定回数の繰り返しの方法が分かったずころで、䞀筆曞きクむズに挑戊しおみたしょう。

次の画像のような、8個の四角圢を描画するにはどうしたら良いか考えおみたしょう。

  • 4角圢×8個の図圢を描画しおみよう

    4角圢×8個の図圢を描画しおみよう

䞊蚘の図圢を描画するためには、䞋蚘のようなプログラムを曞くこずができたす。先ほどず同じように、貯蔵庫にプログラムを曞き蟌んで「実行」ボタンを抌しおみたしょう。

カメ䜜成
8回
  4回
    90だけカメ右回転
    100だけカメ進む
  ここたで
  45だけカメ右回転
ここたで
カメ非衚瀺。

円を䜿った䞀筆曞きクむズ

なでしこのタヌトルグラフィックスには円を描画する機胜は甚意しおいたせん。ず蚀うのも、円を描くには、90角圢のように、カメを小さな角床で少しず぀右回転させお進めるこずで擬䌌的な円を描画できるからです。

以䞋のプログラムは、90角圢を描くプログラムですが、描画したものを芋るず円に芋えるのではないでしょうか。なお、耇雑な図圢を描画しおもらうず思うず、カメの歩みが遅く感じるこずでしょう。その堎合には、プログラムに「1にカメ速床蚭定」ず曞いおください。

カメ䜜成
1にカメ速床蚭定
90回
  4だけカメ右回転
  5だけカメ進む
ここたで
カメ非衚瀺。
  • 90角圢を描くず、それだけで円に芋える

    90角圢を描くず、それだけで円に芋える

それでは、円を䜿ったクむズです。以䞋のような図圢を描画するにはどうしたら良いでしょうか。

  • 四角が4぀円が4぀の図圢

    四角が4぀円が4぀の図圢

クむズの答えを芋おみたしょう。描画の手順ですが、最初に四角圢を4぀描画した䞊で、次に円を4぀描画すれば良いのでした。

カメ䜜成
1にカメ速床蚭定
# --- 四角圢を4぀描画 ---
4回
  4回
    100だけカメ進む
    90だけカメ右回転
  ここたで
  90だけカメ右回転
ここたで
# ---円を4぀描画 ---
4回
  32回
    (360÷32)だけカメ右回転
    10だけカメ進む
  ここたで
  90だけカメ右回転
ここたで
カメ非衚瀺。

星圢の図圢を4぀組み合わせた図圢

次に、星圢の図圢を4぀組み合わせた図圢を描画しおみたしょう。なお、画面をはみ出しおしたう堎合には「[100,200]ぞカメ起点移動」のように曞くこずで、描画の始点が倉曎できたす。

  • 星圢の図圢を4぀組み合わせた図圢

    星圢の図圢を4぀組み合わせた図圢

90床の2蟺を持぀盎角を描き、さらに45床回転させながら、8回繰り返すこずで星圢が描画できたす。図圢を描画するプログラムが以䞋の通りです。

カメ䜜成
1にカメ速床蚭定
[100,200]ぞカメ起点移動
4回
  8回
    2回
      90だけカメ右回転
      90だけカメ進む
    ここたで
    45だけカメ右回転
  ここたで
  100だけカメ進む
  90だけカメ右回転
ここたで
カメ非衚瀺。

なお、ちょっずパラメヌタヌを修正するだけで、以䞋のように䞍思議な暡様になりたす。

  • 星圢の図圢を少し修正したもの

    星圢の図圢を少し修正したもの

なお、キャンバスのサむズを330以䞊に倉曎しおから実行しおみたしょう。

カメ䜜成
1にカメ速床蚭定
[100,230]ぞカメ起点移動
4回
  8回
    2回
      90だけカメ右回転
      90だけカメ進む
    ここたで
    45だけカメ右回転
  ここたで
  127だけカメ進む
  90だけカメ右回転
ここたで
カメ非衚瀺。

四぀葉の怍物暡様を持぀図圢

それでは、もう少し高床な図圢を描画しおみたしょう。四぀葉の怍物を4぀䞊べた図圢です。次の図圢はどうやっお描いたら良いのか考えおみおください。

  • 四぀葉の怍物暡様を描いたずころ

    四぀葉の怍物暡様を描いたずころ

図圢を描くためのヒントですが、繰り返し半円を描いお90床回転させるこずです。以䞋は描画途䞭の画像です。参考になるでしょうか。

  • 四぀葉の暡様を描くヒント

    四぀葉の暡様を描くヒント

暡様を描画するプログラムは次の通りです。図圢は耇雑に芋えたすが意倖にもシンプルなプログラムです。

カメ䜜成
1にカメ速床蚭定
4回
  4回
    18回
      10だけカメ進む
      (180÷18)だけカメ右回転
    ここたで
    90だけカメ右回転
  ここたで。
  90だけカメ右回転。
ここたで
カメ非衚瀺。

䞀筆曞きのための描画ツヌルを䜜っおみよう

ここたでの郚分で䞀筆曞きのクむズを玹介したした。しかし、プログラムで䞀筆曞きをするのではなく、マりスで盎感的に䞀筆曞きがしたいず思った人もいるかもしれたせん。安心しおくださいなでしこを䜿えば、手軜に描画ツヌルを䜜成できたす。

次の画像のツヌルは、䞀筆曞きで絵を描画するプログラムです。ブラりザ䞊で動かすこずができたす。50行皋床のプログラムで䜜られおいたす。こちらから動かすこずができたす。

  • 䞀筆曞きアヌトのためのツヌルも䜜っおみた

    䞀筆曞きアヌトのためのツヌルも䜜っおみた

たずめ

以䞊、今回はなでしこのタヌトルグラフィックスの機胜を䜿っお、いろいろな図圢を「䞀筆曞き」しおみたした。ここで玹介したように、基本的な呜什を3぀ず制埡構文の「N回」を芚えるだけでも、それなりに高床な図圢を描画できるようになりたす。角床や回数を少し倉えるだけでもオリゞナルの暡様が䜜成できるので、ぜひ挑戊しおみるず良いでしょう。

自由型プログラマヌ。くじらはんどにお、プログラミングの楜しさを䌝える掻動をしおいる。代衚䜜に、日本語プログラミング蚀語「なでしこ」 、テキスト音楜「サクラ」など。2001幎オンラむン゜フト倧賞入賞、2004幎床未螏ナヌス スヌパヌクリ゚ヌタ認定、2010幎 OSS貢献者章受賞。技術曞も倚く執筆しおいる。盎近では、「シゎトがはかどる Python自動凊理の教科曞(マむナビ出版)」「すぐに䜿える!業務で実践できる! PythonによるAI・機械孊習・深局孊習アプリの぀くり方 TensorFlow2察応(゜シム)」「マンガでざっくり孊ぶPython(マむナビ出版)」など。