Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionAdapter;
- import java.io.File;
- import javax.swing.JFileChooser;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.filechooser.FileFilter;
- public class PicturePuzzlePanel extends JPanel {
- private static final long serialVersionUID = 5106570002791771952L;
- private Game game;
- private boolean dragged;
- private int time;
- public PicturePuzzlePanel() {
- game = new Game();
- time = 0;
- dragged = false;
- setFocusable(true);
- requestFocus();
- addMouseMotionListener(new MouseMotionAdapter() {
- @Override
- public void mouseDragged(MouseEvent e) {
- if(!dragged) {
- dragged = true;
- game.fixOffsets(e.getX(), e.getY());
- }
- game.updateOffsets(e.getX(), e.getY());
- repaint();
- }
- @Override
- public void mouseMoved(MouseEvent e) {
- if(dragged) {
- game.releaseOffsets();
- dragged = false;
- repaint();
- if(game.gameOver()) {
- JOptionPane.showMessageDialog(PicturePuzzle.frame, "Congratulations! You win... Time taken in seconds : " + time);
- game = new Game();
- time = 0;
- repaint();
- }
- }
- }
- });
- addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
- PicturePuzzle.frame.dispose();
- }
- if(e.getKeyCode() == KeyEvent.VK_SPACE) {
- JFileChooser fileChooser = new JFileChooser();
- fileChooser.setAcceptAllFileFilterUsed(false);
- fileChooser.setFileFilter(new ImageFilter());
- int ret = fileChooser.showOpenDialog(PicturePuzzle.frame);
- if(ret == JFileChooser.APPROVE_OPTION) {
- PuzzlePic.setPuzzlePicture(fileChooser.getSelectedFile());
- game = new Game();
- time = 0;
- repaint();
- }
- }
- }
- });
- PicturePuzzle.frame.setVisible(true);
- Thread th = new Thread(new Timer());
- th.start();
- }
- @Override
- public void update(Graphics g) {
- paint(g);
- }
- @Override
- public void paint(Graphics g) {
- Graphics2D g2d = (Graphics2D)g;
- g2d.setColor(Color.black);
- g2d.fillRect(0, 0, getWidth(), getHeight());
- for(int i = 0; i < 36; i++) {
- g2d.drawImage(game.getImage(i), game.getX(i), game.getY(i), this);
- }
- }
- private class ImageFilter extends FileFilter {
- public boolean accept(File f) {
- if (f.isDirectory())
- return true;
- String s = f.getName();
- s=s.toLowerCase();
- if (s.endsWith(".jpg") || s.endsWith(".png") || s.endsWith(".gif"))
- return true;
- return false;
- }
- public String getDescription() {
- return "Image Files(*.jpg *.png *.gif)";
- }
- }
- private class Timer implements Runnable {
- @Override
- public void run() {
- while(PicturePuzzle.frame.isVisible()) {
- try {
- Thread.sleep(1000);
- }
- catch(InterruptedException e) {
- e.printStackTrace();
- }
- time++;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement