i was wondering if it is possible to use 1 item created by a loop. For an asignment for school i have to draw an apple tree. The user has to be able to choose how much apples are drawn. (the apples are drawn using paintcomponent) After that the user can click a button (fall) and 1 apple has to fall on the ground.
is this possible via a while loop (to select a random apple and move it?) At the moment i have done this using a switch case (user can choose max 5 apples) and the falling 'procedure' is don using a boolean
if(vallen == false){
switch (aantal){
case 1:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
break;
case 2:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
g.setColor(kleur);
g.fillOval(90, 310, 40, 40);
g.setColor(Color.black);
g.fillRect(110, 300, 5, 10);
break;
case 3:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
g.setColor(kleur);
g.fillOval(90, 310, 40, 40);
g.setColor(Color.black);
g.fillRect(110, 300, 5, 10);
g.setColor(kleur);
g.fillOval(150, 290, 40, 40);
g.setColor(Color.black);
g.fillRect(170, 280, 5, 10);
break;
case 4:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
g.setColor(kleur);
g.fillOval(90, 310, 40, 40);
g.setColor(Color.black);
g.fillRect(110, 300, 5, 10);
g.setColor(kleur);
g.fillOval(150, 290, 40, 40);
g.setColor(Color.black);
g.fillRect(170, 280, 5, 10);
g.setColor(kleur);
g.fillOval(210, 320, 40, 40);
g.setColor(Color.black);
g.fillRect(230, 310, 5, 10);
break;
case 5:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
g.setColor(kleur);
g.fillOval(90, 310, 40, 40);
g.setColor(Color.black);
g.fillRect(110, 300, 5, 10);
g.setColor(kleur);
g.fillOval(150, 290, 40, 40);
g.setColor(Color.black);
g.fillRect(170, 280, 5, 10);
g.setColor(kleur);
g.fillOval(210, 320, 40, 40);
g.setColor(Color.black);
g.fillRect(230, 310, 5, 10);
g.setColor(kleur);
g.fillOval(270, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(290, 290, 5, 10);
break;
default:
break;
}
}else{
switch (aantal){
case 0:
break;
case 1:
g.setColor(kleur);
g.fillOval(30, 650, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 640, 5, 10);
break;
case 2:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
g.setColor(kleur);
g.fillOval(90, 650, 40, 40);
g.setColor(Color.black);
g.fillRect(110, 640, 5, 10);
break;
case 3:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
g.setColor(kleur);
g.fillOval(90, 650, 40, 40);
g.setColor(Color.black);
g.fillRect(110, 640, 5, 10);
g.setColor(kleur);
g.fillOval(150, 290, 40, 40);
g.setColor(Color.black);
g.fillRect(170, 280, 5, 10);
break;
case 4:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
g.setColor(kleur);
g.fillOval(90, 310, 40, 40);
g.setColor(Color.black);
g.fillRect(110, 300, 5, 10);
g.setColor(kleur);
g.fillOval(150, 650, 40, 40);
g.setColor(Color.black);
g.fillRect(170, 640, 5, 10);
g.setColor(kleur);
g.fillOval(210, 320, 40, 40);
g.setColor(Color.black);
g.fillRect(230, 310, 5, 10);
break;
case 5:
g.setColor(kleur);
g.fillOval(30, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(50, 290, 5, 10);
g.setColor(kleur);
g.fillOval(90, 310, 40, 40);
g.setColor(Color.black);
g.fillRect(110, 300, 5, 10);
g.setColor(kleur);
g.fillOval(150, 290, 40, 40);
g.setColor(Color.black);
g.fillRect(170, 280, 5, 10);
g.setColor(kleur);
g.fillOval(210, 650, 40, 40);
g.setColor(Color.black);
g.fillRect(230, 640, 5, 10);
g.setColor(kleur);
g.fillOval(270, 300, 40, 40);
g.setColor(Color.black);
g.fillRect(290, 290, 5, 10);
break;
default:
showMessageDialog(null, "Geef een getal tussen 1 en 5 in!");
repaint();
break;
}
Thanks in advance
Loops are used for repetitive statemements. If u see your code a lot of it is repetitive, so u can convert it to something like this:
if(aantal>5 || aantal<0){
showMessageDialog(null, "Geef een getal tussen 1 en 5 in!");
repaint();
}
int counter = (vallen) ? 0:1;
int x1=30,y1=300;
int x2=50,y2=290;
int randomVal=new Random().nextInt(aantal);
while(counter<=aantal){
if(counter!=randomVal){
g.setColor(kleur);
g.fillOval(x1, y1, 40, 40);
g.setColor(Color.black);
g.fillRect(x2, y2, 5, 10);
x1=x1+60;
x2+=60;
y1+=10;
y2+=10;
}else{
//write code for fallen apple
}
}
Also, it is unnecessary to check if(vallen==false)
u can directly use, if(!vallen)