ノベルゲームは、文字がかたかたかたかたと出てくる小説を読むという要素の強いゲームです。
C#でもノベルゲームのような表示アニメを実現することができます。
ノベルゲーム編
文字を表示する
ノベルゲームといえば、文字が1文字づつ表示されるスタイルが多いです。
Visual Studioではタイマー機能とラベルを使ってこのようなインタフェースを表示できます。
パーツの配置
試しに
- Button(ボタン)
- PictureBox(画像)
- Label(ラベル)
- Timer(タイマー)
を配置します。
サンプルプログラムでは、ボタンを押すと、文字が1文字づつ画像のうえに表示されるようにします。
文字はラベルを使用します。ラベルを使うのは、テキストボックスと違って文字背景が透明に抜けるという利点があるためです。
ラベルはFontで文字サイズを、ForeColorで色をあらかじめ指定しておきましょう。
プログラム
最初に文字の変数を用意します。
文字が表示し終わったかどうかの変数と、表示する文字、字数を計算するための変数を用意します。
bool isEnd = false;
int ct = 0;
String str = "ここは恐怖の館であった";
次にボタンを押すとTimer1が動作し始めるようにします。
Timerとは一定時間おきに処理が行うためのパーツです。
また、「pictureBox1.Controls.Add(label1);」のようにピクチャーボックスにラベルを追加しておくと、ラベルの親がピクチャーボックスとなって背景がきれいにぬけるようになります。
private void button1_Click_1(object sender, EventArgs e)
{
pictureBox1.Controls.Add(label1);
timer1.Enabled = true;
}
タイマーが実行されるときの処理は、TimerのTickというイベントのところに記述します。Time1のプロパティで「稲妻」アイコンから「Tick」をダブルクリックするとプログラム画面となります。
プログラムは終了(isEnd)フラグがったら抜けるようになります。
終了フラグが立っていない場合は、カウンタ(ct)を1つ進めます。
private void timer1_Tick(object sender, EventArgs e)
{
if (isEnd) return;
ct++;
if(ct >= str.Length)
{
isEnd = true;
return;
}
label1.Text = str.Substring(0, ct);
}
これで実行し、ボタンを押すと文字が1文字づつ表示されるようになります。
改行を入れる
このままだと改行ができません。
改行を使うには文字のデータに「\n」という記号を入れます。半角英数字で¥マークにつづけてnという英字を入れます。
String str = "ここは\n恐怖の館であった";
これで実行すると、以下のように改行されて出力できました。
C#でのゲーム作りは以下参照ください。