package com.spconger.GraphicsExamples;
import acm.graphics.*;
import acm.program.*;
import acm.io.*;
import java.awt.Color;
import java.awt.color.*;
@SuppressWarnings("serial")
public class Examples extends GraphicsProgram {
/**This class will provide some
* examples of graphics in acm
* 6/26/2013
*/
public void run(){
//hello();
println(getParent().getParent().getWidth());
getParent().getParent().setBounds(400, 500,500,400);
//setSize(400,500);
//makeRectangle();
createOval();
}
private void hello(){
IODialog dialog = new IODialog();
String name = dialog.readLine("Enter your name");
GLabel label = new GLabel("hello, " + name,50, 20);
label.setColor(Color.MAGENTA);
add(label);
GLabel label2 = new GLabel("the color of label 1 is "
+ label.getColor(), 20, 100);
add(label2);
}
private void makeRectangle(){
GRect rect = new GRect(40,50, 60, 30);
rect.setFillColor(Color.PINK);
rect.setColor(Color.PINK);
rect.setFilled(true);
add(rect);
GRect rect2 = new GRect(50,60, 60, 30);
rect2.setFillColor(Color.BLUE);
rect2.setFilled(true);
add(rect2);
}
private void createOval(){
GOval oval = new GOval(50, 60, 120,120);
oval.setFillColor(Color.GREEN);
oval.setFilled(true);
add(oval);
//take half the value of each height and width
//and add it to the x y
GOval oval2=new GOval(80,90,60,60);
oval2.setFillColor(Color.BLUE);
oval2.setFilled(true);
add(oval2);
}
}
Here is the infinite loop with the turtle
package com.spconger.TurtleOne;
import acm.graphics.*;
import acm.program.*;
public class Program extends GraphicsProgram{
public void run(){
setSize(500,600);
turtleRun();
}
private void turtleRun(){
GTurtle portia = new GTurtle(25,50);
add(portia);
waitForClick();
while (true){
if(portia.getX() >= getWidth()){
portia.setDirection(180);
}
else if (portia.getX() <= 0){
portia.setDirection(0);
}
portia.forward(20);
}
}
}
Here is the bouncing ball
package com.spconger.MovingGraphics;
import java.awt.Color;
import acm.graphics.*;
import acm.graphics.GOval;
import acm.program.*;
public class BouncingBall extends GraphicsProgram{
// it is a good idea to set constants for any numbers
private final int FORMWIDTH=400;
private final int FORMHEIGHT=600;
private final int BALLDIAMETER=30;
public void run(){
setSize(FORMWIDTH, FORMHEIGHT);
movingBall();
}
private void movingBall(){
//this places the ball in the center of the screen
GOval ball = new GOval(FORMWIDTH/2-BALLDIAMETER/2,
FORMHEIGHT/2-BALLDIAMETER/2,
BALLDIAMETER,BALLDIAMETER);
ball.setFillColor(Color.RED);
ball.setFilled(true);
add(ball);
waitForClick();
int posX = -15;
int posY=10;
while(true){
//this makes it so when the ball hits the edges
//it reverse direction
if(ball.getX()>=FORMWIDTH-BALLDIAMETER || ball.getX() <=0){
posX=-posX;
}
//same for top and bottom
if (ball.getY()>=FORMHEIGHT-BALLDIAMETER || ball.getY() <=0){
posY = -posY;
}
ball.move(posX, posY);
//slight pause betwee positions
pause(50);
}
}
}