目星プログラムをfor文を使ってスッキリさせてみた

前回、プレイヤーが目星を振るJavaプログラムを作りました。

あれでも動作はするのですが、もう少しキレイなプログラムにしたいので、

今回はfor文を使って、よりスマートに作っていきたいと思います。

 

完成品
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] + "で失敗");
			}
		}	
	}
}

 

 

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文を使うことで、プログラムコードをスッキリ見せることと、

多人数に簡単に対応出来るようになりました。

 

こうやって、ごちゃごちゃしてたプログラムが、

スッキリ見れるようなプログラムになるっていうのは、

プログラミングを学んでて楽しいなと思える瞬間でもありますね。

 

少しでも参考になれば幸いです。