kagamihogeの日記

kagamihogeの日記です。

あたし状態遷移図を 10 分くらいでゴリ押し実装

ネタ元:「あたし状態遷移図」、あるいは「あたし約5.2MB」 - とある理系男子の書斎には、どうしても小説が少ない。っていうか無い。 - ファック文芸部

実行の様子


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="complete()">
    <mx:Script>
        <![CDATA[
            private var gen:AtakanoGenerator = new AtakanoGenerator();
            
            private function complete():void {
                gen.setElement("みたいな","彼氏は","付き合って五ヶ月");
                gen.setElement("彼氏は","普通");
                gen.setElement("普通","てか");
                gen.setElement("付き合って五ヶ月","彼氏の名前");
                gen.setElement("彼氏の名前","トモ");
                gen.setElement("トモ","歳?");
                gen.setElement("歳?","23","31歳");
                gen.setElement("23","まぁ今年で24");
                gen.setElement("まぁ今年で24","彼氏?");
                gen.setElement("彼氏?","まぁ");
                gen.setElement("まぁ","当たり前に");
                gen.setElement("当たり前に","いる");
                gen.setElement("いる","てか");
                gen.setElement("てか","いない訳ないじゃん","アタシが付き合って");
                gen.setElement("アタシが付き合って","あげてる");
                gen.setElement("あげてる","みたいな");
                gen.setElement("いない訳ないじゃん","みたいな");
                gen.setElement("31歳","多分");
                gen.setElement("多分","顔?");
                gen.setElement("顔?","まぁ普通");
                gen.setElement("まぁ普通","アタシが","人より目はデカイかな?");
                gen.setElement("人より目はデカイかな?","まぁ普通");
                gen.setElement("アタシが","変な男と");
                gen.setElement("変な男と","付き合う訳ないし");
                gen.setElement("付き合う訳ないし","みたいな");
                gen.setElement("アタシ","アキ");
                gen.setElement("アキ","歳?");
                
                gen.setRoot("みたいな");
            }
            
            private function buttonClick(event:MouseEvent):void {
                t.text = "";
                var i:int = 0;
                for (i = 0; i<20; i++) {
                    t.text = t.text + gen.next() + "\n";
                }
            }
        ]]>
    </mx:Script>

    <mx:TextArea id="t" x="10" y="10" width="374" height="300"/>
    <mx:Button id="button" x="10" y="318" label="次" click="buttonClick(event)"/>
</mx:Application>
package
{
    public class AtakanoGenerator
    {
        private var map:Object = new Object();
        private var point:String = "";
        
        public function AtakanoGenerator()
        {
        }

        public function setElement(key:String, ... values):void {
            map[key] = values;
        }

        public function setRoot(key:String):void {
            point = key;
        }

        public function next():String {
            var ret:String = point;
            var arr:Array = map[point];
            var r:int = Math.random() * arr.length % arr.length;
            point = arr[r];
            return ret;
        }
    }
}

何の意味もないよねーwwwww

D