2279 文字
11 分

【ゲーム開発のためのC#入門講座・環境構築編】最終課題にチャレンジしてみよう(Mac用)【#3】

まずは一言#

ここまでありがとうございました&お疲れ様でした!

応用編に突撃する前に#

応用編の準備は完了です。

早速突撃! の前に、Visual Studio Codeとコンソールアプリで使える技を覚えて、最終課題にチャレンジしてみましょう。

Visual Studio Codeの便利ショートカットキー紹介#

今後愛用していくVisual Studio Codeのよく使うショートカット―キーをご紹介します。

プログラミングの実装速度向上にぜひ役立ててください。

ショートカットキー実行内容
Ctrl + zひとつ前に戻す
Ctrl + yCtrl + zで戻っていた場合、ひとつ先に進める
Ctrl + k ⇒ Ctrl + c範囲を指定している場合は指定範囲をすべてコメントアウト。範囲が指定されていない場合はカーソル行をコメントアウト
Ctrl + k ⇒ Ctrl + u範囲を指定している場合は指定範囲をすべてコメント解除。範囲が指定されていない場合はカーソル行をコメント解除
Shift + Alt + fズレているネストなどがあれば整形(わざとタブ入力などでネストをズラしてからやってみると効果がわかります)
Ctrl + s現在開いているスクリプトファイルを保存
Ctrl + k + sすべて保存
F5プログラムのデバッグ実行(=テスト実行)

コンソールアプリで入力を受け付けよう#

これまでConsole.WriteLineで出力ばっかりやってきました。が、名前入力を求めるなど、プレイヤー側に入力して欲しい場面もありますよね。

コンソールアプリは文字しか扱うことができないので、例えばドラクエやポケモンのようにひらがな・カタカナ入力画面を表示して、ひとつずつ文字を選択してもらうなんてことはできません。でも、入力を受け付ける関数はちゃんと用意されています。

それがConsole.ReadLineです。

この関数を使うと、プレイヤーに入力してもらった文字列を戻り値として受け取ることができます。

練習がてら新しくプロジェクトを作成してもよいですし、前回の記事で作成したSampleを使ってもよいので、下記のコードを実装してみましょう。

Console.Write("プレイヤーさん、名前を教えてください! > ");
string name = Console.ReadLine();
Console.WriteLine("プレイヤーさんの名前は" + name + "というのですね!");

Console.WriteLine();
Console.WriteLine("Enterキーを押すと処理を終了します...");
Console.ReadLine();

黄緑色の警告線が表示されますが、これは一旦気にしなくてOKです。

F5キーを押すと、画面の最下部に入力欄が出てくるので、実際に名前を入力してEnterキーを押してみましょう……がWindows + Visual Studioにおける手順なのですが、どうやらVisual Studio Codeは出力専用で入力はできないらしいです。

というわけで、デバッグ実行(テスト実行)ではなく、実際に生成されたプログラムファイルから起動してみましょう。

まずは構成したスクリプトファイルからひとつのプログラムを構築する「ビルド」を実行します。

メニューのターミナルからビルドタスクの実行を選択してください。

ビルドタスクの実行

完了すると、「bin」というフォルダ配下に構築されたプログラムが格納されます。

拡張子exeのファイルが対象です。

対象ファイルを右クリックして「エクスプローラで表示する」を選択して対象フォルダを開き、ファイルをダブルクリックしてみてください。

エクスプローラで表示

プログラムが実行されるので、案内に従って名前入力をしてからEnterを押しましょう。

下記のように入力した名前が表示されていればOKです。

コンソール画面

プレイヤーさん、名前を教えてください! > 夕目紅
プレイヤーさんの名前は夕目紅というのですね!

​ Enterキーを押すと処理を終了します…

これでプレイヤーと相互にやり取りを行うことができるプログラムを作れるようになりましたね!

ちなみにこの実行時に出てくる真っ黒な画面のことを「コンソール画面」といいます。System.Console.WriteLine()は本来、このコンソール画面にテキストを出力するための機能だったんですね。

最終課題#

それでは今回学んだ関数Console.ReadLineを使って、入力してもらったプロフィールを元にエールを送るプログラムを作ってみましょう。

