Consoleアプリでのキー入力と分岐処理の実装方法
プログラミング初心者向けに、C# コンソールアプリでのキー入力待機と条件分岐の基本を解説します。ゲーム開発のプレイヤー操作や、対話型アプリのメニュー選択など、あらゆる場面で応用できるシンプル且つ重要なテクニックです。
前提知識
- C# の基本文法(変数宣言、if 文)
- System.Console 名前空間の利用方法
サンプルコード全体
using System;
class Program
{
static void Main()
{
Console.WriteLine("Dキーでプレイヤー1を操作、Sキーでプレイヤー2を操作します。");
// キー入力を待機し、押されたキーを取得
var key = Console.ReadKey(intercept: true).Key;
// 入力されたキーによって処理を切り分け
if (key == ConsoleKey.D)
{
// プレイヤー1の移動・表示・衝突判定
Console.WriteLine("プレイヤー1が右に移動しました。");
}
else if (key == ConsoleKey.S)
{
// プレイヤー2の処理
Console.WriteLine("プレイヤー2が右に移動しました。");
}
else
{
// それ以外のキー入力時のフォールバック
Console.WriteLine("有効なキーが押されませんでした。");
}
}
}
コード行ごとの解説
var key = Console.ReadKey(intercept: true).Key;
- Console.ReadKey():キー入力があるまで処理を一時停止
- intercept: true:押されたキーを画面に表示しない
- .Key:ConsoleKeyInfo から ConsoleKey 列挙体だけを抽出
if (key == ConsoleKey.D)
- 入力されたキーが D の場合のみ、ブロック内の処理を実行
- ゲームで「プレイヤー1の右移動」や、特定メニューの選択などに対応
else if (key == ConsoleKey.S)
- D 以外で、S が押された場合の処理
- 「プレイヤー2の右移動」など別のアクションを担当
else
- D/S 以外のキー入力時に実行
- 無効な入力へのフォールバックやヘルプ表示に利用
ポイントと応用
- intercept: true の活用画面へのキー入力表示を抑制できるため、ログが見やすくなる。
- ConsoleKey 列挙体ConsoleKey.A ~ ConsoleKey.Z や数字キー、矢印キーなど多彩に用意。
- 複数キーの同時検知if (key == ConsoleKey.A || key == ConsoleKey.LeftArrow) のように組み合わせ可能。
- ループと組み合わせた継続待機
while (true)
{
var k = Console.ReadKey(intercept: true).Key;
if (k == ConsoleKey.Escape) break;
// 他の処理
}
- ループを抜けるまでキー入力を繰り返し監視できる。
まとめ
- Console.ReadKey(intercept: true).Key でキー入力を待機し、表示せずに取得
- if/else if/else で押されたキーに応じた処理を分岐
- 複数キー判定やループと組み合わせることで、より高度な操作制御も実現可能
この仕組みを基礎に、簡易ゲームや対話型コンソールツールなど、多彩なアプリケーションを作成してみましょう。
訪問数 24 回, 今日の訪問数 24回
ディスカッション
コメント一覧
まだ、コメントがありません