Rabu, 16 Mei 2012

Algorithms Game pada permainan Tic-Tac-Toe 10 x 10


1. Bahasa dan Program Editor

Permainan Tic-Tac-Toe 10 x 10 ini menggunakan bahasa pemrograman Prolog, dengan program editor yang saya gunakan adalah Strawberry Prolog.

Prolog adalah bahasa pemrograman logika atau disebut juga sebagai bahasa non-procedural. Nama Prolog merupakan singkatan dari "Programming in Logic". Ide untuk mengembangkan pemrograman dalam logika, pertama kali dilakukan oleh Robert Kowalski di Edinburgh, Skotlandia pada tahun 1970-an.

Ia mengembangkan pemrograman tersebut secara teoritis yang kemudian dilanjutkan dalam demonstrasi eksperimen oleh Maarten van Emden, juga dari Edinburgh. Kemudian Alain Colmerauer dari Marseilles, Perancis membuat implementasinya.

Bahasa ini pertama kali dikembangkan oleh Alain Colmerauer dan P. Roussel di Universitas Marseilles Perancis pada tahun 1972. Selama tahun 70-an, Prolog menjadi populer di Eropa untuk aplikasi artificial intelegence. Sedangkan di Amerika Serikat, para peneliti juga mengembangkan bahasa lain untuk aplikasi yang sama yaitu LISP. LISP mempunyai kelebihan dibandingkan Prolog, tetapi LISP lebih sulit dipelajari.

Pada mulanya, Prolog adalah bahasa yang sangat murni yang didasarkan pada keindahan logika. Sejak ditemukannya pada tahun 1970-an oleh ketiga orang di atas, Prolog berkembang dengan lambat dan hanya digunakan oleh para peneliti dari universitas-universitas terkenal karena hanya merekalah yang dapat mengerti arti dari pentingnya Prolog. Dalam masa pengembangannya, para peneliti banyak menemukan kebutuhan-kebutuhan baru yang perlu ditambahkan di Prolog.

Awalnya Prolog dan LISP sangat lambat dalam eksekusi program dan memakan memori yang besar sehingga hanya kalangan tertentu yang menggunakannya. Dengan adanya compiler prolog, kecepatan eksekusi program dapat ditingkatkan, namun Prolog masih dipandang sebagai bahasa yang terbatas (hanya digunakan di kalangan perguruan tinggi dan riset).

Pada awal tahun 1980-an, dunia industri mulai menyadari kelebihan-kelebihan yang dimiliki oleh Prolog dibandingkan dengan bahasa konvensional lainnya. Dengan terlibatnya dunia industri, maka timbul tuntutan-tuntutan baru, misalnya tuntutan akan eksekusi waktu yang lebih cepat, kebutuhan memori yang lebih kecil dan kebutuhan praktis lainnya. Namun hal ini justru menimbulkan 2 kelompok yang mempunyai filosofi yang berbeda.

Di satu pihak, mereka menganggap bahwa Prolog adalah bahasa penelitian sehingga mereka menginginkan banyak hal tercakup dalam Prolog sehingga Prolog dapat digunakan secara luwes untuk berbagai keperluan penelitian.

Di pihak lain, mereka yakin bahwa Prolog seharusnya dapat menjadi bahasa yang berguna untuk mengembangkan berbagai macam aplikasi yang bukan penelitian.

Pandangan umum Prolog hanya digunakan di kalangan perguruan tinggi dan riset tiba-tiba berubah di tahun 1981 pada Konferensi International I dalam sistem Generasi Kelima di Tokyo, Jepang. Jepang yang saat itu mengalami kesulitan bersaing dalam pemasaran komputer dengan Amerika Serikat, mencanangkan suatu rencana untuk mengembangkan teknologi perangkat keras dan perangkat lunak komputer generasi kelima untuk tahun 1990-an. Dan bahasa yang dipilih adalah Prolog.

Sejak saat itu, banyak orang mulai menaruh minat pada Prolog dan pengembangan versi Prolog yang mempunyai kecepatan dan kemampuan yang lebih tinggi, lebih murah dan lebih mudah digunakan, baik untuk komputer mainframe maupun komputer pribadi sehingga Prolog menjadi alat yang sangat penting dalam program aplikasi kecerdasan buatan (artificial intelegence) dan pengembangan sistem pakar (expert system).

Prolog merupakan pemrograman berupa Object Oriented Language atau declarative Language, dimana prolog tidak terdapat prosedur, tetapi hanya kumpulan data-data objek (fakta) yang akan diolah dan relasi antar objek tersebut yang membentuk suatu aturan. Aturan-aturan ini disebut heuristik dan diperlukan dalam mencari suatu jawaban. Dengan kata lain program dalam Prolog adalah sebuah database.

