講義メモ:ゲーム開発演習

ゲーム開発演習(2):フォームサイズの固定化とコントールボックスの非表示、背景画像の表示 など

演習4 フォームの初期位置の指定:再掲載

・フォームの初期位置を(300, 0)にしよう

作成例

//演習4 フォームの初期位置の指定
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; //インスタンスプロパティで大きさを設定
        f.StartPosition = FormStartPosition.Manual; //「手動設定」を設定
        Point p = new Point(300,0); //X座標とY座標のPointインスタンスを生成
        f.Location = p; //インスタンスプロパティで初期位置を設定
        Application.Run(f); //生成済のインスタンスを実行
    }
}

テーマ5 フォームサイズの固定化とコントロールボックスの非表示

・特に指定のないフォームはフォームサイズの変更や最大化が可能
・これは固定サイズで開発したいゲームプログラムの場合、弊害を起こすので、フォームサイズを固定化すると良い
・フォームサイズの固定化には、FormのインスタンスプロパティFormBorderStyleに、
 FormBorderStyle列挙体のFixedSingle列挙子などを代入すると良い
 → https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.formborderstyle
・フォームの最大化を防止するには、コントロールボックスを非表示にすると良い
・コントロールボックスを非表示にするには、FormのインスタンスプロパティControlBoxにfalseを代入すればOK
・ただし、フォームの閉じる「×」も非表示になるので、プログラム内にフォームのクローズ処理を記述していない場合は、
 タスクバーで右クリックし「ウィンドウを閉じる」を用いること
・そして、フォームサイズを固定化により、フォームの枠の大きさが変わるので、フォームの大きさの指定方法を変更する必要がある
・FixedSingle等を指定した後に、FormのインスタンスプロパティSizeではなく、CliantSizeに幅と高さの大きさの
 Sizeインスタンスを代入すると良い

演習5 フォームサイズの固定化とコントールボックスの非表示

・フォームのボーダーをFixedSingleにしよう
・コントロールボックスを非表示にしよう
・フォームのSizeではなくClientSizeを640×480にしよう

作成例

//演習5 フォームサイズの固定化とコントールボックスの非表示
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; //【削除】インスタンスプロパティで大きさを設定
        f.StartPosition = FormStartPosition.Manual; //「手動設定」を設定
        Point p = new Point(300,0); //X座標とY座標のPointインスタンスを生成
        f.Location = p; //インスタンスプロパティで初期位置を設定
        f.FormBorderStyle = FormBorderStyle.FixedSingle; //【追加】フォームサイズの固定化
        f.ControlBox = false; //【追加】コントールボックスの非表示
        f.ClientSize = new Size(640, 480); //【追加】クライアントサイズの幅と高さを指定
        Application.Run(f); //生成済のインスタンスを実行
    }
}

テーマ6 フォーム上の描画の基礎

・フォームアプリケーションにおいては、プログラム側からの描画だけでなく、システム側からの必要に応じた再描画を行う必要がある
・例えば、フォームの一部が画面の外部になってから内部に戻された場合、システム側で再描画を行う
・C#のフォームアプリケーションはこのことに対応するメソッド protected void OnPaint(PaintEventArgs)メソッドを提供している
・このメソッド内に記述された内容が、システム側からの必要に応じた再描画で自動的に用いられる
・プログラム側からの描画内容をこのメソッド内に記述するには:
 ① プログラムのクラスをFormクラスの派生クラスにする
 ② protected void OnPaint(PaintEventArgs e)メソッドをオーバライドする
 ③ オーバライドの冒頭で、元のメソッドの内容を「base.OnPaint(e);」で呼び出して、基本的な描画処理を行う
 ④ ③の後に、プログラム側からの描画内容を記述する

演習6 プログラム側からの描画内容を記述する準備

・下記の手順。なお、実行結果は(まだ)変わらない
① ProgramクラスをFormクラスの派生クラスにする
② protected void OnPaint(PaintEventArgs e)メソッドのオーバライドメソッドを追記
③ ②の中に、元のメソッドの内容を呼び出す「base.OnPaint(e);」を記述

作成例

//演習6 プログラム側からの描画内容を記述する準備
using System; //C#標準クラス用
using System.Windows.Forms; //C#が提供するApplication、Formクラス用
using System.Drawing; //Sizeクラス用
class Program : Form { //【変更】Formクラスの派生クラス
    protected override void OnPaint(PaintEventArgs e) { //【以下追加】描画処理のオーバライド
        base.OnPaint(e); //元のメソッドの内容を呼び出す
    }
    static void Main() { //実行用メソッド(publicはなくてOK)
        Program f = new Program(); //【変更】自クラスのインスタンスを生成
        f.Text = "Game"; //Form名を設定
        f.StartPosition = FormStartPosition.Manual; //「手動設定」を設定
        Point p = new Point(300,0); //X座標とY座標のPointインスタンスを生成
        f.Location = p; //インスタンスプロパティで初期位置を設定
        f.FormBorderStyle = FormBorderStyle.FixedSingle; //フォームサイズの固定化
        f.ControlBox = false; //コントールボックスの非表示
        f.ClientSize = new Size(640, 480); //クライアントサイズの幅と高さを指定
        Application.Run(f); //生成済のインスタンスを実行
    }
}

提出:演習6 プログラム側からの描画内容を記述する準備

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です