Saat ini,
saya sedang belajar membuat game menggunakan bahasa pemrograman Java. Kata pembuatnya
disebut Puzzle. Berdasarkan hasilnya, saya memahami bahwa game Puzzle ini menjadikan
sebuah foto acak-acakan, kemudian saya harus menyusunnya sehingga menjadi
foto/gambar utuh.
Ini ilustrasinya:
Gambar di
atas memiliki gambar utuh dalam bentuk lingkaran yang berwarna merah, dan garis
sisi berwarna hitam. Berikut ini langkah-langkahnya:
1. Buka NetBeans
IDE 6.8
2. File – New Project
3. Klik Java
4. Klik Java
Application
5. Klik tombol
Next
6. Ketik di kotak
Project Name: MembuatPuzzle
7. Tentukan lokasi
dan nama folder di Project Location, misal D:\100java
8. Hilangkan tanda
centang pada kotak Create Main Class
9. Klik Tombol
Finish
10. Klik kanan
project MembuatPuzzle
11. Klik New
12. Klik Java
Package
13. Lihat gambar
berikut:
14. Ketik di kotak
Package Name: MembuatPuzzlePackage
15. Klik Tombol
Finish
16. Klik kanan pada
MembuatPuzzlePackage
17. Lihat gambar
berikut:
18. Ketik di kotak
Class Name: MembuatPuzzleJFrame
19. Klik tombol
Finish
20. Klik tombol
Source
21. Lihat gambar
berikut ini:
22. Di bawah teks package
MembuatPuzzlePackage;
Ketik script berikut:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
23. Di bawah teks public
class MembuatPuzzleJFrame extends javax.swing.JFrame {
Ketik script berikut:
private JPanel centerPanel;
private JButton button;
private JLabel label;
private Image source;
private Image image;
int[][] pos;
int width, height;
24. Ubah teks public
class MembuatPuzzleJFrame extends javax.swing.JFrame {
Menjadi:
public class MembuatPuzzleJFrame extends JFrame implements ActionListener{
25. Hapus teks initComponents();
26. Di bawah teks public
MembuatPuzzleJFrame() {
Ketik script berikut:
pos = new int[][] {
{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(Puzzle.class.getResource("bulat.jpg"));
ImageIcon sid = new
ImageIcon(MembuatPuzzleJFrame.class.getResource("bulat.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(220, 280);
setTitle("Membuat
Puzzle");
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
public static void
main(String[] args) {
new MembuatPuzzleJFrame();
}
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, labelIndex);
centerPanel.add(button,labelIndex);
centerPanel.validate();
}
}
27. Kemudian, hapus
semua tulisan berikut ini:
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new
Runnable() {
public void run() {
new
MembuatPuzzleJFrame().setVisible(true);
}
});
}
28. Simpan gambar dengan
nama bulat.jpg di D:\100java\MembuatPuzzle\src\MembuatPuzzlePackage
Atau pada folder src\MembuatPuzzlePackage sesuai lokasi folder
anda
Catatan:
Saya sendiri membuat gambar bulat.jpg mengunakan Paint (Start – All Programs
– Accessories – Paint)
Atau copy saja gambar ini:
29. Jalankan
program di Netbeans (Run – Run File)
30. Hasilnya seperti
ini:
Keterangan:
Yang tanda
bitang merah itu sebenarnya kotak kosong. Apabila salah satu pecahan gambar
yang paling dekat dengan kotak kosong tersebut diklik, maka potongan gambar
tersebut akan menempati kotak kosong tersebut.
Apabila kita
acak-acak, kemudian disusun kembali, maka permainannya cukup memusingkan juga.
he…he..
31. Selesai.
Sebagai
latihan, saya juga meletakkan beberapa gambar dan foto di D:\100java\MembuatPuzzle\src\MembuatPuzzlePackage
Kemudian mengganti
nama gambar/foto pada script ini:
ImageIcon
sid = new ImageIcon(MembuatPuzzleJFrame.class.getResource("bulat.jpg"));
Salah satunya foto saya sendiri:
Awalnya seperti ini:
Setelah program dijalankan, fotoku jadi hancur begini:
***
Ungkapan
Terimakasih sebesar-besarnya saya sampaikan kepada Mas Hendi Santika yang telah
berbagi script program game di atas pada
blognya.
Sumber:
hendisantika.wordpress.com/2013/12/05/membuat-game-puzzle-dengan-java
"Boleh Konsultasi Masuk Jurusan Sistem Informasi via IG atau Tiktok."
|
Tips Skripsi Program Studi Sistem Informasi |
|
bagaimana cara mengubah ukuran dalam petak2 tersebut, klo di gambar bulat kan per petak nya ada gambar, tp gak full , cuma di tengahnya aja, sedangkan di latihan foto anda kan per petaknya gambarnya full.. script mana yg harus di ubah, maklum masi awam.. thanks
ReplyDeleteK, sorry mcau tanya, pas aku run, ga bs, doesnt main class set,berarti yg kurang apanya ya kk...?
ReplyDeleteCoding d classnya ada yg kurang. Kurang lebhnya seperti itu
Deleteterima kasih gan,, share nya bagus,, semoga makin lebih baik
ReplyDeleteMantep kak
ReplyDeletekk kenapa gak jalan , trus di imageiconnya ada yang error class nya
ReplyDeleteiya sama... tapi terimakasih atas sharenya ... cuman ada beberapa di bawah eror
ReplyDelete