Pemrogram menentukan goal (tujuan) dan komputer akan menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya menggunakan "formal reasoning" yang membuktikan cocok tidaknya tujuan dengan data-data yang telah ada dan relasinya.

Prolog memecahkan masalah seperti yang dilakukan oleh pikiran manusia. Dengan demikian, Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non numerik. 

2. Initial State

Initial State yang digunakan sebagai acuan untuk membuat program Tic Tac Toe adalah pembuatan papan permainanya.

Di sini saya menggunakan papan kotak yang bedimensi 10 x 10, dimana terdapat 10 baris dan 10 kolom. Ada dua objek yang akan bermain dalam permainan ini, yaitu pemain dengan AI atau komputer.  Dengan warna dan simbol yang sudah ditentukan. Pemain menggunakan simbol X berwarna merah, sedangkan AI atau komputer menggunakan simbol O berwarna biru.

Game ini akan mengasah otak pemainnya.Pemain dipaksa untuk menerapkan strategi yang tepat untuk memenangkan game ini. Permainan ini hanya dapat dimainkan oleh satu pemain, sedangkan Komputer bertindak sebagai lawan.

3. Aturan (Rule)
            
Setiap permainan pasti memiliki aturan, begitu juga dengan permainan ini.  Ada beberapa aturan yang terdapat dalam permainan ini, diantaranya adalah :

  1. pemain (user) memulai permainan terlebih dahulu dan deberi kebebasan untuk menentukan letak simbol X pada papan permainan
  2. Komputer akan memulai setelah pemain (user) memulai terlebih dahulu
  3. komputer diberi pembelajaran untuk menghalagi jalan user mencapai tujuan (goal)
  4. computer juga diberi pembelajaran untuk memenangkan permaianan ini
  5. pemain (user) maupun komputer  harus membentuk satu garis lurus (vertikal, horizontal, atau diagonal) untuk memenangkan permainan ini
4. Tujuan ( Goal )
Tujuan (goal) untuk menyelesaikan permainan ini adalah membuat
sebuah garis lurus yang terdiri 10 kotak deretan simbol secara vertical, horizontal maupun diagonal. Ada 22 kemungkinan tujuan (goal) yang dapat terbentuk pada permainan ini.

5.    Analisa Pembuatan Program
            Pembuatan permainan ini memiliki logika tersendiri. Yang akan saya bahas adalah pembuatan papan permainannya. Kita harus membuat sebelas garis vertical serta sebelas garis horizontal. Dan itu harus membutuhkan logika serta koding yang tepat.
            Seperti pada permainan ini, saya membuat set pos sebanyak 10 (kurung ) dengan 10 variabel yang sama pada setiap kurung kurawal [ ] seperti contoh dibawah ini :
set(pos([[f,f,f,f,f,f,f,f,f,f]… (sampai 10 kali)])),
            Setelah itu saya akan membuat garis berwarna hitam dengan ketebalan 5. Jarak setiap garis adalah 30mm.  Jadi kita akan menghitung koodinat setiap garis dengan menambahkan jarak 30mm untuk setiap pergantian garis.
win_func(paint) :-
   pen(5, rgb(0, 0, 0)),   % black
   line(30, 30, 30, 630), %h1
   line(30, 630, 630, 630), %v11
   line(630, 30, 30, 30), %v1
   line(30, 90, 630, 90),%v2
   line(30, 150, 630, 150),%v3
   line(30, 210, 630, 210),%v4
   line(30, 270, 630, 270),%v5
   line(30, 330, 630, 330),%v6
   line(30, 390, 630, 390),%v7
   line(30, 450, 630, 450),%v8
   line(30, 510, 630, 510),%v9
   line(30, 570, 630, 570),%v10
   line(90, 30, 90, 630), %h2
   line(150, 30, 150, 630),%h3
   line(210, 30, 210, 630),%h4
   line(270, 30, 270, 630),%h5
   line(330, 30, 330, 630),%h6
   line(390, 30, 390, 630),%h7
   line(450, 30, 450, 630),%h8
   line(510, 30, 510, 630),%h9
   line(570, 30, 570, 630),%h10
   line(630, 630, 630, 30),%h11

            Tidak hanya itu, saya juga mengganti warna dasar papan dengan warna hijau toska, serta membuat warna simbol X menjadi merah dan simbol O menjadi biru yaitu dengan cara meng-edit angka pada statement put.

jika computer menang : 





Jika pemain (user) menang :