First of all I know that any program I write needs an applet. Therefore I'm going to make an applet class. I don't want the applet class to contain anything except for the frame so i did that...
Then I made the frame, I know that this frame is only going to contain the snowperson's face so I wrote that...it just instantiated the snow person's face...but the frame that I extended takes a container as a parameter...so mine takes a parameter and when I call super I hand the container to my parent so it know who to make the calls on...also, the shapes in the snowFace take a container as well as the filledOval the snowFace extends...so they need to be passed the same container...
Finally I made all of the Face Parts...then I went through and compiled it and then i ran it and everything was upside down! I forgot that in graphics the y coordinate is backwards...
I fixed that and then everything was dandy...
If you have questions just mail me... Amanda.
package SnowPerson.SnowPersonGP;
/**
* Package SnowPerson.SnowPersonGP
* class Applet
*
* Okay, so for this applet, I'm going to need to instantiate one
* thing again, because my applet should not contain too many things.
* But, what the applet should instantiate, in most programs, is a
* frame that contains everything. So, here it is...
* author aks
*/
public class Applet extends
GP.Containers.Applet {
/*It extends the GP.Containers.Applet class because that is the
calls that the suns know how to work with. It is just a nice
environment.
*/
private MyFrame _myFrame;
/*that is the name of the SnowPerson frame that I'm going to make...*/
public Applet() {
super();
/*to inherit all the properties of GP.Containers.Applet class...*/
_myFrame = new MyFrame(this);
/*The GP.Containers.Frame takes a container as a parameter
so, because this extends the GP.Containers.Applet class it
is a container I can pass in this applet, in order to do that
I write the word this because in java that refers to the current
class...
*/
}//public Applet()
}//public class Applet extends...
SnowFace
package SnowPerson.SnowPersonGP;
/**
* Package SnowPerson.SnowPersonGP
* class SnowFace
*
* This class Extends the GP.Graphics.Shape.FilledOval class...
* Therefore it has methods like setColor and setPosition...
* author aks
*/
public class SnowFace extends
GP.Graphics.FilledOval {
private double SIZE = 100;
/*everything will be drawn upon this constant so that we only have to
change one constant to change the entire face's size.
*/
private double POSITION = 200;
/*this puts it smack dab in the center...*/
private SnowEye _rightEye;
private SnowEye _leftEye;
private Mouth _mouth;
private Nose _nose;
/*these are the components of the face*/
public SnowFace (GP.Container container) {
super(container);
this.SetSize(new GP.Attributes.Size(SIZE, SIZE));
this.SetPosition(new GP.Attributes.Position(POSITION, POSITION));
this.SetColor(new GP.Attributes.Colors.White());
/*that line puts the face right in the middle of the frame
because the default size of a frame is 400, 400...
*/
_rightEye = new SnowEye(container, SIZE/4,
(POSITION+(SIZE/4)), (POSITION - (SIZE/4)));
_leftEye = new SnowEye(container, SIZE/4,
(POSITION -(SIZE/4)), (POSITION - (SIZE/4)));
_nose = new Nose(container,(SIZE/6), POSITION, POSITION);
/*that puts the nose in the center of the face*/
_mouth = new Mouth(container,(SIZE/6), POSITION, POSITION +(SIZE/4));
}//public SnowFace(Container
container)
}//public class SnowFace extends FilledOval
MyFrame
package SnowPerson.SnowPersonGP;
/**
* Package SnowPerson.SnowPersonGP
* class MyFrame
*
* This class is the frame it will instnatiate the face which will be
* another class... it takes a container as a parameter...
* author aks
*/
public class MyFrame extends GP.Containers.Frame {
private SnowFace _face;//this refers to the face it will instantiate
public MyFrame(GP.Container container) {
super(container);//so that the parent receives the same container
/*The frame that only takes one parameter in GP has a default
size and shape...we don't need to alter it unless we want to.
*/
_face = new SnowFace(container);
/*Instantiation of the SnowFace */
}//public MyFrame(Container container {
}//public class MyFrame....
Mouth
package SnowPerson.SnowPersonGP;
/**
* Package SnowPerson.SnowPersonGP
* class Mouth
* This class is the mouth... pretty boring i think...
* author aks
*/
public class Mouth extends GP.Graphics.FilledOval {
public Mouth(GP.Container container, double size, double x, double y) {
super(container);
this.SetSize(new GP.Attributes.Size(size, size/4));
this.SetPosition(new GP.Attributes.Position(x, y));
}
}
Nose
package SnowPerson.SnowPersonGP;
/**
* Package SnowPerson.SnowPersonGP
* class Nose
* This class is a square and it extends the GP.Graphics.FilledSquare
* class...not very interesting but oh well...
* author aks
*/
public class Nose extends GP.Graphics.FilledRectangle {
public Nose (GP.Container container, double size, double x, double y) {
super(container);
this.SetSize(new GP.Attributes.Size(size, size));
this.SetPosition(new GP.Attributes.Position(x, y));
this.SetColor(new GP.Attributes.Colors.Black());
}
}
SnowEye
package SnowPerson.SnowPersonGP;
/**
* Package SnowPerson.SnowPersonGP
* class SnowEye
*
* This class is an eye for the snowman...it contains a smaller eye for
* the pupil...it is a circle...
* author aks
*/
public class SnowEye extends GP.Graphics.FilledCircle {
public SnowEye(GP.Container container, double size, double x, double y) {
super(container);
this.SetColor(new GP.Attributes.Colors.Blue());
this.SetSize(new GP.Attributes.Size(size, size));
this.SetPosition(new GP.Attributes.Position(x, y));
GP.Graphics.FilledCircle pupil = new GP.Graphics.FilledCircle(container);
pupil.SetPosition(new GP.Attributes.Position(x, y + (size/4)));
pupil.SetColor(new GP.Attributes.Colors.Black());
pupil.SetSize(new GP.Attributes.Size((size/4), (size/4)));
}
}