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

:線の描画(続き)、矩形や円の描画、文字の描画、画面遷移 など

提出フォロー:演習12 対角線を描く

・画面上に左上から右下へ赤色太さ10の線を描く
・画面上に右上から左下へ黄色太さ20の線を描く

作成例

//演習12 対角線を描く
using System; //フォームアプリケーションに必須
using System.Windows.Forms; //フォームアプリケーションに必須
using System.Drawing; //Image用
class Program : Form { //Formクラスを継承
    Image backb = Image.FromFile("backb.bmp"); //背景画像の読込
    Image enemy = Image.FromFile("enemy.gif"); //アイテム画像の読込
    Image burn = Image.FromFile("burn.gif"); //効果用画像の読込
    Pen red10 = new Pen(Color.Red, 10); //【追加】ペン(赤、10)を生成
    Pen yel20 = new Pen(Color.Yellow, 20); //【追加】ペン(黄、20)を生成
    protected override void OnPaint(PaintEventArgs e) { //Formのメソッドをオーバーライド
        base.OnPaint(e); //まず、Formクラスにおけるメソッドの内容(基本再描画処理)を実行
        e.Graphics.DrawImage(backb, 0, 0); //背景画像を(0,0)から描画
        e.Graphics.DrawLine(red10, 0, 0, backb.Width - 1, backb.Height - 1); //【追加】左上から右下へ赤色10の線を描画
        e.Graphics.DrawLine(yel20, backb.Width - 1, 0, 0, backb.Height - 1); //【追加】左上から右下へ黄色20の線を描画
        int mx = backb.Width / 2, my = backb.Height / 2; //中央座標を得る
        e.Graphics.DrawImage(enemy, mx - enemy.Width / 2, my - enemy.Height / 2); //アイテム画像を中央に描画
        e.Graphics.DrawImage(burn, mx - burn.Width / 2, my - burn.Height / 2); //アイテム画像を中央に描画
    }
    void OnKeyDown(object o, KeyEventArgs e) { //キーボードが押された時に呼ばれるメソッド
        if(e.KeyCode.ToString() == "Escape") { //Escキーが押されたら
            Close(); //フォームアプリケーション終了
        }
    }
    Program() { //コンストラクタ
        KeyDown += new KeyEventHandler(OnKeyDown); //キーボードが押された時に呼ばれるメソッドを登録
    }
    static void Main() { //publicの指定は任意
        Program p = new Program(); //継承したフォームのインスタンスを生成
        p.Width = 660; //インスタンスのWidthプロパティに幅を代入
        p.Height = 520; //インスタンスのHeightプロパティに高さを代入
        p.Text = "Game"; //インスタンスのTextプロパティにフォーム名を代入
        p.ControlBox = false; //ControlBoxを非表示にする
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //フォームサイズ変更を禁止
        Application.Run(p); //インスタンスを画面に出す
    }
}

テーマ15 Penクラスのプロパティ

・生成したPenオブジェクトは、Colorプロパティで色を変更できる
・また、Widthプロパティで太さを変更できる
・よって、生成済みのPenオブジェクトは使いまわし可能

演習13 対角線を描く・改

・Penオブジェクトを1つのみにしよう

作成例

//演習13 対角線を描く・改
using System; //フォームアプリケーションに必須
using System.Windows.Forms; //フォームアプリケーションに必須
using System.Drawing; //Image用
class Program : Form { //Formクラスを継承
    Image backb = Image.FromFile("backb.bmp"); //背景画像の読込
    Image enemy = Image.FromFile("enemy.gif"); //アイテム画像の読込
    Image burn = Image.FromFile("burn.gif"); //効果用画像の読込
    Pen mypen = new Pen(Color.Red, 10); //【変更】ペンを生成(初期値は赤、10)
    protected override void OnPaint(PaintEventArgs e) { //Formのメソッドをオーバーライド
        base.OnPaint(e); //まず、Formクラスにおけるメソッドの内容(基本再描画処理)を実行
        e.Graphics.DrawImage(backb, 0, 0); //背景画像を(0,0)から描画
        e.Graphics.DrawLine(mypen, 0, 0, backb.Width - 1, backb.Height - 1); //【変更】左上から右下へ赤色10の線を描画
        mypen.Color = Color.Yellow; //【追加】ペン色を黄色に
        mypen.Width = 20;  //【追加】ペン幅を20に
        e.Graphics.DrawLine(mypen, backb.Width - 1, 0, 0, backb.Height - 1); //【変更】左上から右下へ黄色20の線を描画
        int mx = backb.Width / 2, my = backb.Height / 2; //中央座標を得る
        e.Graphics.DrawImage(enemy, mx - enemy.Width / 2, my - enemy.Height / 2); //アイテム画像を中央に描画
        e.Graphics.DrawImage(burn, mx - burn.Width / 2, my - burn.Height / 2); //アイテム画像を中央に描画
    }
    void OnKeyDown(object o, KeyEventArgs e) { //キーボードが押された時に呼ばれるメソッド
        if(e.KeyCode.ToString() == "Escape") { //Escキーが押されたら
            Close(); //フォームアプリケーション終了
        }
    }
    Program() { //コンストラクタ
        KeyDown += new KeyEventHandler(OnKeyDown); //キーボードが押された時に呼ばれるメソッドを登録
    }
    static void Main() { //publicの指定は任意
        Program p = new Program(); //継承したフォームのインスタンスを生成
        p.Width = 660; //インスタンスのWidthプロパティに幅を代入
        p.Height = 520; //インスタンスのHeightプロパティに高さを代入
        p.Text = "Game"; //インスタンスのTextプロパティにフォーム名を代入
        p.ControlBox = false; //ControlBoxを非表示にする
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //フォームサイズ変更を禁止
        Application.Run(p); //インスタンスを画面に出す
    }
}

提出:演習13 対角線を描く・改

コメントを残す

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