プログラミング初心者がC#で脱出ゲームを作ってみた その2【描画処理編】

2015/07/11

はじめに

どうも、こんにちは!koizumiです。

隠された暗号を探し部屋を脱出するゲームを制作しながら簡単な解説をします。

この記事をみてプログラミングを始めるもしくはゲームを作るきっかけになってもらえると嬉しいです。

今回は、前回作ったゲーム画面内にあるアイテムや部屋をクリックしたときの判定を利用してアイテムの描画処理をプログラムしていきます。

 

ピクチャボックスについて

  

描画処理のプログラムに入る前にピクチャボックスの説明をします。

Visual Studioでは.NET Framework クラスライブラリを使用していてます。

そしてピクチャボックスはそこで用意されているオブジェクトの一つです。

このオブジェクトには画像を挿入して画像のバックカラーを透明にする機能があります!

どういうことかというと、ピクチャボックスに挿入した画像を表示させながら

ピクチャボックスのバックカラーにフォームの画像を隠れることなく表示することができます。

例えばゲーム画面、机画像の上にドライバーのピクチャボックスを乗せて

バックカラーのプロパティをTransparentにするだけで

机の上にドライバーが乗っているようにみえますね。

ここでのバックカラーというのはピクチャボックス プロパティのことです。

 

Microsoft Developer Network

Visual Studio の機能は Microsoft Developer Network に詳しく書かれています。

Visual Studioを使っていてわからないことがあれば、ここを見てみるといいかもしれません。

 

アイテム判定

部屋の中にあるアイテムをクリックしたときに部屋から隠して、アイテム欄に表示するプログラムを作成します。

作ったアイテムはドライバーとメモ帳です。

ここではドライバーを例にします。

private void pictureBox20_Click(object sender, EventArgs e)
{
pictureBox20.Visible = false; //部屋内のドライバーを隠す
pictureBox15.Visible = true; //アイテム欄のドライバーを表示させる
}

Visibleではそのオブジェクトが存在するか存在しないかを設定していると思って構いません。

次にアイテムの機能をプログラムしていきます。

部屋にあるドアはデジタル暗証番号式ドアロックで、電力が供給されてないと使用できません。電力を供給できそうなスイッチをアイテムのドライバーで押すと、電力を供給するプログラムを作成します。

 private void pictureBox15_Click(object sender, EventArgs e)
        {
            if (pictureBox15.Enabled)
            {
                act2 = false;
            }
        }
 private void pictureBox21_Click(object sender, EventArgs e)
        {
            if (ana1)
            {
                if (act2 == false)
                {
                    if (MessageBox.Show("ドライバーを差し込みますか?", "", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                    {
                        act2 = true;
                        ana1 = false;
                        if (ana1 == false & ana2 == false & ana3 == false)
                        {
                            pictureBox24.BackColor = Color.Orange;
                            Power = true;
                        }
                    }
                }
                else
                {
                    MessageBox.Show("何の穴だろうか...");
                }
            }
            else
            {
                MessageBox.Show("何が起きるのだろう...");
            }
        }

Enabledは、そのオブジェクトが動作しているか、していないかを設定してると思って構いません。

MessageBox.Show()で、メッセージボックスを表示できます。MessageBoxButtons.YesNoで、YesとNoのボタンがメッセージボックス上に作られます。System.Windows.Forms.DialogResult.Yesは、メッセージボックス上Yesのボタンを押した時の結果を示します。

何をしているかというと、穴をドライバーでクリックした時にドライバーを差し込むか聞かれます。

そこでYesボタンを押した時に、ana1の判定がfalseになります。

すべての穴をクリックしてそれぞれの判定がfalseになったときに、ドア上のピクチャボックスをオレンジ色に変えて、Powerの判定をtrueになるようにしました。

終わりに

今回は主にアイテム仕様のプログラムをして、プログラム自体は難しくないのに文章が無駄に長くなってしまい見づらくなっている気がしました。これをどう改善するかを考えることも大事なのかもしれません。

ちなみに途中で使われているGIF動画ですが、Gyazoというソフトを用いて作りました。Gyazoでは自分でキャプチャする範囲を決めて録画することができます。しかし、録画できる時間が7秒と短いので忙しい動画になってしまいました^^;

次回は、デジタル暗証番号式ドアロックのプログラムをメインにする予定です。

閲覧していただき、ありがとうございました!

投稿者情報

koizumi

プログラミング初心者のkoizumiです。最近はC#を勉強しています。
趣味はスノーボード、ゲーム、一人旅です。この記事では主に自分が作ったものを紹介していく予定です。

>> koizumiが執筆した他の記事を読む

法人向け人気レンタルサーバー
法人向け人気専用サーバー
個人向け人気レンタルサーバー