lang
1scn_array =[] 2chapter_array =[] 3# シナリオテキストを配列に格納 4File.open("scenario.txt", "r") do |file| 5 file.each do |line| 6 scn_array << line 7 end 8end 9 10# 章分けマーク「■」で配列を分ける(2次元配列) 11chapter_array = scn_array.slice_before(/^■/).to_a
シナリオ全文を1つのテキストファイル(scenario.txt)にまとめています。
これを改行記号ごとに区切りをつけ、一つの配列「scn_array」に格納しました。
一方、テキストファイルは行頭に「■第1章」、「■第2章」のように「■」をつけており、
これを区切りとして、章別の配列を作ろうとしているのですが、うまくいきません。
上記コードでは「.slice_before(/^■/).to_a」メソッドを用いて、「scn_array」を
2次元配列「chapter_array」に格納した後、どうにか
event_array1 = chapter_array[0]
event_array2 = chapter_array[1]...
というように配列を章別に分割したいのですが……。
うまいやり方をご教示いただきたく思います。
(上記のようにevent_array+"number"をすれば可能といえば可能ですが)
3/3追記
すいません。コード書くので手一杯で肝心の質問内容が不明確でした。
目的は一定の書式で書かれたテキストファイルをノベルゲーム用の
ミドルウェアで読み込める形式に変換することです。
ゲーム形式は全画面にテキストではなく、画面したにメッセージウィンドウが表示されるタイプです。
テキストファイルは
・ファイル名は「tarou.txt」のように「キャラ名.txt」で、
ファイルの中身は下記のような書式で書いています。
lang
1//太郎シナリオ 2■ルートA(HappyRoute) 3◎イベント1(A-1) 4//背景:公園 5//音楽:曲目1 6 7◆太郎 8あいうえおかきくけこ 9さしすせそたちつてと 10 11◆花子 12いろはにほへと、ちり 13 14●場面転換 15//背景:町 16//音楽:曲目2 17 18◆次郎 19はろー 20 21◆三郎 22ちゃお 23 24◎イベント2 25(以下略) 26 27 28■ルートB(NormalRoute) 29◎イベント1(B-1) 30(以下略)
これをrubyのプログラムを通して
・TARO-HAP-EVE1.mid
・TARO-HAP-EVE2.mid
(中略)
・TARO-BAD-EVE4.mid
(以下、次郎、三郎シナリオテキスト加工へ)
とファイルを分割した上で、個々のファイルを
lang
1 2 3[EVENT_START] # 開始処理 4BG:PARK.png 5BGM:MUSIC1.mp3 6 7message_window_open 8talk(TARO_WARAI, RIGHT) 9>太郎 # > は台詞の始まり 10あいうえおかきくけこ 11さしすせそたちつてと★ # ★で改ページ 12 13talk(HANAKO_IKARI, LEFT) 14>花子 15いろはにほへと、ちり★ 16 17[SCENE_CHANGE] # 画面をブラックアウトなど場面転換処理 18BG:TOWN 19BGM:MUSIC2.mp3 20[SCENE_CHANGE_END] 21 22talk(JIRO_JOY, RIGHT) 23>次郎 24はろー★ 25 26talk(SABURO_CRY, LEFT) 27>三郎 28ちゃお★ 29 30[EVENT_END] # 終了処理 31
のように加工し、出力しようと思っています。
現在やっていることは
・シナリオ入力フォルダからテキストファイルのリストを受け取る
・「キャラ名.txt」を個別に加工する
・シナリオ出力フォルダに出力する
というような感じです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。