Creating multiple objects with a for loop
Hey everyone. So in my Javascript class we have to do create a program that runs a program created by one of our classmates that displays certain objects. This is what I'm working with:
Code Java:
/*
Ryan Coote
4/11/10
Man
*/
import java.util.Random;
import java.awt.*;
public class Man
{
private int diameter, x, y;
private Color hue;
public boolean doubled;
// Constructor
public Man (int size, Color shade, int upperX, int upperY, boolean goodTruth)
{
diameter = size;
hue = shade;
x = upperX;
y = upperY;
doubled = goodTruth;
}
public Man (int upperX, int upperY)
{
Random generator = new Random();
diameter = generator.nextInt(50);
hue = new Color (generator.nextInt(255), generator.nextInt(255), generator.nextInt(255));
x = upperX;
y = upperY;
if (generator.nextInt(2) == 1)
{
doubled = true;
}
else
{
doubled = false;
}
}
public void draw (Graphics page)
{
page.setColor(hue);
page.drawOval(x+(int)((diameter/2)*0.14), y, (int)(diameter*0.14), (int)(diameter*0.14));//The Head
page.drawLine(x+((int)(diameter/2)), y+((int)(diameter* 0.14)), x+((int)(diameter/2)), y+((int)(diameter*0.7)));//The Body
page.drawLine(x, y+((int)(diameter/2)), x+((int)(diameter/2)), y+((int)(diameter/0.25)));//left arm
page.drawLine(x+diameter, y+((int)(diameter/0.25)), x+((int)(diameter/2)), y+((int)(diameter/2)));//right arm
page.drawLine(x, y+diameter, x+((int)(diameter/2)),y+((int)(diameter*0.7)));//left leg
page.drawLine(x+((int)(diameter/2)),y+((int)(diameter*0.7)),x+diameter, y+diameter);//right leg
page.drawRect(x, y, diameter, diameter);// Square of Preportion
if(doubled == true)
{
page.drawString("Oops, looks like I didn't finish it.", x, y+diameter+10);
}
}
public void setDiameter (int size)
{
diameter = size;
}
public void setColor (Color shade)
{
hue = shade;
}
public void setX (int upperX)
{
x = upperX;
}
public void setY (int upperY)
{
y = upperY;
}
public int getDiameter ()
{
return diameter;
}
public Color getColor ()
{
return hue;
}
public int getX ()
{
return x;
}
public int getY ()
{
return y;
}
}
So I need to use a for loop in my driver so that it draws them in random spots. The program above is set up properly, I just need some help with my driver. I don't get how to use the loop. I already have the shell for my driver:
Code java:
import javax.swing.*;
import java.awt.*;
public class SplatPanel extends JPanel
{
private Man Object;
//-----------------------------------------------------------------
// Constructor: Creates five Pumpkin objects.
//-----------------------------------------------------------------
public SplatPanel()
{
Object = new Man(size, hue, x, y, doubled);
setPreferredSize (new Dimension(300, 200));
setBackground (Color.black);
}
public void paintComponent (Graphics page)
{
super.paintComponent(page);
for (int x = 0;x<10;x++)
{
Object.draw(page);
}
}
}
Re: Creating multiple objects with a for loop
For future reference, Java != Javascript.
A loop does exactly what it sounds like: it loops through a section of code.
Did you want the people to change locations with each call to the paintComponent method? Or to randomly place the people, then don't move them through the life of the SplatPanel?
Think about how you would accomplish these two similar (but different) tasks.
Hints:
1. Where should your Man Object(s) be constructed?
2. Should you only have one Man object, or does having multiple make more sense?
Re: Creating multiple objects with a for loop
Yeah, the people should randomly change with each run of the SplatPanel.. I think perhaps I should try constructing the Object within the for loop? But I don't understand how implement the "randomness", if that makes sense