Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2017/08/10 (木)

タートルグラフィックスをcanvasで使う!

| 14:20 | タートルグラフィックスをcanvasで使う! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - タートルグラフィックスをcanvasで使う! - 雪乃☆雫のなでしこ日和 タートルグラフィックスをcanvasで使う! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 前の課題の解決です。

 必要なのは、「カメ描画先」と「カメ画像URL」でした。


 まずは、

 https://nadesi.com/doc3/index.php?HTML%E3%81%B8%E3%81%AE%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E6%96%B9%E6%B3%95

 にあるとうり、プラグイン追加

<!-- タートルグラフィックスを使うのに必要プラグイン  -->
<script src="https://nadesi.com/v3/0.1.0/release/plugin_turtle.js"></script>

 して、「描画開始で」描画先に指定したcanvasのIDを、「カメ描画先」に指定します。

 そうすると、描画は行われるのですが、カメさんが出てきません。

 どうやら、PCや違うサイトから使おうとゆう場合は、「カメ画像URL」に画像のURLを指定してやる必要あるみたい。

 捜索の結果、カメさんは「https://nadesi.com/v3/0.1.0/demo/turtle.png」にいましたので、コレを指定します。

 もちろん、自分の好きなカメでもウサギでも、自分のトコに画像を用意してもいいわけですけどね。

 しかし、ワタシ個人的には、ナコ様に描いて欲しいなぁ・・・

 これは勝手に使うと問題がありそうだから、公式サイトで用意してくれないかなぁwww


 ・・・それはともかく、んなこんなでこんな感じ。

 面倒なので、描くモノは相変わらず同じです;

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>なでしこ3てすと</title>
  </head>

  <body>
    <!-- なでしこを使うために必要なスクリプト -->
    <script src="https://nadesi.com/v3/0.1.0/release/wnako3.js?run"></script>
    <!-- タートルグラフィックスを使うのに必要プラグイン  -->
    <script src="https://nadesi.com/v3/0.1.0/release/plugin_turtle.js"></script>
    <!-- type="なでしこ" のスクリプトが実行される -->
    <script type="なでしこ">
      #--------------------------------------
      # ここになでしこのプログラムを記述
      #-----------------------------------------------------------
      「canvas#cv」のDOM要素取得。  #まずHTMLcanvasタグを設置し、IDを設定し、DOM要素取得。
      それへ描画開始。        #それを描画先に指定。
      カメ描画先=「cv」       #カメ描画先は、canvasのIDを指定する。
      カメ画像URL=「https://nadesi.com/v3/0.1.0/demo/turtle.png」  #ここにカメさんがいる!
      カメ作成。
      5に太設定。
      K=150。XX=155。YY=155。
      PX=1。PY=1。QX=-1。QY=1。RX=-1。RY=-1。SX=1。SY=-1。
      C=200
      8
        色=RGB(255,C,C)。C=C-20。
        色にカメペン色設定。
        PX2=PXとQXの中点。PY2=PYとQYの中点。
        QX2=QXとRXの中点。QY2=QYとRYの中点。
        RX2=RXとSXの中点。RY2=RYとSYの中点。
        SX2=SXとPXの中点。SY2=SYとPYの中点。
        [(K*PX2+XX),((-K)*PY2+YY)]へカメ起点移動。
        [(K*QX2+XX),((-K)*QY2+YY)]へカメ移動。
        [(K*RX2+XX),((-K)*RY2+YY)]へカメ移動。
        [(K*SX2+XX),((-K)*SY2+YY)]へカメ移動。
        [(K*PX2+XX),((-K)*PY2+YY)]へカメ移動。
        PX=PX2。PY=PY2。QX=QX2。QY=QY2。RX=RX2。RY=RY2。SX=SX2。SY=SY2。
      ここまで。
      カメ非表示。

      ●中点(AとBの)
        (A+B)/2で戻るここまで。
    </script>

    <H1>なでしこ3てすと~タートルグラフィックスを使う</H1>
    <HR>
    <FONT color="red">
    <H2>カメさんがバラを描く</H2>
    <canvas id="cv" width=320 height=320></canvas>
    <HR>
  </body>
