パスワードを忘れた? アカウント作成
14269519 journal
日記

yumeの日記: C#学習 8 Console Adventure 1

日記 by yume

コメントありがとうございます。

--

これまで、主に++C++;Microsoft Learnで学習を進めているが、同時進行としてC#とVisual Studioを使った、形になる何かを作ることに挑戦したい。

とはいえ、C#の学習もまだまだ進んでいない状態であるので、
・なるべく、これまでに覚えたことを中心に使って
・制作に時間のかかる要素(アートや音)は使わず
・それでいてちゃんと遊べるゲーム(面白いかはさておき)
を作ろうと思う。

となると、実現できそうなアイデアは、さしあたっては、
「コンソールとテキストだけのアドベンチャーゲーム」のようなものがよいだろう。
幸い、肝心のシナリオはTRPGのシナリオ集を執筆するにあたって何本かストックがあるので、テキストはこれをベースに作ればよい。音も絵もいらないので、プログラムだけに専念できる。

最低限の要素は、次のようなものだろう
・シナリオのテキストをコンソール上で読む。
・選択肢と分岐がある。
・分岐によって、異なる結末が読める。

Zorkのようなアドベンチャーらしい要素を追加するなら、能力値や、アイテム(フラグ)のような概念も必要かもしれない。しかし物事には順序があるのだから、まずは最低限のものだけでできた、最小のゲームを目標にする。

今日できたコードは次のようなものである。


using System;
using Console_Adventure.Properties;

namespace Console_Adventure
{
        class ReadText
        {
                static void Main()
                {
                        string txt = Resources.saruto_samurai;
                        string[] bodyText = txt.Split("\r\n");
                        string jumpStart = "[jump start]";
                        string jumpEnd = "[jump end]";

                        for (int i = 0; i < bodyText.Length; i++)
                        {
                                if (bodyText[i] == jumpStart)
                                {
                                        i++;
                                        while (bodyText[i] != jumpEnd)
                                        {
                                                Console.WriteLine(bodyText[i]);
                                                i++;
                                        }
                                }
                                else
                                {
                                        Console.WriteLine(bodyText[i]);
                                        Console.ReadKey();
                                }
                        }
                        Console.ReadKey();
                }
        }
}

リソースファイルとして\txt ディレクトリに置いたtxtファイルを読み込み、キーを押すたびに1行(改行コードまで)を出力する。プレイヤーは、キーを押すたびに新たなテキストを読み進めることができる。
>入力が必要、というだけで案外ゲームっぽくなるものだなぁ。

さらに、[jump start]と[jump end]という命令文の文字列をテキスト内に書き込み、そこで区切られた領域は(改行コードが含まれていたとしても)一度のキー入力で表示されるようになっている。

なお、現時点では、青空文庫より引用した新美南吉の「サルト サムライ」のテキストが入っている。

次の目標は
・複数のテキストファイルを保存しておき、任意のテキストに飛べるようにする。
・テキスト内に書き込める形で、「選択肢を選ぶ」という命令文を作る。
・ユーザーが何らかの入力をすることで、選択肢を選ぶ。
・選択肢に応じて、異なるテキストを読み上げる。
・(できれば)タイトル画面やエンディングのようなもの。
・(できれば)読み終わったテキストを消去するなど、見栄えをよくしていく。
あたりだろうか。

--

これらの成果物はOSDNにプロジェクトページを用意し、Git(Sourcetree)を使ってバージョン管理している。OSDNも今回初めて使ったので、正しい使い方ができていないかもしれないが、おいおい勉強していきたい。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...