物語の体操にでてくるプロット作成法をruby+emacsで手軽に
物語の体操という本の中にプロット*1を作成する練習の仕方が書いてあるそうです。
(実際に読んだことはないです。><)
タロットっぽいカードをシャッフルしてから並び替えて行うみたいです。
順番にそれぞれ意味があってその意味とカードの内容とを対応づけていくみたいです。
(カードの向きが上向きか下向きかでも意味が違うそうです。)
詳しくはここで調べてください。><
でもわざわざ、実際のカードを並べ替えたりするのはめんどそう。
プログラムに作ってもらった方が楽なんじゃないかなーと思いました。*2
そんなわけで
$KOCE = 'utf8' # # ~/test/buf/prot.rb という名前で保存しています。 # class Array def shuffle self.each_index{ |i| j = rand(i+1); self[i], self[j] = self[j], self[i]} end end class A def initialize @seed = %w{意志 清楚 理性 秩序 知恵 誓約 善良 節度 至誠 生命 寛容 開放 調和 想像 信頼 公式 変化 結合 厳格 勇気 幸運 庇護 治癒 慈愛} @result = %w{ 主人公の現在 主人公の近い未来 主人公の過去 援助者 敵対者 結末} @attribute = %w{ + -} @width = @result.inject(0){ |n,e| len = e.length; n = len if n < len; n} end def add_attribute a a.zip((0...a.length).map{ @attribute.shuffle.first}) end def get seed = @seed.shuffle[0,6] seed = self.add_attribute(seed) return @result.zip(seed) end def output puts "==================" puts "意味: 内容(正逆)" puts "==================" #self.get.each{ |e| puts e.join(" : ")} get.each{ |e| puts("#{e[0]+" "*((@width - e[0].length)/3)} : #{e[1]} ")} end end a = A.new a.output # >> ================== # >> 意味: 内容(正逆) # >> ================== # >> 主人公の現在 : 至誠- # >> 主人公の近い未来 : 善良- # >> 主人公の過去 : 知恵+ # >> 援助者 : 清楚+ # >> 敵対者 : 想像- # >> 結末 : 誓約+
あと、emacsを使っているなら
.emacsに以下を追加すると
(global-set-key [f4] (lambda () (interactive) (insert (shell-command-to-string "ruby ~/test/buf/prot.rb"))))
「f4」を押すだけで、結果を自分が開いているバッファの上に出力することができます。
これを使えば
簡単にお話を作る練習ができるかもしれません。><