ゲーム開発演習:フォームの表示と設定
解説:フォームプログラミング
・グラフィックス、サウンドと、マウスなどのポインティングディバイスを用いるプログラムをC#で開発するには、
フォームアプリケーションのプロジェクトを用いると良い
・Unityなどの専用ツールを用いる場合に比べて自由度が高くなる(ただし記述量や求められる知識は増える)
・よって、将来いろいろな開発ツールを利用できるようになるための、基礎力をつけることに向いている
・プロジェクトの作成方法
①「新しいプロジェクトの作成」
②「C#」「Windowsフォームアプリケーション(.NET Framework)」「次へ」
③ 適当なプロジェクト名、場所(USBメモリ推奨)などを指定して「作成」
④ フォームデザインが表示されるが、プログラム側で設定・制御するので、閉じてOK
⑤ 代わりに「Program.cs」を開くと、フォームアプリケーションのスケルトンが表示され、利用可能になる
⑥ このソースは冗長なので、下記のようにシンプルにできる
using System;
using System.Windows.Forms;
class Program {
static void Main() {
Application.Run(new Form());
}
}
⑦「デバッグなしで開始」で実行でき、コンソールではなくフォームが表示される
⑧ 確認したらフォームの右上の「×」で必ず閉じる(開けたまま再実行するとエラーになる)
演習0 フォームアプリケーションの実行確認:作成例
//演習0 フォームアプリケーションの実行確認
using System; //C#標準クラス用
using System.Windows.Forms; //C#が提供するApplication、Formクラス用
class Program {
static void Main() { //実行用メソッド(publicはなくてOK)
Application.Run(new Form()); //C#が提供するFormクラスのインスタンスを生成し実行
}
}
テーマ1 フォームサイズの指定
・フォームの大きさは、FormクラスのインスタンスプロパティWidthに幅のドット数、Heightに高さのドット数を与えることで設定できる ・インスタンスプロパティを用いるには、あらかじめ、Formクラスのインスタンスを生成しておくと良い ・この時、指定したインスタンス名(参照変数)を用いて、インスタンスプロパティを利用できる ・そして、指定したインスタンス名をApplication.Runに渡すようにしよう 例: Form インスタンス名 = new Form(); インスタンス名.Width = 幅のドット数 インスタンス名.Height = 高さのドット数 Application.Run(インスタンス名);
演習1 フォームサイズの指定
・フォームの幅を640、高さを480にしよう
作成例
//演習1 フォームサイズの指定
using System; //C#標準クラス用
using System.Windows.Forms; //C#が提供するApplication、Formクラス用
class Program {
static void Main() { //実行用メソッド(publicはなくてOK)
Form f = new Form(); //Formクラスのインスタンスを生成
f.Width = 640; //インスタンスプロパティで幅を設定
f.Height = 480; //インスタンスプロパティで高さを設定
Application.Run(f); //生成済のインスタンスを実行
}
}
テーマ2 フォームサイズの一括指定
・フォームの幅(Width)と高さ(Height)は、まとめて大きさ(Size)として扱うことができる ・FormクラスのインスタンスプロパティSizeに、System.Drawing.Sizeクラスのオブジェクトを与えることで一括指定が可能 ・Sizeクラスの利用には「using System.Drawing;」を指定すると良い ・Sizeクラスのオブジェクトに幅と高さを与えるには、Sizeクラスのコストラクタ(int 幅, int 高さ)を用いると良い 例: Form インスタンス名① = new Form(); Size インスタンス名② = new Size(幅のドット数, 高さのドット数); インスタンス名①.Size = インスタンス名②; Application.Run(インスタンス名①);
演習2 フォームサイズの一括指定
・Sizeクラスのオブジェクトを用いて、フォームの幅を640、高さを480にしよう
作成例
//演習2 フォームサイズの一括指定
using System; //C#標準クラス用
using System.Windows.Forms; //C#が提供するApplication、Formクラス用
using System.Drawing; //Sizeクラス用
class Program {
static void Main() { //実行用メソッド(publicはなくてOK)
Form f = new Form(); //Formクラスのインスタンスを生成
Size s = new Size(640, 480); //幅と高さの大きさのSizeインスタンスを生成
f.Size = s; //インスタンスプロパティで大きさを設定
Application.Run(f); //生成済のインスタンスを実行
}
}
テーマ3 フォーム名の指定
・フォーム名はFormクラスのインスタンスプロパティTextに文字列を代入することで設定できる ・フォーム名はWindowsからみたアプリケーション名になるので、予め設定しておくと良い
演習3 フォーム名の指定
・フォーム名を「Game」にしよう
作成例
//演習3 フォーム名の指定
using System; //C#標準クラス用
using System.Windows.Forms; //C#が提供するApplication、Formクラス用
using System.Drawing; //Sizeクラス用
class Program {
static void Main() { //実行用メソッド(publicはなくてOK)
Form f = new Form(); //Formクラスのインスタンスを生成
f.Text = "Game"; //Form名を設定
Size s = new Size(640, 480); //幅と高さの大きさのSizeインスタンスを生成
f.Size = s; //インスタンスプロパティで大きさを設定
Application.Run(f); //生成済のインスタンスを実行
}
}
補足:Formクラスについて
・APIリファレンスで仕様を確認しよう https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.form ・Formクラスのコンストラクタはデフォルトしかなく、引数を指定できるコンストラクタはない ・プロパティが大量にあり、Height、Size、Text、Widthが含まれている
テーマ4 フォームの初期位置の指定
・FormクラスのインスタンスプロパティStartPositionに「手動設定」を設定すると、初期位置を指定できる ・手動設定には、System.Windows.Forms.FormStartPosition列挙体のManual列挙子を用いると良い ・すると、FormクラスのインスタンスプロパティLocationに、初期位置の座標を指定できる ・座標指定には、System.Drawing.Pointクラスのコストラクタ(int X座標 int Y座標)を用いると良い 例: Form インスタンス名① = new Form(); インスタンス名①.StartPosition = FormStartPosition.Manual; Pointインスタンス名② = new Point(X座標, Y座標); インスタンス名①.Location = ②;
演習4 フォームの初期位置の指定
・フォームの初期位置を(300, 0)にしよう
提出:演習4 フォームの初期位置の指定