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"