承知いたしました。C# (C シャープ) で作成するモグラたたきゲームのデスクトッププログラムの基本的なコード例を以下に示します。このコードは Windows Forms アプリケーションとして作成することを想定しています。
注意: これは基本的な例であり、グラフィックやサウンド、より洗練されたゲームロジックは含まれていません。
まず、Visual Studio などの IDE を使用して新しい Windows Forms アプリケーションプロジェクトを作成してください。
次に、Form1.cs のコードを以下の内容で置き換えます。
C#
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;
namespace WhackAMole
{
public partial class Form1 : Form
{
private List<Button> moles;
private Random random = new Random();
private int score = 0;
private Timer gameTimer;
private int gameDuration = 30; // ゲーム時間 (秒)
private int timeRemaining;
private Label scoreLabel;
private Label timerLabel;
public Form1()
{
InitializeComponent();
InitializeGame();
}
private void InitializeGame()
{
// フォームのサイズを設定
this.ClientSize = new Size(400, 300);
// スコア表示ラベルの作成
scoreLabel = new Label();
scoreLabel.Text = "スコア: 0";
scoreLabel.Location = new Point(10, 10);
scoreLabel.AutoSize = true;
Controls.Add(scoreLabel);
// タイマー表示ラベルの作成
timerLabel = new Label();
timerLabel.Text = "時間: " + gameDuration;
timerLabel.Location = new Point(10, 30);
timerLabel.AutoSize = true;
Controls.Add(timerLabel);
// モグラボタンのリストを作成
moles = new List<Button>();
int moleSize = 50;
int padding = 10;
int rows = 3;
int cols = 3;
for (int row = 0; row < rows; row++)
{
for (int col = 0; col < cols; col++)
{
Button mole = new Button();
mole.Size = new Size(moleSize, moleSize);
mole.Location = new Point(padding + col * (moleSize + padding), 60 + padding + row * (moleSize + padding));
mole.Text = ""; // モグラの表示は画像などにすると良い
mole.BackColor = Color.Brown; // モグラの色
mole.Click += Mole_Click;
moles.Add(mole);
Controls.Add(mole);
}
}
// ゲームタイマーの初期化
gameTimer = new Timer();
gameTimer.Interval = 1000; // 1秒ごとにイベント発生
gameTimer.Tick += GameTimer_Tick;
// ゲームを開始
StartGame();
}
private void StartGame()
{
score = 0;
scoreLabel.Text = "スコア: 0";
timeRemaining = gameDuration;
timerLabel.Text = "時間: " + timeRemaining;
gameTimer.Start();
ShowRandomMole();
}
private async void ShowRandomMole()
{
// すべてのモグラを非表示にする
foreach (var mole in moles)
{
mole.Enabled = false; // クリック不可
mole.BackColor = Color.Brown;
}
// ランダムなモグラを選択して表示
int index = random.Next(moles.Count);
moles[index].Enabled = true; // クリック可能
moles[index].BackColor = Color.DarkGray; // 表示されたモグラの色
// 一定時間後に非表示にする
await Task.Delay(1500); // 1.5秒表示
// ゲームが終了していない場合は、再びランダムなモグラを表示
if (gameTimer.Enabled)
{
ShowRandomMole();
}
}
private void Mole_Click(object sender, EventArgs e)
{
Button clickedMole = (Button)sender;
if (clickedMole.BackColor == Color.DarkGray) // 表示されているモグラをクリックした場合
{
score++;
scoreLabel.Text = "スコア: " + score;
clickedMole.BackColor = Color.Brown; // クリック後は非表示にする
}
}
private void GameTimer_Tick(object sender, EventArgs e)
{
timeRemaining--;
timerLabel.Text = "時間: " + timeRemaining;
if (timeRemaining <= 0)
{
gameTimer.Stop();
MessageBox.Show($"ゲーム終了!あなたのスコアは {score} です。", "ゲーム終了");
// 必要であれば、ここでゲームのリスタート処理などを追加
StartGame(); // デモのため、終了後に再スタート
}
}
}
}
コードの説明:
using
ディレクティブ: 必要な名前空間をインポートします。namespace WhackAMole
: プロジェクトのネームスペース。public partial class Form1 : Form
: Windows Forms の基本となるクラス。- フィールド:
moles
: モグラを表すボタンのリスト。random
: 乱数ジェネレーター。score
: 現在のスコア。gameTimer
: ゲームの進行を管理するタイマー。gameDuration
: ゲームの制限時間(秒)。timeRemaining
: 残り時間。scoreLabel
: スコアを表示するラベル。timerLabel
: 残り時間を表示するラベル。
Form1()
(コンストラクタ): フォームの初期化とゲームの初期化を行います。InitializeGame()
:- フォームのサイズを設定します。
- スコアとタイマーのラベルを作成し、配置します。
- モグラのボタンをグリッド状に作成し、イベントハンドラー (
Mole_Click
) を設定してリストに追加します。 - ゲームタイマーを初期化し、イベントハンドラー (
GameTimer_Tick
) を設定します。 StartGame()
メソッドを呼び出してゲームを開始します。
StartGame()
:- スコアをリセットします。
- 残り時間を初期化します。
- タイマーを開始します。
- 最初にランダムなモグラを表示します。
ShowRandomMole()
:- すべてのモグラを一時的に非表示(クリック不可、色を戻す)にします。
- ランダムなインデックスを選択して、対応するモグラを表示(クリック可能、色を変える)します。
Task.Delay()
を使用して、一定時間後にモグラを再び非表示にします。- ゲームが続いている場合は、再び
ShowRandomMole()
を呼び出します。
Mole_Click(object sender, EventArgs e)
:- クリックされたボタンがモグラ(表示されている色)であれば、スコアを増やし、表示を元に戻します。
GameTimer_Tick(object sender, EventArgs e)
:- 残り時間を減らし、タイマーラベルを更新します。
- 残り時間が 0 になったら、タイマーを停止し、メッセージボックスでゲーム終了を知らせます。その後、デモとしてゲームを再スタートします。
使用方法:
- Visual Studio で新しい Windows Forms アプリケーションプロジェクトを作成します。
- Form1.cs の内容を上記のコードで置き換えます。
- 必要に応じて、モグラの数、サイズ、配置、ゲーム時間などを調整してください。
- 実行 (F5 キー) してゲームをプレイします。
今後の拡張:
- グラフィックの追加: ボタンの代わりに画像コントロールを使用し、モグラの画像を表示する。
- サウンドエフェクト: モグラをクリックしたときなどに音を再生する。
- 難易度調整: モグラの出現頻度や表示時間を変更できるようにする。
- ハイスコア機能: ハイスコアを保存・表示する。
- アニメーション: モグラが出たり引っ込んだりするアニメーションを追加する。
この基本的なコードを参考に、より面白いモグラたたきゲームを作成してみてください。