Upload
arman-setyawan
View
4
Download
0
Embed Size (px)
Citation preview
5/23/2018 04-JavaGame
1/16
DISCLAIMER
Seluruh dokumen E-Trik di dalam CD ini dapat digunakandan disebarkan secara bebas untuk tujuan belajar bukankomersial (non-profit), dengan syarat tidak menghapusatau merubah atribut penulis dan pernyataan copyright
yang disertakan dalam dokumen. Tidak diperbolehkanmelakukan penulisan ulang, kecuali mendapatkan ijin
tertulis terlebih dahulu dari Penerbit Maxikom.
5/23/2018 04-JavaGame
2/16
1
E-Trik JAVA
Game Sederhana
IRAWAN
e-mail : [email protected]
Penerbit Maxikom
Jl. Residen H. Abdul Rozak No. 33 B5-B6
Palembang 30114.
e-mail: [email protected]
Fax. (0711) 717598
www.maxikom.co.id
5/23/2018 04-JavaGame
3/16
2
Game Sederhana
Pada E-Trik berikut ini kita akan membuat game sederhana dengan JCreatorLE3.0. Pada game ini pemain di ajak untuk mencari gambar yang sama dengan
jumlah mencoba yang seminimal mungkin. Yang paling sedikit jumlah
mencobanya adalah pemain paling tinggi nilainya. Pada game sederhana ini
kita akan menerapkan logika bagaimana menampilkan gambar secara acak dan
menggunakan file dengan format gambar seperti jpg ,bmp, serta format gambar
lainnya pada Java.
A Menyiapkan Program.
1. Sebelum membuat program Java, jangan lupa untuk menginstall JRE
dan JDK agar program Java bisa dijalankan pada Windowsanda.
Dalam pembahasan ini kita akan menggunakan JRE dan JDK versi
1.6.0 yang bisa anda download di http://www.java.com.
2. Buka program JCreator anda klik TombolStart pada
WindowsTaskbar. Kemudian klik Programs | JCreatorV3 LE |
JCreator LE, lihat Gambar 2.
Gambar 1 Tampilan Program
5/23/2018 04-JavaGame
4/16
Game Sederhana
3
Copyright Maxikom, 2007
3. Kemudian kita akan membuat Class Java dengan nama CariGambar.
KlikMenuFile | New | Fileseperti Gambar 3.
4. Setelah itu akan muncul kotak dialog File Wizard, lalu pilih Java File
kemudian klik Tombol . LihatGambar 4.
Gambar 3 Membuat File Baru
12 3
Gambar 2 Membuka Aplikasi JCreator 3.0 LE
1
2
3 4
5/23/2018 04-JavaGame
5/16
Game Sederhana
4
Copyright Maxikom, 2007
5. Beri nama file dengan nama CariGambar, kemudian klik Tombol
untuk menentukan lokasi tempat anda menyimpan file. Lihat
Gambar 5.
6. Jika sudah maka tampilannya akan seperti Gambar 6
Gambar 4 Membuat File Java
Pilih Java File
Klik Next
Gambar 5 Menyimpan File CariGambar.java
1
2
5/23/2018 04-JavaGame
6/16
Game Sederhana
5
Copyright Maxikom, 2007
7. Dalam pembuatan program ini dibutuhkan 13 File gambardengan
formatjpg yang nantinya 12 gambarakan digunakan sebagaiImage
dalam game dan 1 gambar sebagaiIcon. UntukIconpilihlah sebuah
Filegambar dengan formatjpg. Kemudian ubah ukurannya menjadi
100x100 Pixeldengan menggunakan program Image Editorapa saja.
Kemudian beri nama Filegambar tersebut dengan nama background.Pada contoh gambar berikut Filedi Resizedan di Rename dengan
menggunakan program ACDSee. Lihat Gambar 7.
Gambar 6 TampilanFile Selesai di Simpan
Judul File
Jendela Kode
Gambar 7 Tampilan File background.jpg
Program ACDSee
Beri nama background
Ukuran = 100x100
Contoh gambar
5/23/2018 04-JavaGame
7/16
Game Sederhana
6
Copyright Maxikom, 2007
8. Untuk Imagepilihlah 12 gambarformatjpg yang berbeda dengan
ukuran yang sama seperti File background. Kemudian beri nama
keduabelas gambar tersebut dengan nama image1-image12 (tanpa
spasi). Lihat Gambar 8.
9. Kemudian simpanlah gambar-gambar yang sudah diEdittadi ke dalam
Folderyang sama dengan FileCariGambar.java. Lihat Gambar 9.
Gambar 8 Tampilan File image1.jpg-image12.jpg
Gambar 9 File-File Disimpan Dalam Satu Folder
5/23/2018 04-JavaGame
8/16
Game Sederhana
7
Copyright Maxikom, 2007
B Listing Program.
1. Pada Jendela KodeFileCariGambar.Javaketikkan kode program
berikut ini :
123456789
10111213141516171819202122232425262728
29303132333435363738
3940
import java.io.*; import java.awt.*; import javax.swing.*; import java.awt.event.ActionListener; public class CariGambar extends javax.swing.JFrame implements ActionListener { int[] tilemap = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12}; JToggleButton[] cards = new JToggleButton[24];
Object card1Object = null; Object card2Object = null; String card1Image = ""; String card2Image = ""; int card1Num = 0; int card2Num = 0; int cardsSelected = 0; int cardsLeft = 24; int numTries = 0; public CariGambar() {
initComponents(); shuffleCards(); } private void initComponents() { setDefaultCloseOperation(javax.swing. WindowConstants.EXIT_ON_CLOSE); setSize(800,600); setTitle("Cari Gambar"); JPanel buttonPane = new JPanel();
JPanel cardPane = new JPanel(); buttonPane.setLayout(new GridBagLayout()); GridBagConstraints b = new GridBagConstraints(); b.fill = GridBagConstraints.HORIZONTAL; cardPane.setLayout(new GridLayout(6,6)); numTriesLabel = new JLabel(); b.gridx = 0; b.gridy = 1; buttonPane.add(numTriesLabel,b); replayButton = new JButton();
b.gridx = 0; b.gridy = 0;
5/23/2018 04-JavaGame
9/16
Game Sederhana
8
Copyright Maxikom, 2007
414243
44454647484950515253
54555657585960616263
646566676869707172
73747576777879808182
8384
buttonPane.add(replayButton,b); exitButton = new JButton(); b.gridx = 1;
b.gridy = 0; buttonPane.add(exitButton,b); numTriesLabel.setText("Total Coba: " + numTries +" x"); replayButton.setMnemonic('S'); replayButton.setText("Acak Gambar"); replayButton.setToolTipText("Acak Gambar"); replayButton.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed
(java.awt.event.ActionEvent evt) { replayButtonActionPerformed(evt); } }); exitButton.setMnemonic('x'); exitButton.setText("Keluar"); exitButton.setToolTipText("Keluar"); exitButton.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed
(java.awt.event.ActionEvent evt) { exitButtonActionPerformed(evt); } }); for (int i = 0; i < cards.length; i++) { cards[i] = new JToggleButton("Card: " + i); cards[i].addActionListener(this); cards[i].setSize(100,100);
cards[i].setIcon(new ImageIcon (".\\background.jpg")); cards[i].setText(""); cardPane.add(cards[i]); } getContentPane().add(buttonPane, BorderLayout.SOUTH); getContentPane().add(cardPane, BorderLayout.NORTH); }
private void replayButtonActionPerformed (java.awt.event.ActionEvent evt) {
5/23/2018 04-JavaGame
10/16
Game Sederhana
9
Copyright Maxikom, 2007
85868788899091929394959697
9899100101102103104105106107
108109110111112113114115116117118119120121122123124125126
127128
shuffleCards(); } private void shuffleCards() { int[] temparray = new int[3]; for (int shuffle = 0; shuffle < 5; shuffle++){ for (int x = 0; x < tilemap.length; x++) { temparray[0] = (int)Math.floor (Math.random()*24); temparray[1] = tilemap[temparray[0]]; temparray[2] = tilemap[x]; tilemap[x] = temparray[1]; tilemap[temparray[0]] = temparray[2]; }
} for (int i = 0; i < cards.length; i++) { cards[i].setSelectedIcon(new ImageIcon (".\\image"+tilemap[i]+".jpg")); cards[i].setText("" + i); cards[i].setEnabled(true); cards[i].setVisible(true); cards[i].setSelected(false); } cardsLeft = 24;
numTries = 0; numTriesLabel.setText("Total Coba: " + numTries+" x"); } public void actionPerformed (java.awt.event.ActionEvent e) { int iconMarker = 0; int nameMarker = 0; String card1String = ""; String card2String = ""; String nameText = ""; cardsSelected++; if (cardsSelected == 3) { card1Object = null; cards[card1Num].setSelected(false); card2Object = null; cards[card2Num].setSelected(false); cardsSelected = 1;
} if (card1Object == null) {
5/23/2018 04-JavaGame
11/16
Game Sederhana
10
Copyright Maxikom, 2007
129130131
132133134135136137138139140141
142143144145146147148149150151
152153154155156157158159160
161162163164165166167168169170
171172
card1Object = e.getSource(); card1String = card1Object.toString(); iconMarker = card1String.lastIndexOf
(",selectedIcon="); nameMarker = card1String.lastIndexOf (",text="); card1Image = card1String.substring(iconMarker +14,nameMarker); nameText = card1String.substring(nameMarker +6,card1String.length()-1); card1Num = Integer.parseInt(nameText); } else if (card2Object == null) {
card2Object = e.getSource(); card2String = card2Object.toString(); iconMarker = card2String.lastIndexOf (",selectedIcon="); nameMarker = card2String.lastIndexOf (",text="); card2Image = card2String.substring(iconMarker +14,nameMarker); nameText = card2String.substring(nameMarker +6,card2String.length()-1);
card2Num = Integer.parseInt(nameText); } if (card1Object != null && card2Object != null) { numTries++; numTriesLabel.setText("Total Coba: " + numTries +" x"); if (card1Image.equals(card2Image) && (card1Num != card2Num)) {
cards[card1Num].setVisible(false);
cards[card2Num].setVisible(false); card1Object = null; card2Object = null; cardsLeft -= 2; cardsSelected = 0; } } if (cardsLeft == 0) { getRootPane().setDefaultButton(replayButton); numTriesLabel.setText
("Selamat! Anda Selesai Dalam : " + numTries+" x Mencoba");
5/23/2018 04-JavaGame
12/16
Game Sederhana
11
Copyright Maxikom, 2007
173174175
176177178179180181182183184185
186187188189190191
} } private void exitButtonActionPerformed(java.awt.event
.ActionEvent evt) { System.exit(0); } public static void main(String args[]) { java.awt.EventQueue.invokeLater( new Runnable() { public void run() { new CariGambar().setVisible(true); } });
} private javax.swing.JPanel cardPane; private javax.swing.JButton exitButton; private javax.swing.JButton replayButton; private javax.swing.JLabel numTriesLabel; }
Keterangan :
- Baris 1-4merupakan fungsi Java API yang akan kita gunakan untuk memanggil kompenen-komponen GUI(Graphical User Interface) Java.
- Baris 5-6mendeklarasikanclass Carigambar.
- Baris 7-22mendeklarasikan Variabel dan Object yang akan digunakan.
- Baris 23-82kode-kode pengaturan tampilan dan posisi Objectyang digunakan.
- Baris 83-86memanggilMethod shuffleCards.
- Baris 87-111kodeMethod shuffleCards dengan logikaArray yang berfungsi
untuk mengacak file image1-12kemudian menampilkannya kembali.
- Baris 112-174merupakan kode-kode logika dalam game AcakGambar.
Pada Baris 115-120 kode-kode untuk mengosongkan nilai Variabel.
Pada Baris 121-127 kode-kode logika jika pemain mengklik gambar ke-3 maka secara otomatis gambar 1dan 2 dianggap tidak terseleksi, karena pemain hanya
boleh melihat 2 gambar saja.
- Baris 128-153kode-kode logika jika salah satu dari sepasang gambar yang dipilih
tidaklah sama.
- Baris 154-167kode-kode logika jika semua gambar dari sepasang gambar yang
dipilih adalah gambar yang sama.
- Baris 168-174kode-kode logika jika semua gambar berhasil dibuka, maka game
selesai.
5/23/2018 04-JavaGame
13/16
Game Sederhana
12
Copyright Maxikom, 2007
2. Kemudian klikIconCompile padaMenu Toolbar agar program
CariGambar.javadiubah menjadiCariGambar.class. LihatGambar10.
C Menjalankan Program.
1. Untuk menjalankan program klikIconExecute File padaMenu
Toolbar lihat Gambar 11.
Keterangan :
- Baris 175-178kode-kode perintah untuk keluar dari program ketika Tombol Exit
di klik.
- Baris 179-186kode-kode perintah untuk menampilkan File-file gambar pada saat program dijalankan.
- Baris 187-190kode-kode perintah memberi nama pada komponen-komponen
Swing.
- Baris 191akhir blok kode class CariGambar.
Gambar 10 Meng-Compile kode FileCariGambar.java
Klik Compile
Status Compile
5/23/2018 04-JavaGame
14/16
Game Sederhana
13
Copyright Maxikom, 2007
2. Tampilan program akan terlihat seperti Gambar 12.
3. Untuk mengulang atau memulai permainan klikTombolAcak Gambar.
Jika ingin berhenti klik Tombol Keluar. Lihat Gambar 13.
Gambar 11 Menjalankan Program
Klik Execute File
Gambar 12 Tampilan Program CariGambar
5/23/2018 04-JavaGame
15/16
Game Sederhana
14
Copyright Maxikom, 2007
4. Untuk bermain klik keduapuluhempat gambar yang ada dan carilah
sepasang gambar yang sama. Lihat Gambar 14.
Memulai / Mengulang Game Berhenti
Gambar 13 Fungsi Tombol
Gambar 14 Cara Bermain
5/23/2018 04-JavaGame
16/16
Game Sederhana
15
Copyright Maxikom, 2007
5. Jika berhasil menemukan sepasang gambar yang sama, maka secara
otomatis sepasang gambar tersebut hilang dari tampilan. Lihat
Gambar 15.
6. Jika berhasil menyelesaikan game, maka akan nilai jumlah berapa kalianda mencoba membuka sepasang gambar. Semakin kecil jumlah
mencoba nya berarti semakin tinggi nilainya. Lihat Gambar 16.
Gambar 15 Tampilan Menemukan Gambar Yang Sama
Gambar 16 Tampilan Game SelesaiJumlah Mencoba