Belajar Membuat Games Puzzel Dengan Netbeans

Belajar sedikit coding dengan java netbean ini sangat mudah bagi yang mengerti.hehehe
disini saya sediakan coding games puzzel mungkin masih ada kekurangan tapi sedikitnya sudah bisa di ran.
untuk agan yang sudah berpengalaman tolong di bantu apa saja kekurangannya. sama-sama lagi belajar

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package puzzel;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.awt.Image;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import static jdk.nashorn.internal.objects.NativeJava.extend;
/**
 *
 * @author HP
 */
public class Puzzel extends JFrame implements ActionListener {
    
private JPanel centerPanel;
private JButton button;
private JLabel label;
private Image source;
private Image image;
int[]post;
int width,height;
    private int[][] pos;
    public Puzzel(){
    Integer[][] pos = new Integer[][]{
        {0,1,2},
        {3,4,5},
        {6,7,8},
        {9,10,11},
    };
        centerPanel=new JPanel();
        centerPanel.setLayout(new GridLayout(4, 4, 0, 0));
        ImageIcon sid=new ImageIcon(Puzzel.class.getResource("nurdin.jpg"));
        source = sid.getImage();
        width =sid.getIconWidth();
        height =sid.getIconHeight();
        add(Box.createRigidArea(new Dimension(0,5)), BorderLayout.NORTH);
        add(centerPanel,BorderLayout.CENTER);
        
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 3; j++) {
                if(j==2&&i==3){
                    label=new JLabel("");
                    centerPanel.add(label);
                }else{
                button=new JButton();
                button.addActionListener(this);
                centerPanel.add(button);
                image=createImage(new FilteredImageSource(source.getSource(), 
new CropImageFilter(j*width/3, i*height/4, (width/3)+1, height/4)));
                button.setIcon(new ImageIcon(image));
                
            }
            }
        }    setSize(200, 280);
        setTitle("Puzzel");
        setResizable(false);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setVisible(true);
    
    }
    public static void main(String[] args) {
    new Puzzel();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
    JButton button=(JButton)e.getSource();
    Dimension size=button.getSize();
    int labelX=label.getX();
    int labelY=label.getY();
    int buttonX=button.getX();
    int buttonY=button.getY();
    int buttonPosX=buttonX/size.width;
    int buttonPosY=buttonY/size.height;
    
    int buttonIndex= pos[buttonPosY][buttonPosX];
    if(labelX==buttonX && (labelY-buttonY)==size.height){
        int labelIndex= buttonIndex + 3;
        centerPanel.remove(buttonIndex);
        centerPanel.add(label,buttonIndex);
        centerPanel.add(button,labelIndex);
        centerPanel.validate();
    }
    if(labelX==buttonX && (labelY-buttonY)==-size.height){
        int labelIndex = buttonIndex - 3;
        centerPanel.remove(labelIndex);
        centerPanel.add(button,labelIndex);
        centerPanel.add(label, buttonIndex);
        centerPanel.validate();
    }
     if(labelY==buttonY && (labelX-buttonX)==-size.width){
        int labelIndex = buttonIndex + 1;
        centerPanel.remove(buttonIndex);
        centerPanel.add(label, buttonIndex);
        centerPanel.add(button, labelIndex);
        centerPanel.validate();
    }
    if(labelY==buttonY && (labelX-buttonX)==-size.width){
        int labelIndex = buttonIndex - 1;
        centerPanel.remove(buttonIndex);
        centerPanel.add(label, buttonIndex);
        centerPanel.add(button, labelIndex);
        centerPanel.validate();
}
    }
}
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package puzzel;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.awt.Image;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import static jdk.nashorn.internal.objects.NativeJava.extend;
/**
 *
 * @author HP
 */
public class Puzzel extends JFrame implements ActionListener {
    
private JPanel centerPanel;
private JButton button;
private JLabel label;
private Image source;
private Image image;
int[]post;
int width,height;
    private int[][] pos;
    public Puzzel(){
    Integer[][] pos = new Integer[][]{
        {0,1,2},
        {3,4,5},
        {6,7,8},
        {9,10,11},
    };
        centerPanel=new JPanel();
        centerPanel.setLayout(new GridLayout(4, 4, 0, 0));
        ImageIcon sid=new ImageIcon(Puzzel.class.getResource("nurdin.jpg"));
        source = sid.getImage();
        width =sid.getIconWidth();
        height =sid.getIconHeight();
        add(Box.createRigidArea(new Dimension(0,5)), BorderLayout.NORTH);
        add(centerPanel,BorderLayout.CENTER);
        
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 3; j++) {
                if(j==2&&i==3){
                    label=new JLabel("");
                    centerPanel.add(label);
                }else{
                button=new JButton();
                button.addActionListener(this);
                centerPanel.add(button);
                image=createImage(new FilteredImageSource(source.getSource(), 
new CropImageFilter(j*width/3, i*height/4, (width/3)+1, height/4)));
                button.setIcon(new ImageIcon(image));
                
            }
            }
        }    setSize(200, 280);
        setTitle("Puzzel");
        setResizable(false);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setVisible(true);
    
    }
    public static void main(String[] args) {
    new Puzzel();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
    JButton button=(JButton)e.getSource();
    Dimension size=button.getSize();
    int labelX=label.getX();
    int labelY=label.getY();
    int buttonX=button.getX();
    int buttonY=button.getY();
    int buttonPosX=buttonX/size.width;
    int buttonPosY=buttonY/size.height;
    
    int buttonIndex= pos[buttonPosY][buttonPosX];
    if(labelX==buttonX && (labelY-buttonY)==size.height){
        int labelIndex= buttonIndex + 3;
        centerPanel.remove(buttonIndex);
        centerPanel.add(label,buttonIndex);
        centerPanel.add(button,labelIndex);
        centerPanel.validate();
    }
    if(labelX==buttonX && (labelY-buttonY)==-size.height){
        int labelIndex = buttonIndex - 3;
        centerPanel.remove(labelIndex);
        centerPanel.add(button,labelIndex);
        centerPanel.add(label, buttonIndex);
        centerPanel.validate();
    }
     if(labelY==buttonY && (labelX-buttonX)==-size.width){
        int labelIndex = buttonIndex + 1;
        centerPanel.remove(buttonIndex);
        centerPanel.add(label, buttonIndex);
        centerPanel.add(button, labelIndex);
        centerPanel.validate();
    }
    if(labelY==buttonY && (labelX-buttonX)==-size.width){
        int labelIndex = buttonIndex - 1;
        centerPanel.remove(buttonIndex);
        centerPanel.add(label, buttonIndex);
        centerPanel.add(button, labelIndex);
        centerPanel.validate();
}
    }
}








Comments