Kamis, 31 Desember 2009

Membuat Game Tebak Gambar Sederhana dengan Java NetBeans dan MySQL

Sempat perang batin (ceile bahasa gw??heheh…) dengan apa yang mau gw share diblog gw ini. Setelah berpikir, menimbang dan bermeditasi (lebay mode on) selama beberapa hari, akhirnya gw putusin buat nge-share apa yang pernah gw buat waktu tugas akhir. Gak semuanya sih, yang akan gw share menurut gw perlu aja.


 

Game yang gw buat adalah game berhitung sederhana untuk anak – anak. Cara menggunakan gamenya adalah dengan memilih gambar sebagai jawaban yang benar dari tiga gambat yang ada. Ada 5 soal dalam setiap permainan, bila jawaban benar skor akan bertambah 20 poin, tetapi bila jawabannya salah maka skor tidak akan berkurang tetapi jumlah soal tidak akan bertambah. 
Oke sebelum buat game ini pastikan gambar yang akan ditamplikan dalam program ini sudah siap. Simpan semua gambar yang akan dipakai dalam satu folder, kemudian simpan folder di drive yang diinginkan.
            Langkah pertama yang harus dikerjakan adalah, buat database dengan MySQL, dengan perintah berikut (contoh database yang gw buat namanya calistung) :
CREATE DATABASE CALISTUNG;
Kemudian buat table dalam database calistung (contoh table yang dibuat adalah hitung dan soal_lat), dengan memasukkan perintah berikut :
CREATE TABLE hitung (id_soalhit VARCHAR(5) NOT NULL, a_hit VARCHAR(10) NOT NULL, b_hit VARCHAR(10) NOT NULL, c_hit VARCHAR(10) NOT NULL, PRIMARY KEY(id_soalhit));
Setelah itu buat table soal_lat dengan perintah yang sama seperti diatas, Cuma diubah saja nama fieldnya. Untuk field – field yang gw pake untuk table soal_lat adalah id_soal (primary key), soal_lat, kunci_jawab. Format yang akan digunakan dalam pembuatan table bisa dilakukan sesuai keinginan kalian. Misalnya dengan menghilangkan table soal_lat sedangkan field dalam table soal_lat dibuat dalam table hitung. Sekedar info aja masalah ini sempat dipermasalahkan waktu gw sidang PI, terus terang gw buat jadi dua table supaya ada ERD-nya tapi malah bikin gw kerepotan pas sidang (wkwkwkwkwk..........^_^V).
Setelah table selesai dibuat masukan record – recordnya. Perintahnya :
INSERT INTO hitung VALUES (‘HTG01’, ‘bola2.jpg’, ‘bola3.jpg’, ‘bola4.jpg’);
Masukkan recordnya sebanyak yang kalian inginkan. Isi dalam record terserah kalian. Untuk isian yang ada .jpg – nya di gunakan untuk memanggil file gambar, jadi sesuaikan isi recordnya dengan nama file gambar yang akan dipanggil.
            Lakukan hal yang sama pada table soal_lat, tinggal diubah nama table-nya dan isi values – nya saja dalam perintahnya. Contohnya seperti ini :




Setelah selesai dengan database, sekarang buka NetBeans-nya lalu buat project baru misalnya namanya PI_APLIKASI_CALISTUNG, lalu masukkan source classpath. Caranya klik kanan pada project PI_APLIKASI_CALISTUNG – pilih properties – pada source package folder pilih add folder – kemudian pilih folder classpath-nya.
Setelah itu buat frame baru, misalnya dengan nama FrameLatHtTG. Lalu bangun bentuk GUI – nya sesuai keinginan kalian, contohnya seperti berikut :


 


Untuk menampilkan soalnya sebaiknya gunakan text area, pada propertiesnya hilang tanda centang pada edittable. Untuk menampilkan gambar – gambarnya gunakan checkbox (bisa juga radio button karena hanya boleh memilih satu, tetapi gw lebih milih pake checkbox, gak tau kenapa? Hehehehe....). Klik semua checkbox (gunakan ctrl) lalu tambahkan event pada actionPerformed dengan nama allActionPerformed.
            Dalam jendela inspector klik kanan pada other components – pilih Add From Palette – pilih Swing – pilih JoptionPane.
            Kemudian masuk ke bagian source dan masukan package berikut :
import javax.swing.*;
import javax.swing.ImageIcon;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;

