メモ帳でできるプログラミング C#

(サンプル)まるばつゲーム2

まるばつゲームの盤を作ります。クリックすると、○・×が現れる単純なものです。

前回作ったプログラムの無駄な繰り返しを減らしました。

実行結果

プログラム

public class TestApp
{
	public static void Main()
	{
		System.Windows.Forms.Application.Run(new MainForm());
	}
}

public class MainForm : System.Windows.Forms.Form
{
	private System.Windows.Forms.Label[] c1;
	private System.Windows.Forms.PictureBox c10;
	private System.String c11;

	public MainForm()
	{
		this.Text = "まるばつゲーム";
		this.ClientSize = new System.Drawing.Size(300, 300);

		c1 = new System.Windows.Forms.Label[9];
		for (int i = 0; i < c1.Length; ++i)
		{
			c1[i] = new System.Windows.Forms.Label();
			c1[i].Top = 5 + (i / 3) * 100;
			c1[i].Left = 5 + (i % 3) * 100;
			c1[i].Width = 90;
			c1[i].Height = 90;
			c1[i].Font = new System.Drawing.Font(System.Windows.Forms.Control.DefaultFont.Name, 50);
			c1[i].TextAlign = System.Drawing.ContentAlignment.BottomCenter;
			c1[i].Click += c1_Click;
			this.Controls.Add(c1[i]);
		}

		c10 = new System.Windows.Forms.PictureBox();
		c10.Width = 300;
		c10.Height = 300;
		System.Drawing.Bitmap canvas = new System.Drawing.Bitmap(c10.Width, c10.Height);
		System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(canvas);
		g.DrawLine(System.Drawing.Pens.Black, 0, 100, 300, 100);
		g.DrawLine(System.Drawing.Pens.Black, 0, 200, 300, 200);
		g.DrawLine(System.Drawing.Pens.Black, 100, 0, 100, 300);
		g.DrawLine(System.Drawing.Pens.Black, 200, 0, 200, 300);
		g.Dispose();
		c10.Image = canvas;
		this.Controls.Add(c10);

		c11 = "○";
	}

	private void c1_Click(object o, System.EventArgs e)
	{
		System.Windows.Forms.Label x = (System.Windows.Forms.Label) o;
		if (x.Text == "") {
			x.Text = c11;
		}
		toggle_c11();
	}

	private void toggle_c11()
	{
		if (c11 == "○") {
			c11 = "×";
		} else {
			c11 = "○";
		}
	}
}

ボタンの配列、for文による繰り返し処理などで、プログラムの重複した記述が減りました。

ここまでできたら、勝敗の判定、次のゲームの開始などの機能も追加したいですね。→ 次回へ続く。