yumeの日記: C#学習 8 Console Adventure 1
コメントありがとうございます。
--
これまで、主に++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も今回初めて使ったので、正しい使い方ができていないかもしれないが、おいおい勉強していきたい。
飛び先は文章に従ってユーザー自身に入れさせよう (スコア:0)
「14へ行け。」か。1 4 エンター っと