前回、プレイヤーが目星を振るJavaプログラムを作りました。
あれでも動作はするのですが、もう少しキレイなプログラムにしたいので、
今回はfor文を使って、よりスマートに作っていきたいと思います。
[codebox title=”完成品”]
public class Marks{
public static void main(String[] args){
String[] playernames = new String[]{"プレイヤー1","プレイヤー2","プレイヤー3"};
int[] marks = new int[]{50,80,25};
int[] dicevalues = new int[3];
for(int i = 0;i < dicevalues.length;i++){
dicevalues[i] = new java.util.Random().nextInt(100);
if(dicevalues[i] <= marks[i]){
System.out.println(playernames[i] + "の目星は" + marks[i] + " : " + dicevalues[i] + "で成功");
}else{
System.out.println(playernames[i] + "の目星は" + marks[i] + " : " + dicevalues[i] + "で失敗");
}
}
}
}
[/codebox]
FOR文を使った構成
まずはじめに、ダイスのランダム数値を入れる変数の宣言をfor文に対応させてみました。
for(int i = 0;i < dicevalues.length;i++){
dicevalues[i] = new java.util.Random().nextInt(100);
この繰り返し文は、最初に変数i を定義して、
その変数iの値がダイス(dicevalues)の数未満の時に繰り返されるというものになります。
i < dicevalues.length
この.lengthがdicevalusの数を自動で拾ってくれます。
ちなみに、ダイスの数というのは、最初に配列として宣言した3つです。
int[] dicevalues = new int[3];
次に、if文を使って条件分岐させていますが、
ここでも、変数iをそのまま使っています。
if(dicevalues[i] <= marks[i]){
System.out.println(
playernames[i] + "の目星は" +
marks[i] + " : " + dicevalues[i] + "で成功");
}else{
System.out.println(playernames[i] + "の目星は" +
marks[i] + " : " + dicevalues[i] + "で失敗");
ここでは、ダイスと目星の数値が誰のものかを紐つける変数iを使って、
dicevaluesの値がmarksの値以下であれば、TRUE判定。
つまり、成功の判定を出力する事になります。
変数iを使うことで、プレイヤーが増えても簡単に対応出来るようになりました。
このプログラムであれば、プレイヤーが10人だろうが、100人だろうが、
最初に配列で設定してしまえば、繰り返しと条件分岐を変更する必要がありません。
まとめ
for文を使うことで、プログラムコードをスッキリ見せることと、
多人数に簡単に対応出来るようになりました。
こうやって、ごちゃごちゃしてたプログラムが、
スッキリ見れるようなプログラムになるっていうのは、
プログラミングを学んでて楽しいなと思える瞬間でもありますね。
少しでも参考になれば幸いです。