困ったー

WIN10・アプリ・ゲームで困ったことを調べてみた

「こまったー」は困ったことを調べたブログです。

オキュラスクエスト2 |  ARK |  フォートナイト |  マイクラ |  サティスファクトリー | 

スポンサーリンク


【C#でゲーム作り】実践編(3):ノベルゲームのような文字表示

◆Paypayならチャージだけでマイナポイント最大5000円還元( アイフォン(iOS) | アンドロイド)

ノベルゲームは、文字がかたかたかたかたと出てくる小説を読むという要素の強いゲームです。

C#でもノベルゲームのような表示アニメを実現することができます。

ノベルゲーム編

文字を表示する

ノベルゲームといえば、文字が1文字づつ表示されるスタイルが多いです。

Visual Studioではタイマー機能とラベルを使ってこのようなインタフェースを表示できます。

 

パーツの配置

試しに

  • Button(ボタン)
  • PictureBox(画像)
  • Label(ラベル)
  • Timer(タイマー)

を配置します。

f:id:apicode:20200818152218p:plain

 

サンプルプログラムでは、ボタンを押すと、文字が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」をダブルクリックするとプログラム画面となります。

f:id:apicode:20200818152735p:plain

 

 

プログラムは終了(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文字づつ表示されるようになります。 

f:id:apicode:20200818153954p:plain

 

改行を入れる

このままだと改行ができません。

 

改行を使うには文字のデータに「\n」という記号を入れます。半角英数字で¥マークにつづけてnという英字を入れます。

String str = "ここは\n恐怖の館であった";

 

これで実行すると、以下のように改行されて出力できました。

f:id:apicode:20200818154132p:plain

 

 

 

[C#でゲーム作り初心者講座]

  1. C#でゲーム作り 初心者講座
  2. 【C#でゲーム作り】基礎編:サウンドを鳴らす
  3. 【C#でゲーム作り】実践編(1):占いゲーム作りで肩慣らし
  4. 【C#でゲーム作り】実践編(2):じゃんけんゲーム作り
  5. 【C#でゲーム作り】実践編(3):ノベルゲームのような文字表示

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

利用規約・プライバシーポリシー |〇問い合わせ