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 :
- pemain
(user) memulai permainan terlebih dahulu dan deberi kebebasan untuk
menentukan letak simbol X pada papan permainan
- Komputer
akan memulai setelah pemain (user) memulai terlebih dahulu
- komputer
diberi pembelajaran untuk menghalagi jalan user mencapai tujuan (goal)
- computer
juga diberi pembelajaran untuk memenangkan permaianan ini
- 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 : |