Seluruh dokumen E-Trik di dalam CD ini dapat digunakan
dan disebarkan secara bebas untuk tujuan belajar bukan komersial (non-prot), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin tertulis terlebih dahulu dari Penerbit Maxikom. 1 E-Trik JAVA Game Sederhana IRAWAN e-mail : irawan_cyber@yahoo.com.sg Penerbit Maxikom J l. Residen H. Abdul Rozak No. 33 B5-B6 Palembang 30114. e-mail: maxi@maxikom.co.id Fax. (0711) 717598 www.maxikom.co.id 2 Game Sederhana Pada E-Trik berikut ini kita akan membuat game sederhana dengan JCreatorLE 3.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 J ava. A Menyiapkan Program. 1. Sebelum membuat program J ava, jangan lupa untuk menginstall J RE dan J DK agar program J ava bisa dijalankan pada Windows anda. Dalam pembahasan ini kita akan menggunakan J RE dan J DK versi 1.6.0 yang bisa anda download di http://www.java.com. 2. Buka program J Creator anda klik Tombol Start pada Windows Taskbar. Kemudian klik Programs | JCreatorV3 LE | JCreator LE, lihat Gambar 2. Gambar 1 Tampilan Program Game Sederhana 3 Copyright Maxikom, 2007 3. Kemudian kita akan membuat Class Java dengan nama CariGambar. Klik Menu File | New | File seperti Gambar 3. 4. Setelah itu akan muncul kotak dialog File Wizard, lalu pilih Java File kemudian klik Tombol . Lihat Gambar 4. Gambar 3 Membuat File Baru 1 2 3 Gambar 2 Membuka Aplikasi JCreator 3.0 LE 1 2 3 4 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. J ika sudah maka tampilannya akan seperti Gambar 6 Gambar 4 Membuat File Java Pilih J ava File Klik Next Gambar 5 Menyimpan File CariGambar.java 1 2 Game Sederhana 5 Copyright Maxikom, 2007 7. Dalam pembuatan program ini dibutuhkan 13 File gambar dengan format jpg yang nantinya 12 gambar akan digunakan sebagai Image dalam game dan 1 gambar sebagai Icon. Untuk Icon pilihlah sebuah File gambar dengan format jpg. Kemudian ubah ukurannya menjadi 100x100 Pixel dengan menggunakan program Image Editor apa saja. Kemudian beri nama File gambar tersebut dengan nama background. Pada contoh gambar berikut File di Resize dan di Rename dengan menggunakan program ACDSee. Lihat Gambar 7. Gambar 6 TampilanFile Selesai di Simpan J udul File J endela Kode Gambar 7 Tampilan File background.jpg Program ACDSee Beri nama background Ukuran =100x100 Contoh gambar Game Sederhana 6 Copyright Maxikom, 2007 8. Untuk Image pilihlah 12 gambar format jpg 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 di Edit tadi ke dalam Folder yang sama dengan File CariGambar.java. Lihat Gambar 9. Gambar 8 Tampilan File image1.jpg-image12.jpg Gambar 9 File-File Disimpan Dalam Satu Folder Game Sederhana 7 Copyright Maxikom, 2007 B Listing Program. 1. Pada Jendela KodeFileCariGambar.Java ketikkan kode program berikut ini : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 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; Game Sederhana 8 Copyright Maxikom, 2007 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 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) { Game Sederhana 9 Copyright Maxikom, 2007 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 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) { Game Sederhana 10 Copyright Maxikom, 2007 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 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"); Game Sederhana 11 Copyright Maxikom, 2007 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 } } 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-4 merupakan fungsi J ava API yang akan kita gunakan untuk memanggil kompenen-komponen GUI(Graphical User Interface) J ava. - Baris 5-6 mendeklarasikan class Carigambar. - Baris 7-22 mendeklarasikan Variabel dan Object yang akan digunakan. - Baris 23-82 kode-kode pengaturan tampilan dan posisi Object yang digunakan. - Baris 83-86 memanggil Method shuffleCards. - Baris 87-111 kode Method shuffleCards dengan logika Array yang berfungsi untuk mengacak file image1-12 kemudian menampilkannya kembali. - Baris 112-174 merupakan 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-153 kode-kode logika jika salah satu dari sepasang gambar yang dipilih tidaklah sama. - Baris 154-167 kode-kode logika jika semua gambar dari sepasang gambar yang dipilih adalah gambar yang sama. - Baris 168-174 kode-kode logika jika semua gambar berhasil dibuka, maka game selesai. Game Sederhana 12 Copyright Maxikom, 2007 2. Kemudian klik Icon Compile pada Menu Toolbar agar program CariGambar.java diubah menjadi CariGambar.class. Lihat Gambar10. C Menjalankan Program. 1. Untuk menjalankan program klik Icon Execute File pada Menu Toolbar lihat Gambar 11. Keterangan : - Baris 175-178 kode-kode perintah untuk keluar dari program ketika Tombol Exit di klik. - Baris 179-186 kode-kode perintah untuk menampilkan File-file gambar pada saat program dijalankan. - Baris 187-190 kode-kode perintah memberi nama pada komponen-komponen Swing. - Baris 191 akhir blok kode class CariGambar. Gambar 10 Meng-Compile kode FileCariGambar.java Klik Compile Status Compile Game Sederhana 13 Copyright Maxikom, 2007 2. Tampilan program akan terlihat seperti Gambar 12. 3. Untuk mengulang atau memulai permainan klik Tombol Acak Gambar. Jika ingin berhenti klik Tombol Keluar. Lihat Gambar 13. Gambar 11 Menjalankan Program Klik Execute File Gambar 12 Tampilan Program CariGambar 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 Game Sederhana 15 Copyright Maxikom, 2007 5. J ika 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 kali anda 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 Selesai J umlah Mencoba