質問: "いました" } } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } ```
回答: > > いちいちラベルが大量に必要になっていきます。もっと簡単な方法 > > > ノベルゲームはシナリオが大量にあるので、 「**DSL**」(**ドメイン特化言語**)がとくに有効なジャンルです。 DSLというのは、たとえば**HTML**もそのひとつです。もしもHTMLがなかったら、 プログラムの中に文章を書くことになり、複雑化しますね (まあPHPだと書けちゃうんですが、元々PHPはテンプレートエンジンに近いです)。 そこで、JavaScriptやサーバ側の言語(PHPやRubyなど)とHTMLを分けることで、 **プログラムとデータを分離**して、整理できる仕組みになってますよね。 > > 文章全体をじわっと表示したり、文章の初めから1文字ずつ表示していくようなやり方 > > > できますが、その他にもやりたいことが色々出てくるはずです。セーブ/ロードとか。 具体的にDSLをどう設計するかは、既存の**ノベルゲームエンジン**を調べるのが早いです。 たとえば「**吉里吉里**」は、PC用になってしまいますが、よく設計されたアーキテクチャです。 「吉里吉里/TJS/KAG」の三層が「実行環境/汎用言語/DSL」の三層になってます。 最近のスマホ対応ノベルゲームエンジンの「ティラノスクリプト」なども、 吉里吉里(KAG)と互換性があるので、仕組みくらい覚えても損はないです。 また、DSLの本も、ノベルゲームエンジンの本もありますので、検索してみてください。 DSL化すると設計や実装の難易度は上がりますが、一本道でいちいちif文を書かずに済むし、 1文字ずつ表示などの、多様な文字表示もできるようになると思います。