Selanjutnya masukan perintah berikut dibawah public class FrameLatHtTG extends javax.swing.JFrame {
    Connection konek;
    String no_id;
    String soal,pila,pilb,pilc,knjwb;
    int no_soal = 1, main = 0;
    int nilai;
    String kode = null;
    java.net.URL url;
    javax.swing.ImageIcon gambar[];
     /** Creates new form FrameLatHtTG */
    public FrameLatHtTG() {
        kondb();
        setTitle("Latihan Berhitung - Tebak Gambar");
        setResizable(false);
        initComponents();
    }

private void kondb() {
          try{
            Class.forName("com.mysql.jdbc.Driver");
       
         try{
            String url ="jdbc:mysql://localhost:3306/calistung";
            konek =DriverManager.getConnection(url);
            System.out.println("Proses Koneksi Sukses");
         }
            catch(SQLException sqle){
            System.out.println("Proses Koneksi Gagal");
        }
        }
        catch (ClassNotFoundException cnfe){
            System.err.println("Error loading driver: " + cnfe);
        }
   }

private void sqlquery() {
      no_soal = (int)(Math.random()*23);
       if (no_soal < 10) {
           kode = "HTG0";
       }
       else {
           kode = "HTG";
       }
    try {
        String sql2 = "Select * from hitung a, soal_lat b where a.id_soalhit = b.id_soal and a.id_soalhit = '"+kode+no_soal+"'";
        Statement stmt = konek.createStatement();
        ResultSet rslt = stmt.executeQuery (sql2);
          while (rslt.next()) {
           soal = rslt.getString("b.soal_lat");
           pila = rslt.getString("a.a_hit");
           pilb = rslt.getString("a.b_hit");
           pilc = rslt.getString("a.c_hit");
           knjwb = rslt.getString("kunci_jawab");
           jTextArea1.setText(soal);
           String namaGambar[] = {pila,pilb,pilc};
                gambar = new javax.swing.ImageIcon[3];
                for (int x = 0; x < 3; x++) {
            url = getClass().getResource("/"+namaGambar[x]);
            gambar[x] = new javax.swing.ImageIcon(url);
        }
           a.setIcon(gambar[0]);
           b.setIcon(gambar[1]);
           c.setIcon(gambar[2]);
        }
        } catch (Exception e) {
        System.out.println("Gagal lagi" + e);
        }
    }
    public void loopingmain() {
       main++;
       if (main == 5) {
            a.setEnabled(false);
            b.setEnabled(false);
            c.setEnabled(false);
          int keluar = jOptionPane1.showConfirmDialog(null,"Adik - adik sudah mengerjakan 5 soal\n" +
                  "Apakah adik - adik mau latihan lagi ?","Main Lagi",
                   jOptionPane1.YES_NO_OPTION);     
           if (keluar == 0) {
               dispose();
               new FrameLatHtTG().setVisible(true);
           }
           else {
              dispose();
              new FrameLathit().setVisible(true);
           }
        }
        sqlquery();
   }

Setelah itu masukan perintah dibawah ini di dalam event berikut :
private void allActionPerformed(java.awt.event.ActionEvent evt) {                                   
// TODO add your handling code here:
         nilai = Integer.valueOf(lbnilai.getText());;
        String act = evt.getActionCommand();
             if (a.isSelected()==true) {
                if (pila.equalsIgnoreCase(knjwb)) {
                    nilai += 20;
                    lbnilai.setText(String.valueOf(nilai));
                    loopingmain();
             }
                else {
                    nilai += 0;
                    lbnilai.setText(String.valueOf(nilai));
                    loopingmain();
                }
                a.setSelected(false);
             }
            else if (b.isSelected()==true) {
                if (pilb.equalsIgnoreCase(knjwb)){
                    nilai += 20;
                    lbnilai.setText(String.valueOf(nilai));
                    loopingmain();
                }
                else {
                    nilai += 0;
                    lbnilai.setText(String.valueOf(nilai));
                    loopingmain();
                }
                b.setSelected(false);
            }
            else if (c.isSelected()==true) {
                if (pilc.equalsIgnoreCase(knjwb)){
                    nilai += 20;
                    lbnilai.setText(String.valueOf(nilai));
                    loopingmain();
                }
                else {
                    nilai += 0;
                    lbnilai.setText(String.valueOf(nilai));
                    loopingmain();
                }
               c.setSelected(false);
            }

            Setelah selesai kembali ke bagian design lalu dalam jendela inspector klik kanan pada JFramr – pilih Event – pilih Window – pilih windowActived. Lalu tambahkan perintah berikut dalam event formWindowActivated :

              private void formWindowActivated(java.awt.event.WindowEvent evt) {                                    
// TODO add your handling code here:
        sqlquery();
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (dim.width - getSize().width)/2;
        int y = (dim.height - getSize().height) / 2;
        setLocation(x,y);
    }

            Setelah selesai build dulu program yang sudah dibuat lalu jalankan programnya. Selamat mencoba !!!!! ^___^ i  






11 komentar:

underground mengatakan...

artikelnya keren!!...

salam kenal yaa...


http://arifurrohman.blogspot.com/2010/07/list-business-online-ptc-paid-to-click.html

bang ayee mengatakan...

baguss.

salam kenal

insboy mengatakan...

Artikelnya keren.....
Buat SC nya pkek neatbeans kah?
java ledis nih...

Salam kenal

ma wiel mengatakan...

thank's,, aku coba ni

Abbas Abdullah mengatakan...

Download langsung jadinya dong di bagi...

klo ada tolong yah

abbas.abdullah165@gmail.com

Do'oMe mengatakan...

Wow...
Tnks infox.
udah cantik pinter lg...
Slm Kenal Adja.

irfan mengatakan...

kalau bisa di sertai video nya biar tambah mudah buat nya

syaif Khan mengatakan...

bole minta file project-nya nggak??
kalo bole kirimkan ke e-mailku donk.. el_syaif@yahoo.co.id, saya sedang belajar java game juga ne.. buat referensi

Windy Asriani mengatakan...

ada contoh projectnya mba? saya lg bikin TA juga, tapi ttg cara belajar membaca, bingung, udah browse sana sini ngga nemu2..
mohon bantuannya ya mba

YODY FERDIANSYAH mengatakan...

boleh di upload project nya, biar sekalian belajar dan ngembangin..

hehehe
kunjungi balik yah..

http://yodymada.blogspot.com/

anak-desa mengatakan...

kebetulan juga lagi belajar java nich ttg database bisa minta project-nya ga ? buat belajar :)

aqunq1@gmail.com