
Teman2 kali ini saya mau coba meng-share aplikasi facemash tiruan yang saya buat dengan bahasa pemrograman java. Tapi sebelumnya saya ingin beritahukan bahwa saya membagi artikel ini menjadi 3 bagian agar teman2 tidak pusing bacanya ..okey !? :)
Teman2 pasti tau bahwa website facemash dibuat oleh Mark Zuckerberg untuk membandingkan cewe2 mana yang paling hot. Aplikasi ini dibuat sebelum ia membuat jejaring sosial paling ‘rame’ sampai saat ini.. Memang sih terkesan usang karena aplikasi facemash sendiri sudah lama bingitz ada. Tapi kali ini saya cuma ingin menekankan pada pembelajaran yang bisa kita dapat dari aplikasi tersebut.
Setelah browsing kesana kemari saya menemukan bahwa pembuatan aplikasi facemash menggunakan sebuah algoritma yang bernama Elo Rating System dimana algoritma ini dipakai untuk menentukan rating seorang pecatur berdasarkan setiap hasil pertandingan yang ia lewati. Algoritma ini menggunakan nilai ekspetasi, yaitu nilai dari kedua pemain berdasarkan berapa rating yang ia peroleh. Nilai ekspetasi tersebut berkisar antara 0-1, sehingga pemain dengan rating yang lebih tinggi tentu memiliki nilai ekspetasi yang lebih besar (lebih mendekati 1). Untuk lebih jelasnya kita lihat rumus dibawah ini :
Ekspetasi pemain A terhadap pemain B
Ekspetasi pemain B terhadap pemain A
Keterangan :
Ea = ekspektasi A terhadap B
Eb = ekspektasi B terhadap A
Ra = rating A
Rb = rating B
Selain itu kita perlu juga menentukan nilai K-Factor yaitu nilai yang akan didapatkan dari lawan ketika seorang pemain memenangkan pertandingan. Nilai ini penting karena misalkan seorang pemain dengan rating rendah berhasil mengalahkan pemain dengan rating yang sangat tinggi otomatis rating nya akan naik dengan lebih cepat. Berikut ini nilai K yang dipakai Federasi Catur Internasional dan USA :
FIDE (World Chess Federation)
- K = 25 untuk pemain yang telah bermain minimal 30 pertandingan
- K = 15 untuk pemain dengan rating dibawah 2400
- K = 10 untuk pemain dengan rating diatas 2400
USCF (United States Chess Federation)
- K = 32 untuk pemain dengan rating dibawah 2100
- K = 24 untuk pemain dengan rating diantara 2100-2400
- K = 16 untuk pemain dengan rating diatas 2400
Jika Sa = hasil pertandingan maka :
Oke cukup dengan algoritma nya. Mana aplikasinya? eitsss..sebelumnya contoh aplikasi yang dibuat ini mungkin memiliki perbedaan dengan yang sudah pernah dibuat diartikel lain.. Pertama, sesuai judulnya aplikasi ini adalah aplikasi dekstop yang dibuat dengan bahasa pemrograman java dengan database MySql. Kedua, algoritma program ini akan menentukan :
1. Tidak ada Skor draw..karena saya kurang suka hasil draw :D..(klo mau tambah sendiri boleh..gampang kok :) )
2. Kandidat tidak akan menemui lawan yang sama lebih dari satu kali (karena aplikasi ini hanya diperuntukkan untuk satu orang sehingga lebih cepat mereview ratingnya..klo tidak disaring bakal nunggu setahun bru selesai apalagi kalo kandidatnya sampe puluhan :D)
3. Yang mau saya tanding disini bukan cewek mana yang paling hot tapi gaya foto model kucing saya mana yang paling hot :D :D :D
Yah kira2 begitulah perbedaannya.. mungkin masih banyak tapi daripada membuang waktu, langsung saja kita lihat aplikasinya... eitss lagi :D , sebelumnya saya mo bilang kalo di artikel ini saya tidak akan membahas semua kodingnya. Saya hanya akan menjelaskan beberapa poin yang penting saja.. okeeyyy.. sekarang silahkan langsung santappp :D
1. Pertama-tama kita buat dulu databasenya menggunakan mysql query browser.. kemudian buat tabel bisa dgn mysql table editor seperti dibawah ini :
2. Selanjutnya masuk ke netbeans dan pilih new project. Kemudian buat kelas yang didalamnya terdapat method getinstance serta get koneksi. Jangan Lupa untuk mengimpor library yang dibutuhkan. Disini kita membutuhkan libary java.sql untuk melakukan koneksi.
/**
* @author Abdhee
* http://likeac0in.blogspot.com/
*/
public class koneksi {
private Connection conn=null;
private static koneksi kon=null;
public koneksi(){
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
}catch(Exception e){ e.printStackTrace();}
}
public static koneksi getinstance()throws SQLException{
try{
koneksi ko = null;
if(kon==null){ kon = new koneksi();
ko=kon;
}
else if(kon.getkoneksi().isClosed()){
kon=new koneksi();
ko=kon; }
else{ko=kon; }
return ko; }
catch(Exception e){return new koneksi();
}
}
public Connection getkoneksi(){
try {
if(this.conn==null){
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/tanding");
this.conn.setAutoCommit(false);
}
return this.conn;
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Error Exception : "+e, " Exception",JOptionPane.ERROR_MESSAGE);
return null;
}
}
}
3. Untuk formnya sendiri kita membutuhkan 3 form yaitu untuk mengelola data,melakukan pemilihan dan melihat ratingnya. Oleh sebab itu kita perlu membuat kelas dan fungsi untuk melakukan insert update delete terlebih dahulu. Pertama kita buat kelas “kandidat” yang didalamnya kita deklarasikan variabel2 dibawah ini :
private String id;
private String nama;
private InputStream foto;
private double score;
Jangan lupa buatkan konstruktornya :
public kandidat(){}
public kandidat(String id){
this.id=id;
}
Kemudian buat method setter dan getter menggunakan variabel diatas. Setelah itu buat sebuah kelas taruhlah namanya “DAO” yang didalamnya terdapat fungsi-fungsi untuk mengelola data tersebut. Sebagai contoh berikut fungsi untuk menampilkan data :
public List
List
pst = con.prepareStatement("select id,nama from tdata");
ResultSet rs = pst.executeQuery();
while(rs.next()){
kandidat g = new kandidat();
g.setid(rs.getString(1));
g.setnama(rs.getString(2));
getA.add(g);
}
rs.close();
con.commit();
return getA;
}
Selanjutnya bisa dikembangkan untuk membuat fungsi insert update dan delete..
Referensi :
http://en.wikipedia.org/wiki/Elo_rating_system
http://hotswaps.blogspot.com/2011/04/membuat-tiruan-facemash-bagian-1.html
Tidak ada komentar:
Posting Komentar