Random
ナンバージェネレーターから始めましょう。有効にするには、インスタンス化Random
を 1 回だけ行う必要があります。これを行うには、クラスの静的インスタンスを作成します。そうしないと、電話をかけるたびに同じ番号が返される可能性がありますrandom.Next()
。
public class PokemonChooser
{
private static Random random = new Random();
public static string ChoosePokemon() { ... }
}
次に、必要な値だけでなく、random.Next()
負でない値を返すことを理解する必要がありinteger
ます。そのため、結果をあなたのケースに役立つものに丸める必要があります。ランダムに選択したい項目が 3 つあるので、モジュラス演算子 ( %
) を使用して四捨五入できます。これにより、基本的に除算演算の剰余( ) が得られます/
。例: (int)(5 / 2) == 2
、および5 % 2 == 1
。
var pokemonChosen = random.Next() % 3;
次に、この結果はゼロベースであるため、if
ステートメントでそれを説明する必要があります。
if (pokemonChosen == 0)
{
string pokemon = "Pidgey";
return pokemon;
}
if (pokemonChosen == 1)
{
string pokemon = "Charmander";
return pokemon;
}
if (pokemonChosen == 2)
{
string pokemon = "Geodude";
return pokemon;
}
pokemon
ポケモンの名前はかなり明白なので、可読性を失うことなく変数を取り除くことができます。
if (pokemonChosen == 0)
{
return "Pidgey";
}
if (pokemonChosen == 1)
{
return "Charmander";
}
if (pokemonChosen == 2)
{
return "Geodude";
}
case
複数のステートメントの代わりにステートメントを使用することで、おそらくこれをより明確かつ短くすることができif
ます。
switch (pokemonChosen) {
case (0): return "Pidgey";
case (1): return "Charmander";
case (2): return "Geodude";
}
"missingno"
また、数字でポケモンを見つけられない場合は単純に戻るため、デフォルトのケースを使用できます。
switch (pokemonChosen) {
case (0): return "Pidgey";
case (1): return "Charmander";
case (2): return "Geodude";
default: return "missingno";
}
全体として、次のようになります。
public class PokemonChooser
{
private static Random random = new Random();
public static string ChoosePokemon()
{
var pokemonChosen = random.Next() % 3;
switch (pokemonChosen) {
case (0): return "Pidgey";
case (1): return "Charmander";
case (2): return "Geodude";
default: return "missingno";
}
}
}
そして、次のように使用します。
var pokemon = PokemonChooser.ChoosePokemon();
ただし、 よりも大きい数値を選択することもできます。そう3
しないと、が返されません。random.Next() % 3
"missingno"