Stacker

Timer App

StakerGameJustin23.jar

Box.java
import java.awt.*;
 
/**
 * Write a description of class Box here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Box
{
    // instance variables - replace the example below with your own
 
    private int x,y,width, direction, leftLimit, rightLimit ;
    private boolean falling;
 
 
 
    /**
     * Constructor for objects of class Box
     */
    public Box(int x, int y, int width)
    {
        // initialise instance variables
        this.x =x;
        this.y =y;
        direction = 1;
        this.width = width;
        leftLimit = x;
        rightLimit =  x+6*width;
        falling=false;
    }
 
    public void draw(Graphics g)
    {
        // put your code here
        g.setColor(Color.BLUE.darker());
        g.fillRect(x,y, width,width);
    }
 
    public void move()
    {
        if(direction ==0)
            return;
        int next = 20*direction; 
 
 
        if ( x+next > rightLimit  )
        {
            direction = -1;
        }
        if ( x+next < leftLimit  )
        {
            direction = 1;
        }
 
        if (falling){
            y += next;
        }else{
            x += next;
        }
    }
    public void stop(){
        direction =0;
        falling=true;
    }
}
BoxTester.java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
 
public class BoxTester extends JPanel implements KeyListener, ActionListener
{
    public static int WIDTH=800;
    public static int HEIGHT=800;
    private Font titleFont, regularFont;
    private int x;
    private Timer timer1, timer2;
        private Box b;
 
    public BoxTester() 
    {
 
        //initialize variables here...
        titleFont = new Font("Roman", Font.BOLD, 18);
        regularFont = new Font("Helvetica", Font.PLAIN, 12);
        x=0;
        b = new Box(75,175, 50);
        timer1 = new Timer(20, this); //1000=1 seconds
        //timer2 = new Timer(2000, this); //1000=1 seconds
        timer1.start();
 
 
    }
    public static void main(String[] args) {
        BoxTester app= new BoxTester();
        JFrame window = new JFrame("Timer Example");
        window.setSize(WIDTH, HEIGHT);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.getContentPane().add(app);
        window.addKeyListener(app);
        //window.pack();
        window.setVisible(true);
 
    }
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, getWidth(),getHeight());
        g.setColor(Color.BLUE);
        g.setFont(titleFont);
        g.drawString("Timer Example", 20, 20);
        g.setColor(Color.BLACK);
        g.setFont(regularFont);
        g.drawString("x = "+x, 20, 40);
        b.draw(g);
 
    }
    // update is a workaround to cure Windows screen flicker problem
    public void update(Graphics g){
        paint(g);
    }
 
    // These 3 methods need to be declares to implement the KeyListener Interface
    @Override
    public void keyTyped(KeyEvent e) {}
 
    @Override
    public void keyPressed(KeyEvent e) {}
 
    @Override
    public void keyReleased(KeyEvent e) {
       b.stop();
       }
    @Override
    public void actionPerformed(ActionEvent e) {
 
         if (e.getSource()==timer1){
             b.move();
             x++;
         }
         repaint();
    }
 
}