**Tetris resources**
The basic falling item, with a Key Listener:
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 Tetris extends JPanel implements KeyListener, ActionListener
{
public static int WIDTH=800;
public static int HEIGHT=600;
private Font titleFont, regularFont;
private int x,y;
private Timer timer1, timer2;
public Tetris()
{
//initialize variables here...
titleFont = new Font("Roman", Font.BOLD, 18);
regularFont = new Font("Helvetica", Font.PLAIN, 12);
y=0;
x=200;
timer1 = new Timer(50, this); //1000=1 seconds
timer2 = new Timer(2000, this); //1000=1 seconds
timer1.start();
}
public static void main(String[] args) {
Tetris app= new Tetris();
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("Tetris Example", 20, 20);
g.setColor(Color.BLACK);
g.setFont(regularFont);
g.drawString("y = "+y, 20, 40);
g.fillRect(x, y, 10, 10);
}
// These 3 methods need to be declares to implement the KeyListener Interface
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
int code=e.getKeyCode();
if (code ==39) // right
x=(x+1)%HEIGHT;
else if (code == 37 && x>0) //left
x--;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==timer1){
y=(y+1)%WIDTH;
}
repaint();
}
}
You may wish to make a Shape class which has an ArrayList which will have a draw method, an.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.util.ArrayList;
public class Shape
{
private int x,y, size;
private ArrayList boxes;
private Color color;
Shape(int x, int y, int[] xPoints, int[] yPoints)
{
this.x=x;
this.y=y;
int n = xPoints.length;
color = Color.RED;
boxes = new ArrayList();
}
public void draw(Graphics g)
{
for (Rectangle r:boxes) {
g.setColor(color);
g.fillRect(r.x, r.y, r.width, r.height);
g.setColor(Color.BLACK);
g.drawRect(r.x, r.y, r.width, r.height);
}
}
}