MiniTetris
package minitetris;
import javax.swing.*;
import java.awt.*;
public class MiniTetris extends JFrame{
public static void main(String[ ] a){
new MiniTetris();
}
public MiniTetris() {
this.setSize(400,400);
this.centerInScreen();
// fai in modo che la chiusura della finestra
// termini l'applicazione
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
//
this.setLayout(new BorderLayout());
//
Brick b=new Brick();
MainPanel mp=new MainPanel(b);
this.add(mp,BorderLayout.CENTER);
ControlPanel cp= new ControlPanel(b);
this.add(cp,BorderLayout.SOUTH);
// rendi la finestra visibile
this.validate();
this.setVisible(true);
Animator a=new Animator(b,mp);
a.start();
}
private void centerInScreen() {
// trova le dimensioni dello schermo e della finestra
Dimension screenSize =
Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = this.getSize();
// assicurati che la finestra non sia più grande dello schermo
if (frameSize.height > screenSize.height)
frameSize.height = screenSize.height;
if (frameSize.width > screenSize.width)
frameSize.width = screenSize.width;
// centra la finestra nello schermo
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
}
}
MainPanel
package minitetris;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class MainPanel extends JPanel{
Color bgColor=Color.GRAY;
Brick brick=null;
MainPanel(Brick b){
this.brick=b;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(bgColor);
brick.draw(g);
}
}
ControlPanel
package minitetris;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class ControlPanel extends JPanel implements ActionListener{
Brick brick=null;
final int UP_STEP=-20;
ControlPanel(Brick b){
brick=b;
JButton jb=new JButton("UP");
this.add(jb);
jb.addActionListener(this);
this.validate();
}
public void actionPerformed(ActionEvent e) {
brick.verticalMove(UP_STEP);
}
}
Brick
package minitetris;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
public class Brick {
Dimension size;
Point position;
Color color=Color.RED;
Graphics g=null;
Brick(){
size=new Dimension(50,80);
position=new Point(100,100);
}
void verticalMove(int dy){
position.y+=dy;
}
void draw(Graphics g){
g.setColor(color);
g.fillRect(position.x, position.y, size.width, size.height);
}
}
Animator
package minitetris;
import java.awt.Graphics;
public class Animator extends Thread {
Brick brick=null;
final int PAUSE=50;
final int DY=1;
Graphics g=null;
MainPanel p=null;
Animator(Brick brick,MainPanel p) {
this.brick=brick;
this.p=p;
}
public void run() {
while (true) {
try {
Thread.sleep(PAUSE);
} catch (InterruptedException ex) {}
brick.verticalMove(DY);
p.repaint();
}
}
}