ケイバハック

競馬ソフトは自分で作ろう!

レース結果を適当に予想するアプリ

そのレースが何頭立てかを後から変えられるようにしたコンソールアプリ

そのレースが何頭立てかを後から変えられるようにしたコンソールアプリ

今回は、競馬ソフトを開発してみたいプログラミング未経験者のうち、.NET Core環境での開発手順の基本が分かっている人に向けての情報です。

「.NET Core環境での開発手順って何?」という方は、まずは、次の記事から読み進め、.NET Core環境での開発手順の基本を学んでください。

.NET Core環境でのコンソールアプリを作るときの基本手順

さて、前回の次のレースに来る馬番を適当に予想するコンソールアプリの記事では、指定した頭立てのレースから、適当な馬番をコンピューターに選ばせるアプリを作りました。

今回は、そのアプリをもう少し改良し、使いやすいアプリにします。ので、前回の記事を読んでいない方は、前回の記事を先に読んでください。

プログラムを知らない他人に自分のアプリを使ってもらうことを考えると・・・

さて、前回作成した、適当な馬番をコンピューターに選ばせるアプリですが、自分が使う分には、そのままでも機能します。

なぜなら、プログラムを作った本人は、ソースコードを直して使うことができるからです。具体的には、レースの頭立て数を変えたければ、ソースコードを修正し、実行することができました。

一方で。この自分の作ったプログラムを、誰か別の人に使ってもらうことを想像して見てください。また、その人は、全くプログラミングができない人だったとしましょう。

そのような人が、前回作ったアプリを使うと問題が出てきます。なぜかと言うと、その人は、プログラムのソースコードを直すことができないからです。つまり、頭立て数が固定されたアプリしか利用できなくなると言うわけですね。

例えば、「16頭立て」の設定をしたアプリにした場合、ソースコードを直せない人にとっては、16頭立てのレースにしか使えないアプリとなります。それでは困るわけですね。

何頭立てかを後から変えられるように修正する

と言うわけで、今回は、前回のアプリを改良し、そのレースが何頭立てかを後から変えられるようにします。改良することで、ソースコードを直せない人が使っても、頭立て数を変更できるようになります。

で、まずは、今回作るアプリを実際に動かしている様子の動画を見て、そのイメージを掴んでください。次の通りです。

動画では、「dotnet run」と改良後のアプリを実行すると、「次のレースは何頭立てですか?:」と言う質問が、コンソールに表示されます。

その質問に、好きな数字を入れると、その入れた数字を、そのレースの頭立て数として設定し、その数を上限に、適当な馬番が予想されます。

修正するソースコード

つまり、「次のレースは何頭立てですか?:」とコンソールに表示し、その入力結果を、そのレースの頭立て数に設定できるように改良しました。おかげで、ソースコードを修正せずに、頭立て数を変更できるようになったわけですね。

では、このようにアプリを改良するために、前回のソースコードから、具体的にどのように変更すれば良いかと言うと、次の通りです。

Program.csのソースコード

using System;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //コンソールから何頭立てかを入力させる
            Console.Write("次のレースは何頭立てですか?: ");
            string line = Console.ReadLine();

            //入力された値を頭立て数に設定する
            int toudate = int.Parse(line);

            //1〜入力頭立て数の範囲でランダムな数字をkekkaに設定する
            var random = new Random();
            int kekka = random.Next(1, toudate+1);

            //kekkaをコンソールに出力する   
            Console.WriteLine($"次のレースは、{kekka}番の馬が来るよ");   
        }
    }
}

このソースコードの最初の方で行っている、「Console.ReadLine()」が、今回のソースコードのポイントです。

「Console.ReadLine()」を行うと、コンソール上で実行したプログラムが入力待ちの状態となります。そして、コンソールに何らかの文字を入力し、enter(return)で改行すると、そこに入力した文字をプログラム側に取り込むことができます。

ソースコードでは、その取り込んだ結果が、「string line」と言う変数に格納されます。動画の例では、コンソールから、「16」「100」「3」と言う文字が、入力されてくるわけですね。

そして、「int toudate = int.Parse(line);」では、その取り込んだ文字を、頭立て数を示す変数toudateに設定しています。

以降は、前回、作ったアプリのソースコードと変わっていません。設定された頭立て数を元に、適当な馬番を選び、その結果をコンソールに出力しているだけです。

次に読むべき記事: 入力された頭立て数をチェックするようにしたコンソールアプリ

Return Top