今回は自分で新しく関数を作るのは禁止とします。また、基礎強化編の最終課題で学んだ型変換も必要になります。忘れていたら見直してみましょう。

それでは、グッドファイト!(KOFアテナ風

仕様

下記の順で処理を実行するプログラムを完成させてください。

  1. プレイヤーに名前の入力を求める
  2. プレイヤーに年齢の入力を求める(取得した年齢はint型に変換しておく)
  3. プレイヤーに好きな食べ物の入力を求める
  4. プレイヤーに最近頑張っていることの入力を求める
  5. 2.の年齢に応じて、string型の変数に下記の文言を代入する。
  • 20歳未満:ルーキー
  • 40歳未満:チャレンジャー
  • 60歳未満:エース
  • 上記以外:ベテラン
  1. 下記形式の文言を出力する。
    [1.の名前]さんは[2.の年齢]歳、人生の[5.の文字列]だね!(ここまで1行) 最近は[4.の頑張っていること]を頑張っているんだね、えらい!(ここまで1行) たまにはおいしい[3.の食べ物]でも食べてゆっくり息抜きしてね!(ここまで1行)
テンプレート
// ↓ここにコードを記述しよう!

// ここまで

Console.WriteLine();
Console.WriteLine("Enterキーを押すと処理を終了します...");
Console.ReadLine();

答え合わせ#

実装内容が合っていれば、細かい差異は気にしなくてOKです。

// ↓ここにコードを記述しよう!

// 名前入力
Console.Write("プレイヤーさん、名前を教えてください! > ");
string name = Console.ReadLine();

// 年齢入力
Console.Write("プレイヤーさん、年齢を教えてください! > ");
int age = int.Parse(Console.ReadLine());

// 好きな食べ物入力
Console.Write("プレイヤーさん、好きな食べ物を教えてください! > ");
string favoriteDish = Console.ReadLine();

// 最近頑張っていること入力
Console.Write("プレイヤーさん、最近頑張っていることを教えてください! > ");
string fightContent = Console.ReadLine();

// 称号設定
string title;
if (age < 20)
{
    title = "ルーキー";
}
else if (age < 40)
{
    title = "チャレンジャー";
}
else if (age < 60)
{
    title = "エース";
}
else
{
    title = "ベテラン";
}

// 見やすさのために空行出力
Console.WriteLine();

// エールメッセージ出力
Console.WriteLine(name + "さんは" + age + "歳、人生の" + title + "だね!");
Console.WriteLine("最近は" + fightContent + "を頑張っているんだね、えらい!");
Console.WriteLine("たまにはおいしい" + favoriteDish + "でも食べてゆっくり息抜きしてね!");
// ここまで

Console.WriteLine();
Console.WriteLine("Enterキーを押すと処理を終了します...");
Console.ReadLine();

最後に実際にビルドしたプログラムを起動してみて、想定通りの出力結果となるか確認してみましょう。

コンソール画面

プレイヤーさん、名前を教えてください! > 夕目紅
プレイヤーさん、年齢を教えてください! > 34
プレイヤーさん、好きな食べ物を教えてください! > オムライス
プレイヤーさん、最近頑張っていることを教えてください! > ゲーム開発のためのC#入門講座
​ 夕目紅さんは34歳、人生のチャレンジャーだね!
最近はゲーム開発のためのC#入門講座を頑張っているんだね、えらい!
たまにはおいしいオムライスでも食べてゆっくり息抜きしてね!
​ Enterキーを押すと処理を終了します…

最後に#

実は「bin/Debug/net6.0」のフォルダ内にあるものをコピーして別のフォルダに移し替えてあげれば、他の人にプログラムを配布することができます。

気の置けない友人や家族に見せるのもよいですし、いつかは便利なツールを開発して公開するというのも夢があっていいですね。

ゲーム開発のために学んでいるC#ですが、ゲーム開発以外のことにも使えます。

頭の片隅にでも置いておくと、何かあった時皆さんの役に立つかもしれません。

それでは次回から応用編、オブジェクト指向に突入します。

これまで学んできた知識と経験、そして強力な開発環境Visual Studio Codeを駆使すれば絶対に乗り越えていきます。

お疲れ様でした。また次の記事でお会いしましょう!