Kamis, 31 Desember 2009

Membuat Game Isian Sederhana dengan Menggunakan Java NetBeans dan MsSQL

Sejujurnya gw gak tau mau kasih nama apa buat aplikasi ini. Daripada pusing-pusing akhirnya gw buat aja judulnya begitu (sori kalo agak-agak aneh judulnya!hehehe...). Setelah sebelumnya gw nge–share game tebak gambar sederhana, sekarang gw mau ng–share game isian. Pada prinsipnya sama seperti pada game tebak gambar, hanya saja game ini tidak menyediakan 3 gambar sebagai jawaban yang benar tetapi user harus mengetikkan jawaban langsung ke dalam program.  
 
            Untuk database dan table yang dibuat, kita gunakan database dan table yang sebelumnya sudah kita buat (cara – caranya bisa diliat disini, tetapi table yang kita gunakan hanya table soal_id saja). Tinggal tambahkan saja isi recordnya, misalnya seperti contoh berikut :    
              Selanjutnya tambahkan saja frame pada project sebelumnya (project PI_APLIKASI_CALISTUNG) misal dengan nama FrameLatHtIs. Lalu bangun GUI – nya, contohnya seperti berikut :    
               Untuk menampilkan soal dan gambar jawaban gunakan label, untuk memasukkan jawaban gunakan textfield, dan gunakan button untuk enter jawaban.
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 FrameLatHtIs extends javax.swing.JFrame {
Connection konek;
    String no_id;
    String soal,knjwb;
    int no_soal = 1, main = 0;
    int nilai;
    String kode = null;
    java.net.URL url, url2;
    javax.swing.ImageIcon gambar, gambar2;
    /** Creates new form FrameLatHtIs */
public FrameLatHtIs() {
        kondb();
        setTitle("Latihan Berhitung - Isian");
        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()*57);
       if (no_soal < 10) {
           kode = "HIS0";
       }
       else {
           kode = "HIS";
       }
        try {
        String sql = "Select * from soal_lat where id_soal = '"+kode+no_soal+"'";
        Statement stmt = konek.createStatement();
        ResultSet rslt = stmt.executeQuery (sql);
          while (rslt.next()) {
           soal = rslt.getString("soal_lat");
           knjwb = rslt.getString("kunci_jawab");
           url = getClass().getResource("/"+soal);
           url2 = getClass().getResource("/"+knjwb+".JPG");
            gambar = new javax.swing.ImageIcon(url);
            gambar2 = new javax.swing.ImageIcon(url2);
          
            jLabel2.setIcon(gambar);
            jLabel5.setIcon(gambar2);
          }
           } catch (Exception e) {
        System.out.println("Gagal lagi" + e);
        }
    }
     public void loopingmain() {
       main++;
       if (main == 5) {
          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 FrameLatHtIs().setVisible(true);
           }
           else {
              dispose();
              new FrameLathit().setVisible(true);
           }
        }
        sqlquery();
   }
            Pada button tambahkan event actionPerformed lalu masukan perintah berikut dalam event tersebut :
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
// TODO add your handling code here:
        nilai = Integer.valueOf(lbnilai.getText());
        if (tfJawab.getText().equalsIgnoreCase(knjwb.substring(2))) {
            nilai += 20;
            lbnilai.setText(String.valueOf(nilai));
            loopingmain();
        }
        else {
            nilai += 0;
            lbnilai.setText(String.valueOf(nilai));
            loopingmain();
        }
        tfJawab.setText("");
    }          
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 programnya lalu jalankan. Nah gimana, mudah kaaaannn ???? Selamat mencoba !!! ^__^ i

Tidak ada komentar: