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

3.5_C#環境構築編

まずは一言

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

応用編に突撃する前に

無事環境構築も終わって、今度こそ本当に応用編の準備は完了です。

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

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

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

慣れてきたら少しずつ使ってみるとよいと思います。

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

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

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

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

それが「Console.ReadLine」です。

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

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

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

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

実行ボタンまたはF5キーを押してプログラムを起動し、実際に名前を入力したらEnterキーを押してみましょう。

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

コンソール画面

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

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

最終課題

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

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

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

仕様

下記の順で処理を実行するプログラムを完成させてください。
①プレイヤーに名前の入力を求める
②プレイヤーに年齢の入力を求める(取得した年齢はint型に変換しておく)
③プレイヤーに好きな食べ物の入力を求める
④プレイヤーに最近頑張っていることの入力を求める
⑤②の年齢に応じて、string型の変数に下記の文言を代入する。
20歳未満:ルーキー
40歳未満:チャレンジャー
60歳未満:エース
上記以外:ベテラン
⑥下記形式の文言を出力する。
 [①の名前]さんは[②の年齢]歳、人生の[⑤の文字列]だね!(ここまで1行)
 最近は[④の頑張っていること]を頑張っているんだね、えらい!(ここまで1行)
 たまにはおいしい[③の食べ物]でも食べてゆっくり息抜きしてね!(ここまで1行)

サポートできる情報がないため、今回はテンプレートはなしです。

入力補完なども活用しながら、すべて自力で実装してみましょう。

答え合わせ

実装内容が合っていれば、細かい差異は気にしなくて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 + "でも食べてゆっくり息抜きしてね!");

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

コンソール画面

プレイヤーさん、名前を教えてください! > 夕目紅
プレイヤーさん、年齢を教えてください! > 34
プレイヤーさん、好きな食べ物を教えてください! > 塩
プレイヤーさん、最近頑張っていることを教えてください! > ゲーム開発のためのC#入門講座

夕目紅さんは34歳、人生のチャレンジャーだね!
最近はゲーム開発のためのC#入門講座を頑張っているんだね、えらい!
たまにはおいしい塩でも食べてゆっくり息抜きしてね!

無事、完成させることはできましたか?

年齢のところで数値以外を入力するとint型に変換できずエラーになってしまうという問題は残っていますが、その対応策はいずれご紹介します。

最後に

改めてお疲れ様でした!

せっかくなので最後に、作成したプログラムを配布する方法を紹介します。

作成したプログラムはビルドという行為を行うことで、他の人に配布可能な形式で出力することが可能です。メニュー画面の「ビルド」という項目から「ソリューションのビルド」を実行することでできるのですが、実は実行ボタンはF5キーを押した時もビルドが実行されています(テストプレイするのにビルドする必要があるため)。

ソリューションエクスプローラーで「Sample」というプロジェクト名を右クリックし、下の方にある「エクスプローラでフォルダを開く」を選択してみてください。

右クリックメニューからフォルダを開こう

フォルダを開けたら、さらに階層を辿って下記のフォルダを開きましょう。

「bin/Debug/net6.0」

exeファイルがあるぞ!

これがビルドされたプログラムファイル群です。

拡張子が「.exe」のファイルをダブルクリックするとプログラムを実行することができます。試しに実行してみてください。せっかく入力したのに最後に何も表示されず終わってしまうかと思います。

これはすべての命令が実行完了したらコンソールアプリが自動で閉じるようになっているからです。「Visual Studio」から実行した時はあくまでデバッグ実行(=テスト実行)のため、自動で閉じないようになっていただけなのです。

せっかく出力したエールメッセージが見れないと何の意味もないので、先程のプログラムの最後に下記のコードを追加しましょう。

// 見やすさのために空行出力
Console.WriteLine();
​
// プレイヤーがEnterキーを入力したらプログラムを終了する
Console.WriteLine("最後にEnterキーを押してね。処理を終了するよ!");
Console.ReadLine();

メニュー画面の「ビルド」から「ソリューションのビルド」を選択してください。

ビルドが完了したらもう一度拡張子「.exe」のファイルをダブルクリックしましょう。今度は勝手にアプリが終了せず、Enterキーを入力したら終了するはずです。

「bin/Debug/net6.0」のフォルダ内にあるものをコピーしてあげれば、他の人にプログラムを配布することができます。気の置けない友人や家族に見せるのもよいですし、いつかは便利なツールを開発して公開するというのも夢があっていいですね(ちゃんと公開する場合は上記方法ではなく、少しやり方を変えた方法の方が望ましいですが)。

ゲーム開発のために学んでいるC#ですが、ゲーム開発以外のことにも使えます。頭の片隅にでも置いておくと、何かあった時皆さんの役に立つかもしれません。

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

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

また次の記事でお会いしましょう!

Posted by 夕目紅