Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?

Advent用に記事を書いてみました。

コードミックスビジュアルプログラミングStateGoで、日本語プログラミング言語なでしこを使い、タートルグラフィックスに挑戦します^_^

題目

StateGoを使って『なでしこ』のタートルグラフィックスで正N角形を描きます。

どうやって

キャンバスのトップ中央からスタートするとし、各パラメータを次のように定義します。

N  ... 分割数 = N角形のN 
R  ... 半径
AO ... N角形の一辺と中心点が作る三角形の中心点側の角度
AR ... N角形の一辺と中心点が作る三角形の円周側の角度
KAME_SA ... カメの開始角度
KAME_MA ... カメの回転角度
KAME_ML ... カメの直進距離=N角形の一辺の長さ

スタート時にカメの角度をKAME_SAに設定し、KAME_ML分の直進とKAME_MA分の回転をN回実行。

ソース

StateGoで作成されています。
Githubのなでしこサンプルに格納されています。

https://github.com/NNNIC/psgg-nadesiko-sample/v3/examples/04_TORTOISE

動作環境

Windows 10
StateGo ※StateGoをインストールしてください

使い方

1. githubのStateGoなでしこサンプルをクローン

2. v3/examples/04_TORTOISE/TestControl.psggを開く

StateGoが起動し、下図のように表示されます。

3. 【保存と変換ボタン】を押す


ステート図がソースコードに変換され、クリップボードにコピーされます。

もし、コピーされない場合はウインドウメニューのその他からオプションを選択し、クリップボードへ出力するに設定してください。

4. ブラウザでなでしこ3簡易エディタ-タートルグラフィックス用を開きます。

5. テキストボックスにペースト

StateGoの変換でクリップボードにコピーされたテキストをなでしこ簡易エディタにペーストします。

6. 実行

解説

StateGoの画面に簡単な解説を追加しました。

プログラムの流れ

左上の[START]からプログラムが開始され、矢印にそって実行されます。
各ステートは、テンプレートを使い、ソースコードに展開されます。
なでしこの命令がそのまま書き込まれています。

組込について

赤い太線で囲ったステートは、組込ステートと呼ばれます。
なでしこV3より変数スコープが導入されたため、ステート間で使用する変数はここで宣言します。
組込みの内容は、テンプレートが使われずにそのまま出力されます。

コメントについて

ここでは、なでしこ簡易エディタのリンクが設定されています。クリックでメニューを表示して、リンクに飛ぶで、簡易エディタを開くことができます。

ループについて

ループはサブルーチンを条件を満たす間呼び出します。
ここでは、N回サブルーチンを呼び出します。

サブルーチン

サブルーチンは、開始とリターン(サブルーチン)の間のステートを実行します。

サンプル改変

分割数の変更

E_0000ステートの Nの設定を変更してみましょう.

N=3の場合

N=10の場合

0002ステートだけ実行

0002ステートはマイナビの記事からのコピーです。本タートルグラフィックスのプログラミング開始時に動作確認のため使用したものです。
この0002ステートだけを実行してみましょう。
(STARTから0002ステートへ矢印を伸ばして実行)

もっと?

正三角形から正十角形まで描くサンプルを用意しました。Stategoの『なでしこ』サンプル内の v3/examples/04_TORTOISE_2 を同じく実行します。

ステート図

実行

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?