不定期俺日記ver.2

何というか適当に。



『昨今どうよ』

follow me on Twitter

  • --年--月--日スポンサーサイト

  • 上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

  • 2006年03月23日そういうわけで

  • 一気に変数の話をやってみんとす。

    んでまあ、変数いうたら何かと言いますと、「プログラム上における代数」のことと荒っぽく考えてOKなのかなどーかな的な。
    たとえば、

    a=1

    ってやつですよ奥さん。この場合、「aに1を入れる」わけで。
    この場合、プログラム的に、

    print a

    ってやったら(全角ではやらんけどな)、出る答えは1ですな。
    変数っていうのは、まあ、代数を使ってそのようにいろいろと、
    「仕込む」
    ためのものだと御理解プリーズ。
    --------------------------
    でまあ、FM3の変数が主に何に使用されるかと言いますと、
    「条件式」
    です。

    この条件式というのは何かというと、
    「もし、変数~(1)の数値が~(2)であるなら、~(3)をしろ」
    という式のこと。
    FM3では、変数と条件式において、

    ・変数定義(つまり変数の個数を増やす)
    ・条件式における変数~(1)の指定
     :定義した変数に限る
    ・変数~(1)の数値変更
     :変数~(1)に~を代入する
     :変数~(1)に~を足す
     :変数~(1)から~を引く
     :変数~(1)に~を掛ける。
     :変数~(1)を~で割る
     :変数~(1)を~で割った余りにする
     :変数~(1)を指定範囲の数値でランダムに代入する
    ・条件式における数値~(2)の範囲指定
     :変数~(1)の値が~(2)に等しい
     :変数~(1)の値が~(2)以上
     :変数~(1)の値が~(2)以下
     :変数~(1)の値が~(2a)以上で~(2b)以下
    ・条件式における~(3)
     :ページの移動
     :オブジェクトの表示等々……。

    ということが可能、と。
    今、学校でどのくらいのレベルのPC授業受けてるかはあまり解らないのですが、これ、「if then」としてbasicでもcでも使いますやね。
    なお、条件式は複数置くことが可能なので、
    実質上は、else部分を書くことが出来ますし、面倒さえ感じなければswitchと同様のことも可能です。全部選択指定するので、switch文の代わりはえれえ面倒ですが。

    ※余談
    else文は、「それ以外だったら~をする」という文。
    つまりこれがあると「もし、変数~(1)の数値が~(2)であるなら、~(3)をしろ。”それ以外だったら~をする”」という文を作れます。
    FM3ではこれがないので、同じことをねらう場合は、条件式を二つ並べて、
    「もし、変数~(1)の数値が~(2)であるなら、~(3)をしろ」
    「もし、変数~(1)の数値が~(2)でないなら、~(4)をしろ」
    とすることになります。
    なお、
    「~(2)でないならば何もしない」
    ならば、else構文はいりません。

    でまあ、この条件式があると何が出来るかと言えば、初期段階で作った、
    「メタ会話」
    のようなものが作れるわけです。
    あれ、
    十個の表情ごとに、
    「ボタン二つによる十表情の変化確率=二十式」
    持っており、つまり表情ごとにこの条件式が二十個並んでます。
    合計で二百の条件式が並んでいて、他にもいろいろやっておりますが、(たとえばリザルトのマーク表示も”もし否定した回数が~以上なら、ここにこのマークを表示”とやってるので、あのシーンだけで45の条件式)流石に数が多くなってくると、選択式ではなくスクリプト打ち込みでペーストしたくなりますな。
    つーかswitchって偉大でしたわ……。

    まあ、使い方によっては結構いろいろ出来るのです。

    たとえば、
    「変数”天候”に、ランダムで1~100を代入する」

    「もし変数”天候”が1~20だったら、雨のページに移動」
    「もし変数”天候”が21~50だったら、曇天のページに移動」
    「もし変数”天候”が51~100だったら、晴れのページに移動」
    ってやったら、もうこれ朝の挨拶準備が完了ですだよ。
    昨日の天候の影響を与えたいなら、
    「変数”天候”に、ランダムで1~100を代入する」

    「もし変数”昨日の天候”が1~20だったら”天候”を-20する」
    「もし変数”昨日の天候”が31~50だったら”天候”を-10する」
    「もし変数”昨日の天候”が51~100だったら”天候”を+10する」

    「もし変数”天候”が1~20だったら、雨のページに移動」
    「もし変数”天候”が21~50だったら、曇天のページに移動」
    「もし変数”天候”が51~100だったら、晴れのページに移動」
    とかね。
    これ大雑把なものですが。

    他にも、ドアの絵に対して、
    「鍵を取得しているなら変数”鍵”を1にする」

    「もし変数”鍵”が1なら、ドアをクリックしたとき次ページに移動する」
    とか。

    この、変数と条件式が使えるというのは、結構大きなことだったりします。
    少なくとも静的なプログラムはかなりまかなえるかと。
    ----------------------------
    んじゃ、前回のflashを改造するつもりで、変数と条件式をこっちも使ってみます。

    前回の流れはこうでした。
    ■「流れ」
    1:ページ1、赤巫女出現

    2:赤巫女をクリック→N→停止のままクリック待ち



    3:ページ2、黒巫女出現

    4:黒巫女をクリック→N→停止のままクリック待ち



    1に戻る

    これ、延々とループしますが、終わりがほしいですな。
    だから、
    「幾度かループしたら、二人が一つの画面にそろって終了」
    としたい、と。

    んで、条件式を考えますが、これはつまり、
    ・「ループ回数が一定になったら、終わりのページに飛べばいい」
    ということです。
    しかし、前回のflashはクリックで画面変更で、
     赤巫女→黒巫女
    の順番があります。
    ループが成立するのは、黒巫女を見て赤巫女に戻ったときです。
    ここで周回数をカウントすればいい。
    変数的に言うと、
    「変数”ループ数”は、赤巫女のページに来たとき+1される」
    もしくは、
    「変数”ループ数”は、黒巫女のページが終了したとき+1される」
    という、どちらかなわけですな。
    ここでは前者を選びます。
    (※何故前者かというと、周回数が成立し、黒巫女ページから最終ページに移る際も1カウントしてしまい、周回数が余分に増えてしまうからです。もし今後、最終ページ以降を作る場合があったならば、それは混乱すると考えました。ただ、赤巫女ページをカウントページにした場合は”1カウントしれからその周回が始まる”ことに注意です)
    そしてこれは、黒巫女を見ることががループの転換タイミングにあたるということでもあります。
    だから条件式は、
    ・「ループ回数が一定になった後に黒巫女ページで黒巫女をクリックしたら、終わりのページに飛べばいい」
    ということです。

    流れ的に書きますと、

    1:ページ1、赤巫女出現
     :周回用変数を+1

    2:赤巫女をクリック→N→停止のままクリック待ち



    3:ページ2、黒巫女出現

    4:黒巫女をクリック→N→停止のままクリック待ち



    5:「もし周回用変数が~ならばページ3に移動」→N→1に戻る



    6:ページ3、赤巫女、黒巫女出現
     :終了


    ということですな。
    だからやってみる。
    -------------------------
    まあまずは3ページ目の作成です。
    「条件式が先じゃないの?」
    って話もあるんですが、ページを指定することがあるので、条件式などでリンクを作るより、先にページを作っておいた方が齟齬がない、と。
    ken37.jpg
    んでまあ、このときに赤巫女と黒巫女を置きますが、メインウインドウ下の「使用中の画像」をクリックして、現在までに使用している画像一覧を出す、と。
    ken38.jpg
    これで、毎度素材フォルダから投げ込まないですみます。

    ken39.jpg
    3ページ目の最終的な配置はこんな感じ。左右から入ってくるアニメーションで。
    ページのストップも忘れないようにします。(つーか忘れた)

    そしたらまず、周回用変数のカウントから入ります。
    1ページ目を開き、
    ken43.jpg
    ページのプロパティを開き、左下の”ページ開始時に変数をセット”を選択。

    変数は最初から、プリセットとして変数1~6まで定義されてます。(好きに使えるし、名前も変えられる)
    ここでは面倒なので名前を変えず(いいんかそれで)、変数1を周回カウント用変数とします。
    ken44.jpg
    「変数1に、1を足す」
    と選択。
    これで、
    「ページ1に来たとき、変数1は+1される」
    という変数操作が行われるようになりました。

    こんな感じで、そのページやそのオブジェクトで使用している変数操作や、条件式はそれぞれ確認できます。
    ken45.jpg

    続いて黒巫女です。
    2ページ目を開き、
    ・「ループ回数が一定になった後に黒巫女ページで黒巫女をクリックしたら、終わりのページに飛べばいい」
    これ↑を考えるわけですが、
    「クリックしたら条件式発動」
    なので、黒巫女クリック時のリンク判定に条件式を与えることにします。
    黒巫女を右クリックして”リンクの設定”を選び、
    ken46.jpg
    ”変数の値で移動”を選択、と。

    ken47.jpg
    だいたい何やるかが解ったと思います。
    「三周していたならば、黒巫女をクリックしたら最終ページに飛ぶ」
    というわけです。

    なお、黒巫女のリンク条件式は、これだけではいけません。
    「三周していたならば」
    の、”これ以外”が設定されてないからです。
    このままだと、
    「三周していない場合、ページはストップする」
    ようになります。
    だから条件式を重ねます。

    「三周してないとき、黒巫女をクリックしたら、ページ1に移動」

    というやつですな。
    ken48.jpg

    条件式をが二つ重ねたので、黒巫女のリンク条件式はこうなります。
    ken49.jpg
    これ、他にも条件式の組み方はいろいろあると思います。
    カウントは+1ずつしかされないので、
    「周回数が3に等しいなら」
    でもいいのですというかそれが綺麗。
    ”以上””以下”を振るのは、
    「今後、もしも”+1”以外のカウントがある場合」
    を想定したもので。これは自分の昔からのプログラム的用心です。
    ”以上”と”以下”ならば、”等しい”を超えても対応できるので。

    んじゃまあ、ここでswfファイルを吐きだしてみましょう。
    http://ramiltass.homeip.net/www/upload/swf/ken007.html
    どんなもんでしょ。

    -------------------------
    んでまあ、これではちょっとまだ寂しい。
    完全に終わってしまいますし。
    だから、
    「また最初に戻れるようにする」
    というようにしたい、と。

    アイデアとしては、
    「最終ページの画面に”again?”などとテキストを出し、それを押すと1ページ目に戻る」
    というようにします。

    やることはといえば、最終ページの表示について以下を追加します。

    1:again?表示

    2:クリックされた?→N→入力待ち



    3:周回数を0にする。
     :1ページ目に飛ぶ

    というやつですな。

    で、文字の表示は、画面上の”オブジェクト”→”テキストの設定”を選びます。
    ken40.jpg

    んで、テキスト設定ウインドウにテキストを打ち込む。
    ken41.jpg
    まあいろいろありますが、あんまし気にしなくていいです。
    ただ一つ覚えておくべきは、
    「文字サイズの自動調整」
    のクセですな。
    一度文章を打ち込むと、その範囲をFM3は覚えます。
    そして文字サイズの自動調整がチェック入っていると、
    「そのテキストを打ち直したとき、覚えた範囲内に納めてしまう」
    ということをします。
    どういうことかというと、
    「一文字を大きく書いた」
    場合、その一文字をやはり長文にしようとすれば、
    「同じ面積に長文を押し込む」
    ことになります。
    何かねらいがあるのではない限り、同じテキストオブジェクトの文を書き直すなら文字サイズの自動調整は切っておいた方が無難です。

    んで、文字は絵と同じオブジェクトなので、リンクもアニメも付与できます。ここではやりませんが、条件式だって付与出来ます。
    ken42.jpg
    ken50.jpg
    こんな感じですな。

    なお、
    ・ページのプロパティで”ストップ”。
    ・ページのプロパティで、ページ終了時に変数1を0にする。
    というのを忘れずに。

    と、これでとりあえず完成。
    http://ramiltass.homeip.net/www/upload/swf/ken008.html
    こんなところですな。

    条件式は言葉のパズルのようなものです。覚えておくといろいろ出来るようになります。
    そして、テキストは、リンクや条件式など使える素材だと解れば、簡易なノベル系が出来るようになると思います(セーブデータの吐き出しが出来ないので、ゲームとしての実用化はアレですが)。
    いろいろ、アイデア次第でどうにかなるんではないかなあ、と。

    今後、FM3では自分的コツとか思いついたらアップしていこうと思います。
    つーか、ホームページビルダーとの同梱版もあるんですな……。
    意外と使ってる人おおいのかしらん。
    個人的には、
    「flashってどんなの? まず、ちょっと触れてみたい」
    って人にはスゲーいいツールだと思います。
    flash8などに移行する際も、
    「もっとも使うアニメーションを、flash8でスクリプトを組むことで、flash8の技術習得と移行を済ませる」
    ということが出来ますし。
    とにかく、あのアイコンによるアニメ設定はMT車に対するATなところもあるかと思うのですが、
    「完成を、やる前から大きく想像できる」
    という意味で強いよなあ、と。
    そうやってパターニングを覚えた上で、他の上級ソフトに移行すれば、頭の中でやりたいことが大体見えているので、
    「何をしていいか解らなくなる」
    ということもなくなるんでは、と。
    そんな感じのツールだと自分的には思いました。
    ううむ。

    ともあれここまで読まれた方、おつきあいくださってありがとうございます。
    んじゃ、明日からまた通常でー。

     | HOME | 

    適当に

    最近どうよ?

    自画像

    川 上 ですよ

    川 上 ですよ



















    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。