</html>

 できた!

http://www.geocities.jp/snowdrops890/wnako3_test/wnako3_test02_turtle.html

 そうして、これならcanvasのサイズは自分で好きに変えられるから、広々としたところでのびのびとカメさんを歩かすことが出来るわけですね~♪

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170810

2017/08/08 (火)

canvasに図形を描画するよ!

| 23:37 | canvasに図形を描画するよ! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - canvasに図形を描画するよ! - 雪乃☆雫のなでしこ日和 canvasに図形を描画するよ! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 しかし、canvasって、何?!(っからか;)

 まず、「描画開始」命令の「描画先にCanvasを指定して描画API(2D)の利用準備する」とゆう説明からして分かりません;;

 描画系の命令を使うためには、とりあえず最初にこの「描画開始」で利用準備することが必要ラシイことは分かるのですが・・・

 ・・・と思っていたら、HTMLに<canvas>とゆうタグがあるのでした(バカ;)

 して、簡易エディタエラーメッセージによると、「描画を行うためには、HTML内にcanvasを配置し、idを振って『描画開始』命令に指定します。」とのこと。

 ソレを命令の説明の所にも書いて置いて欲しいの~~~。

 して、さらにもう一つ、落とし穴がありました。

 HTML内に、canvasを設置して、IDをつけたら、まずは、「DOM要素取得」です。

 しかるのちに、それへ「描画開始」とゆうことになります。

 ここが非常にわかりにくくて苦労しました。

 たぶん、Javascriptなどの分かっている方には、アレをやる代わりにコレか~・・・みたいな感じに、説明がなくともすんなり理解出来ることなのかも知れないんですが(?)なにしろ全体的に何も知らないので、さっぱりですヽ(;´Д`)ノ

 でも、コレさえ分かったら、後は意外とすんなり行きました。

 あと、canvasはなにも指定しないと、300*150くらいのサイズのようなので、widthとheightを設定してやります。

 でも・・・度はタートルグラフィックスの使い方が分からなんだ(+_+;

 https://nadesi.com/doc3/index.php?HTML%E3%81%B8%E3%81%AE%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E6%96%B9%E6%B3%95

 に記載の通りにタートルグラフィックスを使うのに必要プラグイン追加してみたけれど・・・なんか、うまくいかないんだよね。

 カメ作成しても出てこない

 まあ、それはまた後の課題として、描画で前同様バラを描くヤツ。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>なでしこ3てすと</title>
  </head>

  <body>
    <!-- なでしこを使うために必要なスクリプト -->
    <script src="https://nadesi.com/v3/0.1.0/release/wnako3.js?run"></script>
    <!-- type="なでしこ" のスクリプトが実行される -->
    <script type="なでしこ">
      #--------------------------------------
      # ここになでしこのプログラムを記述
      #-----------------------------------------------------------
      「canvas#cv」のDOM要素取得。  #まずHTMLcanvasタグを設置し、IDを設定し、DOM要素取得。
      それへ描画開始。        #それを描画先に指定。
      5に太設定。

      K=150。XX=155。YY=155。
      PX=1。PY=1。QX=-1。QY=1。RX=-1。RY=-1。SX=1。SY=-1。
      C=200
      8
        色=RGB(255,C,C)。C=C-20。
        色に線色設定。
        PX2=PXとQXの中点。PY2=PYとQYの中点。
        QX2=QXとRXの中点。QY2=QYとRYの中点。
        RX2=RXとSXの中点。RY2=RYとSYの中点。
        SX2=SXとPXの中点。SY2=SYとPYの中点。

        [(K*PX2+XX),((-K)*PY2+YY)]から[(K*QX2+XX),((-K)*QY2+YY)]まで描画。
        [(K*QX2+XX),((-K)*QY2+YY)]から[(K*RX2+XX),((-K)*RY2+YY)]まで描画。
        [(K*RX2+XX),((-K)*RY2+YY)]から[(K*SX2+XX),((-K)*SY2+YY)]まで描画。
        [(K*SX2+XX),((-K)*SY2+YY)]から[(K*PX2+XX),((-K)*PY2+YY)]まで描画。
        PX=PX2。PY=PY2。QX=QX2。QY=QY2。RX=RX2。RY=RY2。SX=SX2。SY=SY2。
      ここまで。

      ●中点(AとBの)
        (A+B)/2で戻るここまで。
    </script>

    <H1>なでしこ3てすと~canvasに図形を描く</H1>
    <HR>
    <FONT color="red">
    <H2>バラが咲いた(内部自己相似形)</H2>
    <canvas id="cv" width=320 height=320></canvas>
    <HR>
  </body>
</html>

 ちゃんと、見れた~♪♪♪

http://www.geocities.jp/snowdrops890/wnako3_test/wnako3_test02_canvas.html

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170808

2017/08/04 (金)

カメさんで遊ぶよ!

| 22:25 | カメさんで遊ぶよ! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - カメさんで遊ぶよ! - 雪乃☆雫のなでしこ日和 カメさんで遊ぶよ! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 こうゆう、プログラムで図形を描く的なコトは、大の苦手なんだけど、カメさんが描いてくれるだけで、なんか和むねえ~♪


 しかし~、例によってまたぼやきからスタートですよ;;;

 たとえばこんな簡単な四則計算。

 -5*2+10を表示

 コレは当然、なでしこ1でもなでしこ3でも、正しく計算されて、0とゆうことになるんですが・・・

 この、5の部分を、変数にしたいと思ってこうしたところ・・・

 A=5
 -A*2+10を表示

 なでしこ1では問題の無いこのコードですが、なでしこ3ではえらーとなります><;

 しかしまあ、コレは仕方ありません。なでしこ1でも、計算部分を括弧で括ってやらないとエラーになっちゃう場面は時々あります

 でっ、括弧で括るじゃないですか。

 A=5
 (-A*2+10)を表示

 あれれ~?

 この計算結果が-20って、おかしくないですか?!?!

 どうやら、Aにつけたつもりのマイナスの符号だけど、「(-(A*2+10))」のようについてしまうんだね。

 それって、どうなの???

 ・・・まあ、ちゃんと「((-A)*2+10)」と括りなさいよということで・・・


 さてさて、気を取り直して・・・

 いつかどこかで見たヤツ。

#バラが咲いた(内部自己相似形)
#-----------------------------------------------------------
カメ作成。
K=150。XX=155。YY=155。
PX=1。PY=1。QX=-1。QY=1。RX=-1。RY=-1。SX=1。SY=-1。

C=200
8
  色=RGB(255,C,C)。C=C-20
  色にカメペン色設定。
  PX2=PXとQXの中点。PY2=PYとQYの中点。
  QX2=QXとRXの中点。QY2=QYとRYの中点。
  RX2=RXとSXの中点。RY2=RYとSYの中点。
  SX2=SXとPXの中点。SY2=SYとPYの中点。
  [(K*PX2+XX),((-K)*PY2+YY)]へカメ起点移動。
  [(K*QX2+XX),((-K)*QY2+YY)]へカメ移動。
  [(K*RX2+XX),((-K)*RY2+YY)]へカメ移動。
  [(K*SX2+XX),((-K)*SY2+YY)]へカメ移動。
  [(K*PX2+XX),((-K)*PY2+YY)]へカメ移動。
  PX=PX2。PY=PY2。QX=QX2。QY=QY2。RX=RX2。RY=RY2。SX=SX2。SY=SY2。
ここまで。
カメ非表示。

●中点(AとBの)
  (A+B)/2で戻るここまで。
#-----------------------------------------------------------

お試しはタートルグラフィックスようのエディタで。

https://nadesi.com/doc3/index.php?%E3%81%AA%E3%81%A7%E3%81%97%E3%81%933%E7%B0%A1%E6%98%93%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF-%E3%82%BF%E3%83%BC%E3%83%88%E3%83%AB%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%E7%94%A8

 しかし、お絵かきの出来る範囲が、意外と狭いんだよね。

 縦が400はまあ妥当として、横がなぜか枠の端っこまで描けず300で切れてしまうんだね。(スマホ対応のサイズなんですね。PCようにもう少し広く描けるところがあると、うれしいね)

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170804

2017/07/23 (日)

なでしこ3をJavaScriptの代わりに使う?

| 01:58 | なでしこ3をJavaScriptの代わりに使う? - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - なでしこ3をJavaScriptの代わりに使う? - 雪乃☆雫のなでしこ日和 なでしこ3をJavaScriptの代わりに使う? - 雪乃☆雫のなでしこ日和 のブックマークコメント

 代わり・・・って言ったって、JavaScript自体がまったくわからん、いやむしろ、HTMLだって、あんまりわからん。

 でも、果敢にお試ししてみるるるるwww


 HTMLに、なでしこ3を取り込む術はここに書いてあります

https://nadesi.com/doc3/index.php?HTML%E3%81%B8%E3%81%AE%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E6%96%B9%E6%B3%95

 コレによれば・・・

<!-- なでしこを使うために必要なスクリプト -->
<script src="https://nadesi.com/v3/0.1.0/release/wnako3.js?run"></script>

<!-- type="なでしこ" のスクリプトが実行される -->
<script type="なでしこ">
「こんにちは」と言う。
</script>

 こうゆうことなのですが、どうもうまくいきません。

 さすがにこれだけじゃダメかと、<HTML>や<HEAD><BODY>などのタグを追加してみましたけれどダメで、やっぱりHTML5からようく学ばないとムリですか?! と思っていたのですが、なんと実は単に文字コードの問題でした。しくしくしくしく。

 UTF-8」で保存ないとダメだったんですね。

 具体例のソースを見たら、確かにちゃんと「<meta charset="utf-8">」と。(このタグ自体が、ワタシの知らない呪文だけどね;;;)

 これまで一度も文字コードなんて気にして生きては来なかったけど、ウチのテキストエディタで何の指定もせずふつーに保存をしたら、「SHIFT-JIS」になるので、文字コード指定して保存してやらなきゃだったのですよ。

 これってわりと、モノスゴク、重要な情報じゃないですか?

 それとも、ワタシの頭が悪いだけで、世の中の方々にとってはフツー知ってるでしょ?!レベルのことだったのですかね。め


 さて、気を取り直して・・・

 とりあえず、「こんにちは」と言ってもらえました♪

 これで、JavaScriptがいっこも分からなくても、なでしこのコードで色々できるということでしょうか。素晴らしい!

 しかし、DOMナントカって、一体なんすか(´д`;

 わからんことばっか(@_@)


 それでも、見よう見まねで取りあえずこんな感じ?

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>なでしこ3てすと</title>
  </head>

  <body>
    <!-- なでしこを使うために必要なスクリプト -->
    <script src="https://nadesi.com/v3/0.1.0/release/wnako3.js?run"></script>
    <!-- type="なでしこ" のスクリプトが実行される -->
    <script type="なでしこ">
      #--------------------------------------
      # ここになでしこのプログラムを記述
      #-----------------------------------------------------------
      時は「{}」の2だけ文字左部分整数変換もし、時≧0と時<4のANDならば、挨拶=「こんばんは。夜更かしですね。」
      違えばもし、時≧4と時<11のANDならば、挨拶=「おはようございます。」
      違えばもし、時≧11と時<18のANDならば、挨拶=「こんにちは。」
      違えばもし、時≧18と時≦23のANDならば、挨拶=「こんばんは。」
      「p#a」のDOM要素取得。
      「  {挨拶}」をDOMテキスト設定。

      年=「{今日}」の4だけ文字左部分。
      月=「{今日}」の6から2をMID。
      日=「{今日}」の2だけ文字右部分。
      「p#b」のDOM要素取得。
      「  今日は{年}年{月}月{日}日です。」をDOMテキスト設定。
      #-----------------------------------------------------------
    </script>

    <H1>なでしこ3のてすと</H1>
    <P id="a">はろー</P>
    <P id="b">日付表示</P>
    <HR>
  </body>
</html>

 定番の(?)時でメッセージが変わるヤツと、単に今日の日付を表示するヤツ。

 なでしこ3では、「かつ」が使えないんですね。

 「AとBのAND」・・・って、なんかすごく妙;

 でも、文字左部分なども助詞の付き方が変わって、v1非互換となっているから、なにか元のようには出来ない事情があるのでしょう。

 それと、なぜか「文字抜出」が使えない。なんでだ;

 とりあえず、MIDが使えたから良いけど。


 んなこんなで・・・

http://www.geocities.jp/snowdrops890/wnako3_test.html

 ちゃんと動いてるっぽい!(喜)

 (これはインターネット上でもちゃんと動くのを確認したいだけのためにジオシティーズに登録したので、他にはなんにもありませんw)

 ああ、スマホからもいちおう見れた!(≧▽≦)

めだかめだか2017/07/25 17:58お久しぶりです。ジャンク物を漁っていたら、いつの間にかPCが5、6台になっちゃっためだかです←

自分も、一時期なでしこがHTMLに埋め込みができる!!!と思い、サイトを作ってみようかと思いましたが、挫折しましたwだって、難しいじゃないですか~
そりゃ、大半をなでしこで作ってしまえば楽だとは思いますけど、メンテナンスや変更を入れるときに、複雑でわかりにくそう・・・って、なりません!?(笑

なでしこ3自体も、通常版のなでしことは違い、使える文字も限られてくるので、かなーり使いにくそうですね^^;
自分はお手上げですw


そうでした。この前、教えて頂いたディスクトップの話ですが、専用のソフトをみつけ、そちらにゾッコンです・・・wなでしこで作るのは、諦めちゃったですw

でです、次なる目論見で・・・w
MMDって、ご存知ですか・・・?3Dモデルを動かすものなのですが・・・
普通は、マウスを使ってモデルを動かすのですが、これをパソコンのカメラと連動させて、現実で体を動かすとそれに連動してパソコン内のモデルも動くといったものです。

また、無理だった場合、なでしこでそういった環境を構築することになりますが、なでしこでそこまでできる???て、なりました。
やはり、3Dモデルとなると、unityやC++やjavaになってくるのでしょうか?

できたところで、果たして実用レベルまでのものになるのかは、とりあえず置いときましょう・・・wロマン優先ですっ!

雪乃☆雫雪乃☆雫2017/07/28 12:43 お久しぶりです。お返事が遅くなりまして、スミマセン。何しろ、ナゾ解明しなきゃならないとゆう新たな任務(ゲーム;)が発生していたりして、何かと忙しいのですよw
 なでしこ3は、まだまだベータ版の公開とゆう段階だし、実用のことを考えるのはもうちょっと先かもね。なにかと、ナゾ現象も多いですし><;
 サイトを作ってみようだの、あまつさえ大半をなでしこでどうこうしようなんて大それた野望はないのですぅ~。だって、もともとHTMLもJavascriptもよく分からない上に、今回のことでようく分かったのですが、多少知ってたはずのことも、もはや時代遅れすぎて何の役に立たないっぽい!(ToT)
 でも、折角なので、色々お試しして遊んでいます♪
 ムカシ、内容なんていっこも分からず貼り付けていた、定型のちっちゃなJavascriptが、今なら移植できるかも~・・というレベルw
 だけど、ムカシのJavascriptはもはや今時のJavascriptとは、もはやまるっきり違っているみたいなんだよね、コレが;;;


 ででで?
 次々と、見たことも聞いたこともないヤツを出してこられますねぇ~。
 毎回、野望が大きいですよね♪
 しかし、ちょっとダウンロードしてみたけれど、まださっぱり使い方も分かりませぬヽ(;´Д`)ノ
 3Dの時代の人じゃないですしね~(ToT)
 ちなみに、コレとなでしことで、なんらかの連携が可能かというコトでしょうかね?
 なでしこ自体で3Dモデルというのはなかなか大変そう。Directなんちゃらとか、使えないですしね・・・

めだかめだか2017/08/01 22:11お返事遅くなりました~
あまりの暑さに思考停止です・・・w

もう一回、ちゃんとweb制作を頑張ってみようかな~・・・とか思う今日このごろですwなんとしても、なでしこ3を使うために・・・!w
javaScriptも、どんどん新機能を追加しており、web製作者を悩ませているとか・・・w


す、すいませ~ん(笑
わからないことは、雪乃さんに投げておけば解決するかも???とか思っちゃってますw
野望が大きいのも、反省です・・・w

で、話を戻しますとそうですね・・・もっと詳しく言いますと、

なでしこで、動きを検出→なでしこでそれを処理する→処理した内容をMMDに送る→MMDにて反映

みたいな感じでしょうか・・・
ただ、なでしこがDirectなんちゃらを嫌っている(使えない)となると、なでしこで3Dを処理することは、「
ほぼ」無理になったことでしょうね・・・
正直話、3Dモデルの処理にはかなりの技術がいるらしいですし、それなりの言語も・・・らしいですので、なでしこで3Dを扱えないことがわかって安心(?)しています。

なにはともあれ、この野望を叶えるべく、なでしこからMMDを操作?できるようにはなりたいです!

雪乃☆雫雪乃☆雫2017/08/03 14:47 えっと、まず、「なでしこからMMDを操作したい」とゆうことに関して、その方法に関して何らかのビジョンがあるのでしょうか?
 たとえばカメラはね、ハードですから、Windowsのプログラムからそれを操作できるようにするための関数が、もともとWindowsに用意されてありました。
 Juliusは、Juliusの側に、他のプログラムと連携するための機能がありましたから、その仕様に従って、なでしこでTCP接続してそれを受信する方法を考えるだけで良かった。
 MMDに、そういった連携の機能があって、それをなでしこでも行えるのかどうかとか、他言語で実際にこうゆうことをしてる実例があるが、なでしこでも同様のことが出来るのかというような、明確なビジョンがなくちゃ、考えてみようもないでございますよヽ(;´Д`)ノ

 完全な連携とゆうことでなければ、ポーズデータ(.vpd)などは開いてみるとテキストだから、その内容の意味を知れば、静止画から、なでしこで、MMDで使えるポーズデータを作成することなどは可能なのかも知れない。
 モーションデータ(.vmd)なども、CSV形式に変換したり元に戻したりできるフリーソフトがあるようなので、CSV形式ならなでしこからもいじれるかも・・・? などと思ったり思わなかったりするところなんですけど・・・
 ・・・しかし、カメラの時のことを考えれば、結局、「なでしこで動きを検出」がまず、速度的に難しいんじゃないですか。

 どうやらMMDではKinectが使えるラシイので、なんだかそれが一番手っ取り早いみたいな・・・w

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170723

2017/07/11 (火)

なでしこ3でしりとり

| 11:12 | なでしこ3でしりとり - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - なでしこ3でしりとり - 雪乃☆雫のなでしこ日和 なでしこ3でしりとり - 雪乃☆雫のなでしこ日和 のブックマークコメント

 とりあえず、末尾語を引数で渡すことでできるようになったから載せとく。

 だけど別に、関数内で使う変数は全部そうしなきゃない仕様になったとゆうわけではないようなので、ナゾはナゾのままなんだよねぇ~;

#なでしこ3でしりとり3
#-----------------------------------------------------------
除去音=「ー-~・‥….。,、?!」。
変換音=「がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょゎっをゐゑ」
変換後=「かきくけこさしすせたちつてとはひふへほはひふへほあいうえおやゆよわつおいえ」
#-----------------------------------------------------------
●先頭語取得(Sから)
  先頭語はSの1だけ文字左部分の変換音変換。
ここまで

●末尾語取得(Sから)
  S=Sから除去音除去。
  末尾語はSの1だけ文字右部分の変換音変換。
ここまで
#-----------------------------------------------------------
●除去音除去(Sから)
  除去音を文字列分解反復
    S=Sの対象置換。
  ここまで
  Sで戻るここまで

●変換音変換(Sの)
  回数=0
  変換文字=変換後を文字列分解。
  変換音を文字列分解反復
    もし、S=対象ならば、S=変換文字@回数
    回数回数+1
  ここまで
  Sで戻るここまで
#-----------------------------------------------------------

#-----テスト------------------------------------------------
ルール=「【ルール説明】
・小さい文字(拗促音)は大きくするよ(カボチャ→やさい)
・濁音半濁音は清音と同様に繋げられるよ(りんご→こまつな)
・長音は無視できるよ(チーター→たぬき)」
ルールと言う。
ルールと表示。

開始語=「なでしこ」
先頭語=。
末尾語=開始語から先頭語取得。

末尾語と開始語でシリトリする。

●シリトリ(MとSで)
  先頭語はSから先頭語取得。
  末尾語=M。
  もし、先頭語=末尾語でなければ、
    「負け!」と言う終わる。
  ここまで。
  末尾語はSから末尾語取得。
  もし、末尾語=「ん」ならば、
    「負け!」と言う終わる。
  ここまで。
  ダイアログIME=「IMEオン」
  「『{S}』{改行}{改行}全角ひらがなで続く単語を入力してね。」と尋ねる。
  もしそれでなければ、
    末尾語とそれでシリトリする。
  違えば、
    「負け!」と言う終わる。
  ここまで。
ここまで
#-----------------------------------------------------------

https://nadesi.com/doc3/index.php?%E3%81%AA%E3%81%A7%E3%81%97%E3%81%933%E7%B0%A1%E6%98%93%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170711

2017/07/06 (木)

なでしこ3

| 23:58 | なでしこ3 - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - なでしこ3 - 雪乃☆雫のなでしこ日和 なでしこ3 - 雪乃☆雫のなでしこ日和 のブックマークコメント

 なでしこ3の0.1.0をリリースとゆうことで、まにゅあるもせっせと更新されてる風味だったのでちょっと学んでみようと思ったのです。

 前のしりとりくらいなら、簡単に移植できそうに思ったけど、甘かったorz

 なにしろ、参考に出来る物も少ないから、自分が違ってるのか、3の仕様なのか、まだベータ版ゆえの不備なのかすらわかんないコト多数;;;

 なんとしてもうまくいかず、取りあえずこんな感じ。

 しりとりのルールについて考える前の、とりあえず最後の一文字と先頭の一文字でつないでいくだけのしりとりです。

 は「なでしこ3」なので、万一奇特にもお試ししてみようとゆう方は、ここから。

https://nadesi.com/doc3/index.php?%E3%81%AA%E3%81%A7%E3%81%97%E3%81%933%E7%B0%A1%E6%98%93%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF

#なでしこ3でしりとり
#-----------------------------------------------------------
ルール=「【ルール説明】
・最後に『ん』のつく単語を入力したら負け!
・濁音半濁音はのまま(りんご→ごりら)
・小さな文字は大きな文字で入力してね(紅茶=こうちや)
・長音は読みの通りの母音で入力してね(チーター=ちいたあ)」
ルールと言う。
ルールと表示。

開始語=「なでしこ」
先頭語=。
末尾語=開始語の1だけ文字左部分。

開始語でシリトリする。

●シリトリ(Sで)
  先頭語はSの1だけ文字左部分。
  もし、先頭語=末尾語でなければ、
    「負け!」と言う終わる。
  ここまで。
  末尾語はSの1だけ文字右部分。
  もし、末尾語=「ん」ならば、
    「負け!」と言う終わる。
  ここまで。
  ダイアログIME=「IMEオン」
  「『{S}』{改行}{改行}全角ひらがなで続く単語を入力してね。」と尋ねる。
  もしそれでなければ、
    それでシリトリする。
  違えば、
    「負け!」と言う終わる。
  ここまで。
ここまで。
#-----------------------------------------------------------

 まず変わったのは、もしや繰り返しや関数の終わりに「ここまで」が必要になったことで、めんどくさいけど、色々のことを考えるとこれはこのほうがイイですよね。

 何しろ、なでしこはインデント一つ狂っただけでも事件が起きるのに、掲示板なんかじゃ当然のよーにタブや半角スペースが消えたり、全角スペースに置き換わったりされてしまうから厄介が起きまくりだけど、ブロックを明示できれば、の心配がないもねー。

 あと、配列も変わってるので、よく確認しないと。

 でもまあ、こはまず問題ないとして・・・


 「終わる」で、エラー表示になるって、一体なんで~?

 まあ、終わるからいいけど;


 「カッコ閉じ」「波カッコ閉じ」が、「undefined」となってしまう。

#-----------------------------------------------------------
「{カッコ}なでしこ3{カッコ閉じ}」と表示。
「{波カッコ}なでしこ3{波カッコ閉じ}」と表示。
#-----------------------------------------------------------

 「カッコ」「波カッコ」はこれでいけるのだから、従来どうりの記述でいいハズだと思うんだけど・・・よくわからん~。

 てゆうか、undefinedってなんすか・・・「定義されていない」・・・・・・むむむ~?

 定数として定義されてないって意味なんでしょうか(?_?)

 二重カギ括弧がふつーに使えるようになっていたから、取りあえずそれにしといたけどねーw(いいのか?!)


 して「反復」の時には、「回数」のカウンター機能が働かなくなったんですかね?

 またまた「undefined」が発生~。

 ところが、「」の時には従来どおりっぽい。

#---------------------------
Aは[1,2,3]
Aを反復
  回数言う
  対象表示
ここまで
#---------------------------
3
  回数言う
  「ワン」と表示ここまで
#---------------------------

 まあ、自分でカウンターせばいいだけなんだけど・・・

 ・・・ここで結構はまったんだよ(>_<)


 して、何よりの最大のナゾは・・・

 直前で、「開始語から先頭語取得」している「末尾語」が、「シリトリ」関数の中で参照できないこと。

 これは、いまだにナゾが解明してません(ToT)

#なでしこ3でしりとり2
#-----------------------------------------------------------
除去音=「ー-~・‥….。,、?!」。
変換音=「がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょゎっをゐゑ」
変換後=「かきくけこさしすせたちつてとはひふへほはひふへほあいうえおやゆよわつおいえ」
#-----------------------------------------------------------
●先頭語取得(Sから)
  先頭語はSの1だけ文字左部分の変換音変換。
ここまで

●末尾語取得(Sから)
  S=Sから除去音除去。
  末尾語はSの1だけ文字右部分の変換音変換。
ここまで
#-----------------------------------------------------------
●除去音除去(Sから)
  除去音を文字列分解反復
    S=Sの対象置換。
  ここまで
  Sで戻るここまで

●変換音変換(Sの)
  回数=0
  変換文字=変換後を文字列分解。
  変換音を文字列分解反復
    もし、S=対象ならば、S=変換文字@回数
    回数回数+1
  ここまで
  Sで戻るここまで
#-----------------------------------------------------------

#-----テスト------------------------------------------------
ルール=「【ルール説明】
・小さい文字(拗促音)は大きくするよ(カボチャ→やさい)
・濁音半濁音は清音と同様に繋げられるよ(りんご→こまつな)
・長音は無視できるよ(チーター→たぬき)」
ルールと言う。
ルールと表示。

開始語=「なでしこ」
先頭語=。
末尾語=開始語から先頭語取得。

開始語でシリトリする。

●シリトリ(Sで)
  先頭語はSから先頭語取得。
  もし、先頭語=末尾語でなければ、
    「負け!」と言う終わる。
  ここまで。
  末尾語はSから末尾語取得。
  もし、末尾語=「ん」ならば、
    「負け!」と言う終わる。
  ここまで。
  ダイアログIME=「IMEオン」
  「『{S}』{改行}{改行}全角ひらがなで続く単語を入力してね。」と尋ねる。
  もしそれでなければ、
    それでシリトリする。
  違えば、
    「負け!」と言う終わる。
  ここまで。
ここまで
#-----------------------------------------------------------

 シリトリ関数内では末尾語が「undefined」になってしまっているため、実行するといきなり「負け!」と言われてしまいます(´д`;

 シリトリ関数自体は、冒頭のものとほとんど変わってないですよ?

 「先頭語取得」関数の方が良くないのかと思いきや、先頭語取得せず、最初のと同様に「末尾語=開始語の1だけ文字左部分」としてもダメ、さらには、末尾語=「な」などとしてもやっぱりダメなんですからね。

 むむむむむ~(@_@)

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170706