====== Stacker ======
[[https://mathorama.com/apcs/pmwiki.php?n=Main.TimerApplicaiton|Timer App]]
[[https://mathorama.com/apcs2/StakerGameJustin23.jar|StakerGameJustin23.jar]]
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;
}
}
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();
}
}