🌸 「なでしこ」
>
🍯 「貯蔵庫」
StateGoでN角形
🌟新規
📒一覧
🔌
🔍検索
🚪ログイン
StateGoでN角形 📖
プログラム:
(→大)
# _次ステートは「S_START」 _今ステートは空 _ループ状態はオン #_コールスタック定義 _コールスタック最大値は5 _コールスタックは空配列 _コールスタック@0は空 _コールスタック@1は空 _コールスタック@2は空 _コールスタック@3は空 _コールスタック@4は空 _コールスタックレベルは0 # # 【StateGoの自動挿入開始】 indent(0) $/./$ # psggConverterLib.dll converted from psgg-file:TestControl.psgg #【組込】 #E_0000 # N=4 #分割数 R=150 #半径 #【組込】 #E_0001 # I=0 #【組込】 #E_0002 #宣言 AO=0 #分割三角形の中心角 AR=0 #分割三角形の円接点角 KAME_SA=0 #出発点角度 KAME_MA=0 #移動角度 KAME_ML=0 #移動距離 # ●S_0000とは # KAME_MAだけカメ右回転 もし、_次ステートが空ならば _次ステートに「S_RET000」を代入 ここまで 戻る ここまで # ●S_0003とは # カメ作成。 もし、_次ステートが空ならば _次ステートに「S_LOP001」を代入 ここまで 戻る ここまで # ●S_0004とは # [250,20]にカメ起点移動。 もし、_次ステートが空ならば _次ステートに「S_0005」を代入 ここまで 戻る ここまで # ●S_0005とは # KAME_SAにカメ角度設定。 もし、_次ステートが空ならば _次ステートに「S_LOP000」を代入 ここまで 戻る ここまで # ●S_CALCとは # AO=360/N #分割三角形の中心角 AR=(180-AO)/2 #分割三角形の円接点角 KAME_SA=180-AR #出発点角度 KAME_MA=180-AR*2 #移動角度 KAME_ML=SIN((90-AR)*(PI/180)) * R * 2 もし、_次ステートが空ならば _次ステートに「S_SETSPEED」を代入 ここまで 戻る ここまで # ●S_ENDとは # 戻る ここまで # ●S_LOP000とは # I=0 _次ステートに「S_LOP000_cond____」を代入 戻る ここまで ●S_LOP000_cond____とは もし、(I<N)ならば もし、(_コールスタックレベル>=(_コールスタック最大値+1))ならば 「_コールスタックがオーバーフローしました」と言う _ループ状態はオフ 戻る ここまで _コールスタック@_コールスタックレベルに「S_LOP000_next____」を代入 _コールスタックレベルに1を足して、_コールスタックレベルに代入 _次ステートに「S_SBS000」を代入 違えば _次ステートに「S_RET001」を代入 ここまで 戻る ここまで ●S_LOP000_next____とは I=I+1 _次ステートに「S_LOP000_cond____」を代入 戻る ここまで # ●S_LOP001とは # N=3 _次ステートに「S_LOP001_cond____」を代入 戻る ここまで ●S_LOP001_cond____とは もし、(N<10)ならば もし、(_コールスタックレベル>=(_コールスタック最大値+1))ならば 「_コールスタックがオーバーフローしました」と言う _ループ状態はオフ 戻る ここまで _コールスタック@_コールスタックレベルに「S_LOP001_next____」を代入 _コールスタックレベルに1を足して、_コールスタックレベルに代入 _次ステートに「S_SBS002」を代入 違えば _次ステートに「S_END」を代入 ここまで 戻る ここまで ●S_LOP001_next____とは N=N+1 _次ステートに「S_LOP001_cond____」を代入 戻る ここまで # ●S_RET000とは # もし、(_コールスタックレベル<=0)ならば 「_コールスタックがアンダーフローしました」と言う 終 ここまで _コールスタックレベルから1を引いて、_コールスタックレベルに代入 _コールスタック@_コールスタックレベルを_次ステートに代入 戻る ここまで # ●S_RET001とは # もし、(_コールスタックレベル<=0)ならば 「_コールスタックがアンダーフローしました」と言う 終 ここまで _コールスタックレベルから1を引いて、_コールスタックレベルに代入 _コールスタック@_コールスタックレベルを_次ステートに代入 戻る ここまで # ●S_SBS000とは # もし、_次ステートが空ならば _次ステートに「S_SBS001」を代入 ここまで 戻る ここまで # ●S_SBS001とは # KAME_MLだけカメ進む もし、_次ステートが空ならば _次ステートに「S_0000」を代入 ここまで 戻る ここまで # ●S_SBS002とは # もし、_次ステートが空ならば _次ステートに「S_CALC」を代入 ここまで 戻る ここまで # ●S_SETSPEEDとは # (KAME_ML*200/R)にカメ速度設定。 もし、_次ステートが空ならば _次ステートに「S_0004」を代入 ここまで 戻る ここまで # ●S_STARTとは # もし、_次ステートが空ならば _次ステートに「S_0003」を代入 ここまで 戻る ここまで # 【StateGoの自動挿入終了】 ループカウンタは0 ループカウンタ最大値は10000 _ループ状態はオン (_ループ状態=オン)の間 ループカウンタに1を足して、ループカウンタに代入する もし、ループカウンタ=ループカウンタ最大値ならば 「エラー:ループカウンタが最大値{ループカウンタ}に達しました」と言う #終了 _今ステートは空 _次ステートは空 _ループ状態はオフ ここまで # もし、_次ステートが空でなければ _今ステートに_次ステートを代入 _次ステートに空を代入 ここまで # もし、_今ステートが空でなければ //「実行ステートは{_今ステート}です」と言う #【StateGoの自動挿入開始】 indent(8) $/^S_/->#switch$ # psggConverterLib.dll converted from psgg-file:TestControl.psgg もし、(_今ステート=「S_0000」)ならば、S_0000する もし、(_今ステート=「S_0003」)ならば、S_0003する もし、(_今ステート=「S_0004」)ならば、S_0004する もし、(_今ステート=「S_0005」)ならば、S_0005する もし、(_今ステート=「S_CALC」)ならば、S_CALCする もし、(_今ステート=「S_END」)ならば、S_ENDする もし、(_今ステート=「S_LOP000」)ならば、S_LOP000する もし、(_今ステート=「S_LOP000_cond____」)ならば、S_LOP000_cond____する もし、(_今ステート=「S_LOP000_next____」)ならば、S_LOP000_next____する もし、(_今ステート=「S_LOP001」)ならば、S_LOP001する もし、(_今ステート=「S_LOP001_cond____」)ならば、S_LOP001_cond____する もし、(_今ステート=「S_LOP001_next____」)ならば、S_LOP001_next____する もし、(_今ステート=「S_RET000」)ならば、S_RET000する もし、(_今ステート=「S_RET001」)ならば、S_RET001する もし、(_今ステート=「S_SBS000」)ならば、S_SBS000する もし、(_今ステート=「S_SBS001」)ならば、S_SBS001する もし、(_今ステート=「S_SBS002」)ならば、S_SBS002する もし、(_今ステート=「S_SETSPEED」)ならば、S_SETSPEEDする もし、(_今ステート=「S_START」)ならば、S_STARTする #【StateGoの自動挿入終了】 もし、(_今ステート=「S_END」)ならば #「終了」と言う _ループ状態はオフ ここまで ここまで /* 以下は、StateGoのマクロです。 :psgg-macro-start ; コメント行 {%0}はコメントに変換 commentline=# {%0} #switch=@@@ もし、(_今ステート=「[[state]]」)ならば、[[state]]する <<<?state-typ/^loop$/ もし、(_今ステート=「[[state]]_cond____」)ならば、[[state]]_cond____する もし、(_今ステート=「[[state]]_next____」)ならば、[[state]]_next____する >>> @@@ @branch=@@@ <<<?"{%0}"/^brif$/ もし、([[brcond:{%N}]])ならば _次ステートに「{%1}」を代入 ここまで >>> <<<?"{%0}"/^brifc$/ もし、([[brcond:{%N}]])ならば _次ステートに「{%1}」を代入 >>> <<<?"{%0}"/^brelseif$/ 違えば、もし、([[brcond:{%N}]])ならば _次ステートに「{%1}」を代入 ここまで >>> <<<?"{%0}"/^brelseifc$/ 違えば、もし、([[brcond:{%N}]])ならば _次ステートに「{%1}」を代入 >>> <<<?"{%0}"/^brelse$/ 違えば _次ステートに「{%1}」を代入 ここまで >>> @@@ gosub=@@@ もし、(_コールスタックレベル>=(_コールスタック最大値+1))ならば 「_コールスタックがオーバーフローしました」と言う _ループ状態はオフ 戻る ここまで _コールスタック@_コールスタックレベルに「{%2}」を代入 _コールスタックレベルに1を足して、_コールスタックレベルに代入 _次ステートに「{%1}」を代入 @@@ return=@@@ もし、(_コールスタックレベル<=0)ならば 「_コールスタックがアンダーフローしました」と言う 終 ここまで _コールスタックレベルから1を引いて、_コールスタックレベルに代入 _コールスタック@_コールスタックレベルを_次ステートに代入 @@@ :psgg-macro-end */
プログラムを実行
⭐ stategotool 作
(
関連URL
)
タイトル:
StateGoでN角形
ライセンス:
未指定 (未指定/貯蔵庫のみ)
タイプ:
wnako
タグ:
-
利用バージョン:
3.1.19
作成日時:
2020/12/10 22:58 (編集: 2020/12/10 23:05)
公開の投稿
⭐⭐
ログイン
して★を付けよう!
Twitterへ投稿
📝作品を編集
作品公開情報
📍この作品のURL:
📍アプリ(即時実行)のURL:
📍アプリ(実行ボタンあり)のURL:
📍ブログパーツ:
上記HTML↑をブログに貼り付けることでアプリを埋め込めます。
📍ライブラリ直リンク - 『!「***」を取込』で使うとき:
通報数:
0
通報って何?