「C#」の「Forms」でデスクトップゲーム「Color」を開発してみよう

第6回の今回は、プログラミング言語「C#」の「Windows Forms」を使ってデスクトップゲーム「Color」を作る解説をします。

大西 武 (オオニシ タケシ)

6月3日 6:30

はじめに

この連載では、さまざまなプログラミング言語やライブラリで同じゲームを開発することで、容易にそのプログラミング言語に入門します。

第6回の今回はプログラミング言語「C#」を使って、次のURLのようなColorゲームを作ります。こちらからアセットをダウンロードしておいてください。

Colorゲームについて

Colorゲームの内容は第1回でも解説した通り、ゲームを開始したら、赤緑青の色ブロックをクリックします。すると背景色にその色が混ぜられるので、どんどんクリックして真っ白な背景にしていこうというゲームです。

プログラミング言語について

C#はMicrosoftが開発した言語で、デスクトップアプリ(Windows)、Webアプリ(ASP.NET)、ゲーム開発(特にUnity)などに使われています。一度「中間言語(IL)」にコンパイルし、実行時にJITコンパイルするハイブリッド型のコンパイラ言語です。オブジェクト指向でデータ型が厳密に管理されるためバグが起きにくく、「.NET」という仕組みで多くのライブラリの機能がすぐ使えます。

Windows Formsについて

「Windows Forms」は「WinForms」とも呼ばれ、.NETを使ってUIパーツなどのGUIを構築できるデスクトップアプリを開発できます。

開発のために必要となる環境の準備

今回必要となる、無料版の「Visual Studio 2026」(以下、VS2026)を準備します。次のURLからVisual StudioインストーラーをダウンロードしてVS2026のC#をインストールしてください。

プロジェクトを作成しよう

VS2026を起動したら「Create a new project」をクリックし、コンボボックスで「C#」と「Windows」を選び「Windows Forms App」をダブルクリックします。

「Project name」を「colorCSForms」とタイプして「Next」ボタンをクリックし、「Framework」を最新のものを選んで「Create」ボタンをクリックしてプロジェクトを作成します。

次の階層図のように「images」フォルダを「colorCSForms」フォルダに配置します。

・階層図

colorCSFormsフォルダ
┠Dependenciesフォルダ(関連ファイルフォルダ)
┠imagesフォルダ(画像フォルダ)
┃┠0.pngファイル(赤の色ブロック画像)
┃┠1.pngファイル(緑の色ブロック画像)
┃┠2.pngファイル(青の色ブロック画像)
┃┠GameOver.pngファイル(ゲームオーバー画像)
┃┠StageClear.pngファイル(ステージクリア画像)
┃┗Title.pngファイル(タイトル画像)
┠Forms1.csファイル(メインフォルダ)
┃┠Forms1ファイル(Forms1.csファイル)
┃┠Forms1.Designer.csファイル(デザインファイル)
┃┗Form1.resx(リソースファイル)
┠Program.csファイル(プログラムファイル)
┗Sprite.csファイル(色ブロックファイル)

次のサンプルコードをコーディングし、「Debug」→「Start Debugging」メニューを実行すると真っ白なウィンドウだけ表示されます(図1)。まだテンプレートからウィンドウタイトルを変更し、ウィンドウサイズを大きく変更しただけです。

・サンプルコード「Form1.Designer.cs」ファイル

namespace colorCSForms
{
    partial class Form1
    {
        /// <summary>
        ///  Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        ///  Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(1800, 900);
            Text = "Color";
        }

        #endregion
    }
}

【サンプルコードの解説】
「Dispose」メソッドはコンポーネントを処分します。
「InitializeComponent」メソッドはUIパーツなどのコンポーネントを初期化します。

図1:真っ白なウィンドウを表示
【コラム】ちぎり絵俳句

文字自体をチラシなどの紙をちぎったちぎり絵で表現するアートを考えました。さらに文字は俳句を自作したものです。Wordで下書きを印刷したら誰でもそれらしいアートが作れます。百均の額縁に入れて大切な人に一句プレゼントしてはどうでしょう。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30