PERMAINAN CATUR ONLINE DENGAN MENGGUNAKAN ...
-
Upload
khangminh22 -
Category
Documents
-
view
0 -
download
0
Transcript of PERMAINAN CATUR ONLINE DENGAN MENGGUNAKAN ...
i
PERMAINAN CATUR ONLINE
DENGAN MENGGUNAKAN MACROMEDIA FLASH MX 2004
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Jurusan Teknik Informatika
Disusun Oleh :
Albertus Andre
015314002
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
ii
AN ONLINE CHESS
USING MACROMEDIA FLASH MX 2004
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements
to Obtain the Sarjana Teknik Degree
in Informatics Engineering
By :
Albertus Andre
015314002
INFORMATICS ENGINEERING STUDY PROGRAMME
FACULTY OF ENGINEERING
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2007
iii
TUGAS AKHIR
PERMAINAN CATUR ONLINE
DENGAN MENGGUNAKAN MACROMEDIA FLASH MX 2004
Disusun oleh :
Albertus Andre
015314002
Telah disetujui oleh :
Pembimbing I
Agnes Maria Polina, S.Kom., M.Sc. Tanggal………………….
Pembimbing II
Yudianto Asmoro, S.T. Tanggal………………….
iv
TUGAS AKHIR
PERMAINAN CATUR ONLINE DENGAN MENGGUNAKAN
MACROMEDIA FLASH MX 2004
Dipersiapkan dan ditulis oleh
Albertus Andre
NIM : 015314002
Telah dipertahankan di depan Panitia Penguji
pada tanggal 21 Juni 2007
dan dinyatakan memenuhi syarat
Susunan Panitia Penguji
Nama Lengkap Tanda Tangan
Ketua Agnes Maria Polina, S.Kom., M.Sc. ………….
Sekretaris Alb. Agung Hadhiatma, S.T., M.T. ………......
Anggota St. Yudianto Asmoro, S.T. ………….
Anggota St. Wisnu Wijaya, S.T. …………..
Yogyakarta, Juni 2007
Fakultas Teknik
Universitas Sanata Dharma
Dekan,
(Ir. Greg. Heliarko, S.J., S.S., B.S.T., M.A., M.Sc.)
v
For with GOD
Nothing shall be impossible. (Luke 1 : 37)
Everything that humans can imagine is
a possibility in reality. Physicist, Willy Karen
Don’t worry,
Be Happy
Bobby
vi
This undergraduate thesis is dedicated to
My beloved parents,
My brother,
My sister,
My beloved mate,
And also those who will always be there for me
vii
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini
tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan
dalam kutipan dan daftar pustaka, sebagaimana layaknya sebuah karya ilmiah.
Yogyakarta, Juni 2007
Penulis,
Albertus Andre
viii
ABSTRAKSI
PERMAINAN CATUR ONLINE
DENGAN MENGGUNAKAN MACROMEDIA FLASH MX 2004
Albertus Andre
015314002
Game pada Personal Computer (PC) merupakan salah satu unsur penting
dalam perkembangan PC. Walaupun pada saat sekarang ini sudah banyak game
dengan berbagai macam fitur yang sangat canggih, tetapi game dengan fitur yang
lebih sederhana seperti solitaire atau minesweeper tetap memiliki penggemarnya,
karena ada kalanya seseorang ingin memainkan game yang sederhana. Maka dari
itu, penulis terinspirasi untuk membuat game dengan fitur sederhana namun
‘menjual’ berkat teknologi yang menyertainya, yaitu permainan catur online
dengan menggunakan Macromedia Flash MX 2004.
Dalam pembuatan game ini, penulis memilih untuk menggunakan
Macromedia Flash MX 2004 mengingat kemampuan flash di bidang animasi,
serta kemampuan format .swf yang dimilikinya yang dapat mengompres file
gambar dan suara, termasuk format-format vector menjadi file dengan ukuran
yang sangat kecil. Dalam pembuatan game ini, Macromedia Flash MX 2004
didukung oleh ElectroServer 3 yang merupakan sebuah socket server yang
dirancang khusus oleh Electrotank untuk aplikasi multiplayer game dan chat
sehingga nantinya akan menghasilkan sebuah aplikasi yang mampu mengirimkan
dan menerima data dalam jaringan dengan menggunakan bahasa pemrograman
dari flash itu sendiri, yaitu ActionScript 2.0.
Hasil akhir yang diperoleh adalah forum online dimana terdapat fasilitas
bagi 2 orang user untuk bermain catur. Tak hanya itu, program aplikasi ini juga
memungkinkan bagi semua user yang ada di dalamnya untuk menggunakan
fasilitas chatting sekaligus menjadi penonton dari pertandingan catur yang
ditampilkan.
ix
ABSTRACT
AN ONLINE CHESS USING MACROMEDIA FLASH MX 2004
Albertus Andre
015314002
Personal Computer (PC) game is one of important aspects in PC
development. Though there are a lot of games using latest features recently, yet
games with simpler features like solitaire or minesweeper still popular, since
sometimes people love to play just a simple game. Considering that, the writer
was inspired to make a game having simple features conducting with latest
technology inside, which is an online chess using Macromedia Flash MX 2004.
Macromedia Flash MX 2004 is chosen because of its ability in animation
and its .swf format ability to compress picture and sound files, including the
vector formats, into tiny files. In this game, Macromedia Flash MX 2004 is
supported by ElectroServer 3, a socket server specially constructed by Electrotank
for multiplayer game and chat application. The cooperation of Macromedia Flash
MX 2004 and ElectroServer 3 will later on come to an application which is
capable to send and accept data in a network using programming language of
flash, which is ActionScript 2.0.
The result of this implementation is an online forum with a facility to play
chess for 2 users. Moreover, that application program also enables all users in the
forum to use chatting facility and being spectators of the played chess at the same
moment.
x
PRAKATA
Puji syukur penulis panjatkan kepada Tuhan Yesus Kristus karena atas
berkat dan pimpinan–Nya penulis dapat menyelesaikan skripsi berjudul
Permainan Catur Online Dengan Menggunakan Macromedia Flash MX 2004
sebagai salah satu syarat untuk memperoleh gelar Sarjana Teknik (S.T.) pada
Program Studi Teknik Informatika, Fakultas Teknik, Universitas Sanata Dharma.
Dalam penyusunan ini, penulis telah banyak memperoleh bantuan dari
berbagai pihak, berupa materi maupun bimbingan, serta dorongan semangat dan
doa.
Pada kesempatan ini penulis mengucapkan terima kasih kepada :
1. Agnes Maria Polina, S.Kom., M.Sc., selaku dosen pembimbing tugas akhir
yang telah meluangkan waktu untuk memberi bimbingan serta nasihat
kepada penulis.
2. St. Yudianto Asmoro, S.T., selaku dosen pembimbing dan dosen penguji.
3. Alb. Agung Hadhiatma, S.T., M.T., selaku dosen penguji dan dosen
pembimbing akademis.
4. St. Wisnu Wijaya, S.T., selaku dosen penguji.
5. Ir. Greg. Heliarko, S.J., S.S., B.S.T., M.A., M.Sc., selaku Dekan Fakultas
Teknik.
6. Papa & mama yang dengan sabar terus menerus memberikan dorongan
semangat dan omelan.
xi
7. Beben yang selalu memperhatikan dan memberi dukungan, walaupun
selalu kesulitan dalam menunjukkannya.
8. Cierra yang juga selalu memperhatikan by doing simple things.
9. My beloved Alice, sumber inspirasi yang memberikan perhatian yang
sangat besar yang sangat mendukung penulis baik dalam kegiatan
perkuliahan, penyusunan skripsi maupun dalam kehidupan sehari–hari.
10. Qme a-ay, om Deni, om Dede, I-ie Yuyin, om Kris, om Ness, Oma, Kung–
kung dan seluruh keluarga besar yang tidak dapat disebutkan satu persatu.
11. My little cousins Sammy, Dee dee, Ardi, Arli, Io, O’neil, Arcel, Fin fin,
Carla, David, Fiel, Beleza.
12. Teman–teman seperjuangan yang bersama-sama mengalami kerasnya
kehidupan skripsi, Bernad, Teguh, Tatag, Rita, Detty, Tina, Alice.
13. Teman–teman selama di Jogja yang secara langsung maupun tidak
langsung mendukung kegiatan perkuliahan dan yang mengalami susah
senang bersama, Tatag, Ndon, Lia, Bernad, Siska, Agus, Ucok, Tanto,
Teguh, Gatot, Munyuk, Claus, Batok, Emon, Tito, Heston, Yuli, Mono,
Ipung.
14. Teman–teman TI’01 yang banyak memberikan kenangan selama masa
perkuliahan.
15. Seluruh mahasiswa Teknik Informatika, yang membantu penulis melalui
masa perkuliahan.
16. Seluruh mahasiswa Teknik yang membantu penulis melalui masa
perkuliahan.
xii
17. Pdt. Victor & Bu Dhani, yang sangat memperhatikan penulis dan
memberikan dukungan pangan dan doa.
18. Keluarga besar GBI Anugerah, yang memberikan dukungan semangat dan
doa , Pdt.Aken, Sofi, Pak David, Magda, Agung, Dendi dan masih banyak
lagi.
19. Keluarga besar GBI Karunia Tuhan Bandar Lampung, Pdt. Sutoyo Sigar,
Kak Yusi, Yogi, Agus.
20. Teman–teman kampung halaman, Batok, Emon, Toni, Tono, Vinda,
Martha, Syang–syang, Jerry, Ramos.
21. Mas Samadi & Mbak Yanti, sebagai bapak dan ibu kost yang sangat
memperhatikan dan yang dengan sabar menunggu keterlambatan
pembayaran listrik.
22. Seluruh Dosen dan Staff Universitas Sanata Dharma.
23. Seluruh pihak yang pernah/sedang menyertai penulis dalam melalui lika-
liku kehidupan.
24. Pihak lain yang tidak dapat disebutkan satu persatu yang telah membantu
penulis dalam menyelesaikan tugas akhir ini.
Yogyakarta, Juni 2007
Penulis,
Albertus Andre
xiii
DAFTAR ISI
HALAMAN JUDUL ............................................................................................... i
HALAMAN PERSETUJUAN PEMBIMBING .................................................... iii
HALAMAN PENGESAHAN ............................................................................... iv
HALAMAN MOTTO..............................................................................................v
HALAMAN PERSEMBAHAN ............................................................................ vi
PERNYATAAN KEASLIAN KARYA ............................................................... vii
ABSTRAKSI ....................................................................................................... viii
ABSTRACT........................................................................................................... ix
PRAKATA...............................................................................................................x
DAFTAR ISI........................................................................................................ xiii
DAFTAR TABEL.............................................................................................. xviii
DAFTAR GAMBAR ........................................................................................... xix
BAB I .......................................................................................................................1
PENDAHULUAN ...................................................................................................1
1.1. Latar Belakang .........................................................................................1
1.2. Rumusan Masalah....................................................................................2
1.3. Batasan Masalah ......................................................................................2
1.4. Tujuan ......................................................................................................2
1.5. Metodologi Penelitian..............................................................................3
1.6. Sistematika Penulisan ..............................................................................4
BAB II......................................................................................................................6
LANDASAN TEORI...............................................................................................6
xiv
2.1. Permainan Catur.......................................................................................6
2.1.1. Perkenalan Permainan Catur ............................................................... 6
2.1.2. Proses dan Peraturan Permainan Catur ............................................... 7
2.1.2.1. Proses Permainan ........................................................................ 7
2.1.2.2. Peraturan Permainan ................................................................... 8
2.2. Macromedia Flash MX 2004 .................................................................15
2.2.1. ActionScript 2.0................................................................................. 18
2.2.1.1. Istilah-istilah dalam ActionScript 2.0 ........................................ 18
2.2.1.2. Syntax ActionScript 2.0 ............................................................. 21
2.3. ElectroServer 3 ......................................................................................22
2.3.1. Kelebihan ElectroServer 3 ................................................................ 23
2.3.2. Instalasi ............................................................................................. 24
BAB III ..................................................................................................................25
PERANCANGAN SISTEM ..................................................................................25
3.1. Proses Umum .........................................................................................25
3.1.1. Menu Start Game .............................................................................. 26
3.1.1.1. Menu Create Game ................................................................... 27
3.1.1.2. Menu Join Game ....................................................................... 29
3.1.1.3. Proses Permainan ...................................................................... 30
3.1.2. Menu Help......................................................................................... 35
3.1.3. Menu Credit ...................................................................................... 36
3.2. Perancangan Antarmuka ........................................................................37
3.2.1. Scene Menu ....................................................................................... 37
xv
3.2.2. Scene Setting ..................................................................................... 38
3.2.3. Scene Create Game ........................................................................... 38
3.2.4. Scene Menunggu Player ................................................................... 39
3.2.5. Scene Player Ditemukan................................................................... 39
3.2.6. Scene Join Game ............................................................................... 40
3.2.7. Scene Game ....................................................................................... 40
3.2.8. Scene Peringatan Skak ...................................................................... 41
3.2.9. Scene Penawaran Remis.................................................................... 41
3.2.10. Scene Penolakkan Remis .................................................................. 42
3.2.11. Scene Konfirmasi Menyerah............................................................. 42
3.2.12. Scene Ending ..................................................................................... 42
3.2.13. Scene Help......................................................................................... 43
3.2.14. Scene Credit ...................................................................................... 43
BAB IV ..................................................................................................................44
IMPLEMENTASI SISTEM...................................................................................44
4.1. Pengaturan PC........................................................................................44
4.2. Tampilan Program Aplikasi Dan Potongan Listing Program ................46
4.2.1. Menu Utama...................................................................................... 46
4.2.2. Menu Game ....................................................................................... 47
4.2.2.1. Koneksi ElectroServer .............................................................. 47
4.2.2.2. Login Game ............................................................................... 48
4.2.2.3. Scene Chat................................................................................. 51
4.2.2.3.1. User List ................................................................................ 52
xvi
4.2.2.3.2. Chat Room List...................................................................... 54
4.2.2.3.3. Game Room List .................................................................... 56
4.2.2.3.4. Chat History .......................................................................... 61
4.2.2.3.5. Chat Message Box................................................................. 62
4.2.2.3.6. Room Info .............................................................................. 63
4.2.2.3.7. User Info ............................................................................... 63
4.2.2.3.8. New Room Button.................................................................. 63
4.2.2.3.9. New Game Button ................................................................. 65
4.2.2.4. Scene Game ............................................................................... 67
4.2.2.4.1. Chess Board .......................................................................... 68
4.2.2.4.2. Timer Box & Player Info....................................................... 75
4.2.2.4.3. Move History Box.................................................................. 78
4.2.2.4.4. Chat History .......................................................................... 78
4.2.2.4.5. Chat Message Box................................................................. 79
4.2.2.4.6. Spectator List ........................................................................ 80
4.2.2.4.7. Resign Button ........................................................................ 81
4.2.2.4.8. Draw Button .......................................................................... 82
4.2.2.4.9. Rematch Button ..................................................................... 84
4.2.2.4.10. Lobby Button ........................................................................ 87
4.2.3. Menu Credit ...................................................................................... 87
4.2.4. Menu Help......................................................................................... 88
BAB V ...................................................................................................................89
ANALISA HASIL .................................................................................................89
xvii
5.1. Uji Coba Perangkat Lunak.....................................................................89
5.1.1. Uji Coba Scene Chat ......................................................................... 89
5.1.2. Uji Coba Scene Game ....................................................................... 90
5.2. Analisa Manfaat .....................................................................................91
5.3. Analisa Teknologi ..................................................................................91
5.4. Kelebihan dan Kekurangan aplikasi ......................................................92
BAB VI ..................................................................................................................94
PENUTUP..............................................................................................................94
6.1. Kesimpulan ............................................................................................94
6.2. Saran ......................................................................................................94
DAFTAR PUSTAKA ............................................................................................95
xviii
DAFTAR TABEL
Tabel 2.1 Susunan buah catur pada awal permainan ...............................................7
Tabel 2.2 File Gambar ...........................................................................................16
Tabel 2.3 File Suara ...............................................................................................16
Tabel 2.4 File Video...............................................................................................16
Tabel 2.5 Tipe File Ekspor ....................................................................................17
Tabel 2.6 Tipe File Impor ......................................................................................17
xix
DAFTAR GAMBAR
Gambar 2.1 Papan Catur ..........................................................................................6
Gambar 2.2 Susunan buah catur pada awal permainan ...........................................7
Gambar 2.3 Gerakan bidak ......................................................................................9
Gambar 2.4 Gerakan benteng.................................................................................10
Gambar 2.5 Gerakan Kuda ....................................................................................11
Gambar 2.6 Gerakan gajah ....................................................................................11
Gambar 2.7 Gerakan menteri .................................................................................12
Gambar 2.8 Gerakan raja .......................................................................................12
Gambar 2.9 Blokir .................................................................................................13
Gambar 2.10 Promosi ............................................................................................14
Gambar 3.1 Flowchart Umum...............................................................................25
Gambar 3.2 Flowchart Start Game........................................................................26
Gambar 3.3 Flowchart Create Game.....................................................................27
Gambar 3.4 Flowchart Menunggu Player .............................................................28
Gambar 3.5 Flowchart Player Ditemukan.............................................................29
Gambar 3.8 Flowchart Konfirmasi Remis.............................................................34
Gambar 3.9 Flowchart Konfirmasi Menyerah.......................................................35
Gambar 3.10 Flowchart Scene Ending ..................................................................35
Gambar 3.12 Flowchart Credit ..............................................................................37
Gambar 3.13 Scene Menu ......................................................................................37
Gambar 3.14 Scene Setting ....................................................................................38
xx
Gambar 3.15 Scene Create Game ..........................................................................38
Gambar 3.16 Scene Menunggu Player ..................................................................39
Gambar 3.17 Scene Player Ditemukan..................................................................39
Gambar 3.18 Scene Join Game ..............................................................................40
Gambar 3.19 Scene Game ......................................................................................41
Gambar 3.20 Scene Peringatan Skak .....................................................................41
Gambar 3.21 Scene Penawaran Remis...................................................................41
Gambar 3.22 Scene Penolakkan Remis..................................................................42
Gambar 3.23 Scene Konfirmasi Menyerah............................................................42
Gambar 3.24 Scene Ending ....................................................................................43
Gambar 3.25 Scene Help........................................................................................43
Gambar 3.26 Scene Credit .....................................................................................43
Gambar 4.1 Download Flash Player – Opera .......................................................45
Gambar 4.2 Download Flash Player – Mozilla Firefox ........................................46
Gambar 4.3 Menu Utama.......................................................................................47
Gambar 4.4 Scene Login ........................................................................................49
Gambar 4.5 Pesan Username Telah Digunakan ....................................................51
Gambar 4.6 Scene Chat..........................................................................................52
Gambar 4.7 Popup clip private ..............................................................................53
Gambar 4.8 Popup Clip Join Room 1 ....................................................................55
Gambar 4.9 Popup Clip Join Room 2 ....................................................................56
Gambar 4.10 Gameclipholder................................................................................57
Gambar 4.11 Satu pemain putih.............................................................................58
xxi
Gambar 4.12 Satu pemain hitam............................................................................58
Gambar 4.13 Popup clip Join Game tanpa password ............................................59
Gambar 4.14 Popup clip Join Game dengan password .........................................59
Gambar 4.15 Chat History .....................................................................................62
Gambar 4.16 Chat Message Box............................................................................62
Gambar 4.17 Popup clip new room .......................................................................64
Gambar 4.18 Popup clip new room .......................................................................65
Gambar 4.19 Scene Game ......................................................................................68
Gambar 4.20 Scene Game 2 ...................................................................................69
Gambar 4.21 Popup clip promotion.......................................................................70
Gambar 4.22 Timer Box .........................................................................................76
Gambar 4.23 Move History Box.............................................................................78
Gambar 4.24 Chat History .....................................................................................79
Gambar 4.25 Chat Message Box............................................................................79
Gambar 4.26 Spectator list ....................................................................................80
Gambar 4.27 Popup clip resign .............................................................................81
Gambar 4.28 Popup clip draw ...............................................................................82
Gambar 4.29 Popup clip waiting ...........................................................................83
Gambar 4.30 Popup clip draw request ..................................................................83
Gambar 4.31 Popup clip draw yes .........................................................................84
Gambar 4.32 Popup clip draw no ..........................................................................84
Gambar 4.33 Restart request .................................................................................85
Gambar 4.34 Rematch waiting...............................................................................85
xxii
Gambar 4.35 Rematch request ...............................................................................86
Gambar 4.36 Restart no .........................................................................................86
Gambar 4.37 Menu Credit .....................................................................................87
Gambar 4.38 Menu Help ........................................................................................88
1
BAB I
PENDAHULUAN
1.1.Latar Belakang
Game pada Personal Computer (PC) merupakan salah satu unsur penting
dalam perkembangan PC, kini jenis game pada PC sudah tidak terhitung lagi
jumlahnya, mulai dari game sederhana seperti solitaire sampai pada game
simulasi 3 dimensi yang kualitasnya gambarnya hampir mendekati kenyataan
seperti Need For Speed Underground 2, bahkan kini bisnis game sangat erat
hubungannya dengan berbagai macam bisnis hiburan, seperti film dan animasi,
bahkan akhir-akhir ini bisnis game itu sendiri lebih melejit dibandingkan bisnis
hiburan lainnnya.
Walaupun pada saat sekarang ini sudah banyak game dengan berbagai
macam fitur yang sangat canggih, tetapi game dengan fitur yang lebih sederhana
seperti solitaire atau minesweeper tetap memiliki penggemarnya, karena ada
kalanya seseorang ingin memainkan game yang sederhana.
Sejak kemunculannya Macromedia Flash secara cepat telah menjadi suatu
teknologi pilihan untuk membuat animasi-animasi yang dinamis dan interaktif.
Beberapa Faktor yang mempunyai kontribusi besar pada teknologi yang membuat
animasi Flash menjadi populer adalah format .swf yang dapat mengompres file
gambar dan suara, termasuk format-format vector menjadi file dengan ukuran
yang sangat kecil. Lebih dari itu, Flash memiliki kemampuan untuk membangun
aplikasi yang mampu mengirimkan dan menerima data dalam jaringan dengan
2
menggunakan ElectroServer 3. ElectroServer 3 adalah sebuah socket server yang
dirancang khusus oleh Electrotank untuk aplikasi multiplayer gamer dan chat.
Dengan melihat fenomena yang berkembang di atas, maka timbullah suatu
ide untuk ikut berpartisipasi dalam membuat aplikasi permainan pada PC yang
berbasiskan jaringan, yaitu dengan membuat Game Catur Online.
1.2.Rumusan Masalah
Berdasarkan permasalahan di atas, aplikasi ini memiliki rumusan masalah,
yaitu bagaimana menerapkan teknologi Macromedia Flash untuk membuat
aplikasi permainan catur yang berbasiskan jaringan.
1.3.Batasan Masalah
Pembuatan aplikasi ini memiliki batasan-batasan masalah sebagai berikut:
a. Aplikasi permainan catur yang dibuat ditujukan untuk PC di dalam
jaringan.
b. Permainan catur hanya bisa berjalan jika ada 2 orang pemain, PC tidak
dapat berperan sebagai pemain lawan.
1.4.Tujuan
Pembuatan aplikasi ini memiliki tujuan untuk membangun aplikasi permainan
catur yang berbasis jaringan pada PC dengan menggunakan teknologi
Macromedia Flash khususnya Macromedia Flash MX 2004
.
3
1.5.Metodologi Penelitian
1. Observasi
Proses observasi dilakukan dengan cara bermain catur secara langsung.
Dari hasil observasi, maka dapat disusun algoritma untuk peraturan
permainan catur.
2. Studi Pustaka
Setelah melakukan proses observasi permainan catur, kemudian dipikirkan
hal-hal apa saja yang diperlukan untuk mendukung pembuatan aplikasi
permainan. Maka kemudian dipelajari berbagai literatur yang dapat
mendukung pembuatan aplikasi, meliputi:
a. Materi tentang peraturan permainan catur internasional.
b. Berbagai materi untuk menyusun suatu aplikasi game, khususnya
dengan menggunakan teknologi Macromedia Flash MX 2004.
c. Bahasa pemrograman dalam Macromedia Flash MX, yaitu
ActionScript, khususnya ActionScript 2.0, yaitu versi bahasa
pemrograman terbaru dalam Macromedia Flash MX 2004 yang
kemampuannya telah ditingkatkan dari versi sebelumnya.
d. Berbagai materi tentang ElectroServer 3, aplikasi yang memungkinkan
komunikasi atau pengiriman data antar aplikasi yang dibuat dengan
Macromedia Flash MX 2004.
3. Implementasi
Pada tahap ini semua rancangan permainan catur diterapkan dalam bentuk
aplikasi.
4
Perangkat lunak yang digunakan dalam implementasi antara lain:
1. Sistem Operasi Windows XP Profesional versi 5.1.2600 Service Pack 1
build 2600
2. Macromedia Flash MX 2004
3. JRE 1.4.2
4. ElectroServer 3
5. Adobe Photoshop CS
1.6.Sistematika Penulisan
BAB I PENDAHULUAN
Bab ini berisi tentang deskripsi umum isi tugas akhir yang
meliputi latar belakang masalah, rumusan masalah, batasan
masalah, tujuan tugas akhir, metodologi tugas akhir dan
sistematika penulisan.
BAB II LANDASAN TEORI
Bab ini berisi tentang pengenalan dan penjelasan permainan catur,
aturan permainan catur dan materi-materi tentang Macromedia
Flash MX 2004 dan ElectoServer 3
BAB III PERANCANGAN SISTEM
Bab ini berisi tentang perancangan proses dan perancangan
antarmuka dari aplikasi permainan yang dibuat.
BAB IV IMPLEMENTASI SISTEM
5
Bab ini berisi deskrpsi tentang tahap penulisan program dan
implementasi rancangan system ke dalam sistem yang
sesungguhnya.
BAB V ANALISA HASIL
Bab ini berisi analisa dari aplikasi melalui uji coba, baik dari segi
manfaat dan teknologi. Bab ini juga menjabarkan kelebihan dan
kekurangan aplikasi.
BAB VI PENUTUP
Bab ini berisi tentang kesimpulan penulis berdasarkan rumusan
masalah yang dihadapi dan saran yang diberikan penulis pada
pembaca berkaitan dengan pengembangan aplikasi Macromedia
Flash MX 2004 yang menjadi bahan penulisan.
6
BAB II
LANDASAN TEORI
2.1. Permainan Catur
2.1.1. Perkenalan Permainan Catur
Catur adalah permainan yang berasal dari India sekitar abad ke-6. Dari
kemunculannya yang pertama hingga sekarang permainan catur hanya mengalami
sedikit perubahan, yaitu munculnya menteri/ratu dan gerakan blokir pada abad ke-
15 dan sedikit penyesuaian perubahan gerakan pada abad ke-18.
Permainan Catur menggunakan sebuah papan yang terdiri dari 8 baris dan
8 kolom sehingga membentuk sebuah papan berbentuk persegi yang terdiri dari 64
persegi dengan pewarnaan yang bergantian.
Gambar 2.1 Papan Catur
Tujuan utama dari permainan ini adalah untuk menjebak raja dari pemain
lawan atau disebut ‘Skak-Mat’ dengan menggunakan buah-buah catur yang telah
disediakan untuk masing-masing pemain dimana tiap-tiap buah catur memiliki
fungsi dan kemampuan yang berbeda.
7
2.1.2. Proses dan Peraturan Permainan Catur
2.1.2.1. Proses Permainan
Pada permulaan permainan, seorang pemain mempunyai 16 buah catur
berwarna terang (putih), sedangkan pemain lainnya mempunyai 16 buah catur
yang juga berwarna gelap (hitam) yang disusun sedemikian rupa dengan patokan
menteri putih selalu berada di kolom berwarna putih dan sebaliknya. Baik buah
hitam maupun putih masing-masing mempunyai 1 Raja, 1 Menteri/Ratu, 2
Benteng, 2 Gajah, 2 Kuda dan 8 Bidak/Pion. Susunan awal buah catur pada dapat
dilihat pada tabel berikut.
Benteng Kuda Gajah Menteri Raja Gajah Kuda Benteng
Bidak Bidak Bidak Bidak Bidak Bidak Bidak Bidak
Bidak Bidak Bidak Bidak Bidak Bidak Bidak Bidak
Benteng Kuda Gajah Menteri Raja Gajah Kuda Benteng
Tabel 2.1 Susunan buah catur pada awal permainan
Gambar 2.2 Susunan buah catur pada awal permainan
8
Permainan catur dimainkan oleh dua orang pemain yang berlawanan
dengan jalan memindahkan buah catur di atas papan catur secara bergantian dan
pemain dengan buah catur berwarna putih selalu melakukan gerakan pertama.
Setiap buah catur memiliki metode gerakannya masing-masing dan tiap
buah catur dapat menangkap/memakan buah catur lawan dengan cara melangkah
ke tempat dimana buah catur lawan berada dengan tetap mengikuti aturan gerakan
dari buah catur tersebut.
Permainan berakhir pada saat raja dari salah satu pemain terjebak oleh
buah catur lawan atau dalam istilah catur disebut ‘skak’ dan raja tersebut tidak
mempunyai gerakan sah untuk menghindar dari buah catur lawannya atau disebut
‘skak-mat’.
Gerakan tidak sah adalah gerakan dari seorang pemain yang
mengakibatkan raja dari pemain itu sendiri terkena skak.
2.1.2.2. Peraturan Permainan
(a) Aturan Umum
Pada awal permainan pemain yang memiliki buah catur berwarna
putih melakukan gerakan pertama, dan kemudian gerakan dilakukan
secara bergantian dan kedua pemain memiliki kebebasan untuk
menjalankan buah caturnya..
Jika raja terkena ‘skak’, maka pemain diharuskan menghindari
ancaman ‘skak’ tersebut.
Permainan berakhir bila raja dari salah satu pemain tidak dapat
menghindar dari ancaman ‘skak’ dari pemain lawan, atau bila salah satu
9
pemain tidak mempunyai gerakan sah namun raja dari pemain tersebut
tidak dalam keadaan skak atau dikenal dengan istilah ‘remis’. Jika terjadi
keadaan ini, maka permainan dianggap berakhir seri.
(b) Aturan Gerakan
a. Bidak
Bidak adalah satu-satunya buah catur yang tidak dapat bergerak
mundur, bidak hanya dapat bergerak lurus ke depan kecuali
pada saat bidak tersebut menangkap buah catur lawan. Bidak
hanya dapat bergerak 1 kolom ke depan kecuali jika bidak itu
belum bergerak sama sekali, maka bidak tersebut boleh
bergerak sebanyak 2 kolom ke arah depan. Bidak hanya dapat
menangkap buah catur lawan yang berada di depannya 1 kolom
secara diagonal, bidak tidak dapat menangkap buah catur lawan
yang berada di depannya.
Gambar 2.3 Gerakan bidak (titik biru adalah gerakan bidak, titik merah
adalah gerakan bidak pada saat menangkap buah catur lawan)
b. Benteng
Benteng dapat bergerak secara vertikal dan horisontal dengan
bebas, benteng tidak mempunyai batasan kolom untuk
melakukan gerakan, benteng dapat berpindah kolom sebanyak
10
yang diinginkan pemain. Cara benteng bergerak sama dengan
cara benteng menangkap buah catur lawan, selama buah catur
lawan yang ingin ditangkap berada dalam garis vertikal atau
horisontal tempat benteng berada, maka buah catur lawan dapat
ditangkap oleh benteng, dengan catatan tidak ada buah catur
lain yang menghalangi buah catur tersebut, baik buah catur
lawan ataupun buah catur milik sendiri.
Gambar 2.4 Gerakan benteng
c. Kuda
Kuda adalah satu-satunya buah catur yang dapat melompati
buah catur lainnya, Gerakan kuda biasa disebut sebagai gerakan
yang membentuk huruf “L”, yaitu kuda bergerak satu langkah
secara horisontal kemudian dua langkah secara vertikal atau
satu langkah secara vertikal kemudian dua langkah secara
horisontal. Cara kuda menangkap buah catur lawan, sama
dengan cara kuda bergerak.
11
Gambar 2.5 Gerakan Kuda
d. Gajah
Buah catur ini hanya dapat bergerak secara diagonal tanpa
batasan banyaknya kolom yang dapat dilewati dalam sekali
gerakan. Cara gajah menangkap buah catur lawan sama dengan
caranya bergerak.
Gambar 2.6 Gerakan gajah
e. Menteri
Menteri atau biasa dikenal sebagai ratu dapat bergerak secara
vertikal, horisontal, dan diagonal tanpa batasan banyak kolom
yang harus dilalui dalam tiap gerakan. Cara menteri menangkap
buah catur lawan sama dengan caranya bergerak.
12
Gambar 2.7 Gerakan menteri
f. Raja
Sama dengan menteri raja juga dapat bergerak secara
horisontal, vertikal dan diagonal, tetapi dengan pengecualian
raja hanya dapat bergerak sebanyak satu langkah atau satu
kolom, dan raja tidak dapat bergerak ke kolom dimana dia akan
terkena ancaman ‘skak’. Cara raja menangkap buah catur lawan
sama dengan cara raja bergerak.
Gambar 2.8 Gerakan raja
g. Blokir
Blokir adalah suatu gerakan spesial dimana pemain dapat
memindahkan lebih dari satu buah catur dalam 1 kali gerakan
13
yaitu raja dan benteng. Blokir juga satu-satunya gerakan
dimana raja boleh bergerak lebih dari satu kolom.
Agar dapat melakukan blokir ada 3 syarat yang harus dipenuhi
yaitu :
1. Baik raja ataupun benteng yang akan melakukan blokir
harus belum pernah melakukan gerakan.
2. Tidak boleh ada buah catur sama sekali diantara raja dan
benteng yang akan melakukan blokir.
3. Raja tidak sedang dalam kondisi ‘skak’, dan tidak ada buah
catur lawan yang dapat mengancam raja dengan kondisi
‘skak’ baik pada tempat raja akan berpindah ataupun di
kolom yang akan dilalui raja.
Cara melakukan gerakan blokir adalah dengan memindahkan
benteng tepat ke samping raja kemudian raja melompati
benteng yang mendekatinya itu. Untuk lebih jelasnya bisa
dilihat pada Gambar 2.9.
Gambar 2.9 Blokir
14
Posisi buah catur pada gambar adalah posisi awal sebelum
melakukan blokir, titik berwarna kuning adalah posisi raja
setelah melakukan blokir, titik berwarna merah muda adalah
posisi benteng setelah melakukan blokir. Titik yang berada di
sebelah kiri raja adalah posisi buah catur setelah melakukan
blokir bila raja melakukan blokir dengan benteng sebelah kiri,
sedangkan titik yang berada di sebelah kanan raja adalah posisi
buah catur setelah melakukan blokir bila raja melakukan blokir
dengan benteng sebelah kanan.
h. Promosi
Promosi hanya dapat dilakukan oleh bidak. Promosi terjadi
apabila bidak salah seorang pemain mencapai ujung papan
catur (daerah lawan). Bila bidak tersebut berhasil mencapai
ujung dari papan catur, maka pemain berhak untuk mengganti
bidak tersebut dengan buah catur lainnya kecuali raja. Untuk
lebih jelasnya dapat dilihat pada gambar 2.10 berikut.
Gambar 3.10 Promosi
15
Posisi awal adalah posisi awal bidak pada awal permainan, jika
sebuah bidak dapat mencapai posisi akhir seperti pada gambar
maka terjadi promosi. Semua bidak dalam permainan catur
dapat melakukan promosi, dan tidak ada batasan berapa banyak
bidak yang dapat melakukan promosi.
2.2.Macromedia Flash MX 2004
Macromedia Flash MX 2004 adalah merupakan versi terbaru dari
Macromedia Flash. Macromedia Flash adalah suatu aplikasi untuk
membuat aplikasi animasi yang dinamis dan interaktif yang diproduksi oleh
Macromedia.
Pada awalnya Macromedia Flash mempunyai fungsi utama untuk
membuat animasi namun seiring dengan perkembangannya Macromedia
Flash kini telah memiliki kemampuan yang sangat luas, dan dapat dipakai
untuk membuat berbagai macam aplikasi seperti Mp3 Player, voice chat,
basisdata dalam jaringan, organizer dan berbagai macam game online.
Macromedia Flash MX 2004 memiliki banyak sekali fitur,
diantaranya adalah ActionScript 2.0, yaitu versi terbaru bahasa pemrograman
di dalam Macromedia Flash yang sudah menggunakan konsep Object
Oriented Programming (OOP).
16
Jenis-jenis file yang didukung oleh Macromedia Flash MX 2004
untuk diimpor :
1. File Gambar
Tipe File Extensi Adobe Illustrator .eps, ai AutoCad DXF .dxf Bitmap .bmp Enhanced Windows Metafile .emf FreeHand .fh7, .fh8, .fh9, .fh10 Future Splash Player .spl GIF dan Animated GIF .gif JPEG .jpg PICT .pct, .pic PNG .png Flash Player .swf Windows Metafile .wmf
Tabel 2.2 File Gambar
2. File Suara
Tipe File Extensi Mp3 .mp3 WAV Audio .wav
Tabel 2.3 File Suara
3. File Video
Tipe File Extensi Audio Video Interleaved .avi Digital Video .dv Motion Picture Express Group .mpg, .mpeg Quick Time Movie .mov Windows Media File .wmv, .asf
Tabel 2.4 File Video
17
Jenis – jenis file yang didukung oleh Macromedia Flash MX 2004
untuk diekspor :
Tipe File Extensi Adobe Ilustrator .ai Animated GIF, GIF Sequence .gif Bitmap .bmp DXF Sequence & AutoCad .dxf Enhanced Metafile .emf EPS .eps Flash Movie .swf Future Splash Player .spl JPEG Sequence & JPEG Image .jpg PNG Sequence & JPEG Image .png WAV Audio .wav Windows Metafile .wmf Audio Video Interleaved .avi
Tabel 2.5 Tipe File Ekspor
Jenis – jenis file yang dapat dihasilkan oleh Macromedia Flash MX
2004 :
Tipe File Extensi Flash Movie .swf HTML .html GIF Image .gif JPEG Image .jpg PNG Image .png Windows Projector .exe Macintosh Projector .hqx QuickTime Movie .mov
Tabel 2.6 Tipe File Impor
18
2.2.1. ActionScript 2.0
ActionScript 2.0 merupakan bahasa pemrograman di dalam Macromedia
Flash MX 2004 yang sudah mendukung OOP dan bersifat case sensitive.
2.2.1.1. Istilah-istilah dalam ActionScript 2.0
1. Actions
Pernyataan yang menginstruksikan file .swf untuk melakukan aksi
saat file tersebut dijalankan.
2. Boolean
Pernyataan yang berisi nilai true atau false
3. Class
Suatu tipe data untuk mendefinisikan suatu objek.
4. Konstanta
Merupakan suatu elemen yang tidak berubah. Seperti konstanta
untuk tombol tab pada keyboard selalu sama.
5. Constructors
Fungsi yang digunakan untuk mendefinisikan properti dan method
suatu kelas. Constructor merupakan suatu fungsi yang mempunyai
nama yang sama dengan nama dari kelas tersebut.
6. Tipe Data
19
Pendefinisian jenis informasi suatu variabel. Tipe data dalam
ActionScript antara lain : String, Number, Boolean, Object,
Movieclip, Function, null, dan undefined.
7. Events
Suatu pernyataan yang menginstruksikan file .swf untuk
melakukan aksi pada saat file tersebut tengah berjalan.
8. Event Handlers
Pernyataan khusus yang mengatur event.
9. Ekspresi
Suatu kombinasi dari simbol ActionScript yang mempunyai nilai.
Contoh : x + 2
10. Fungsi
Blok koding yang bersifat reusable dan dapat melewatkan
parameter dan mengembalikan suatu nilai.
11. Identifier
Nama yang mengindikasikan suatu variabel, property, objek,
fungsi, atau method. Suatu identifier diawali dengan karakter “_”
atau karakter “$”.
12. Instances
Suatu Objek dari class tertentu, setiap instance dari class
mengandung semua property dan method dari class tersebut.
13. Nama Instance
20
Nama yang unik dari instance movieclip dan button.
14. Methods
Fungsi yang merupakan bagian dari class.
15. Objek
Kumpulan properti dan method. Setiap objek mempunyai namanya
sendiri sebagai instance dari suatu class.
16. Operators
Istilah dari perhitungan nilai yang baru.
Contoh : Operator tambah (+)
17. Parameters
Penampung nilai yang dapat dapat dilewatkan ke dalam suatu
fungsi.
18. Target Paths
Hirarki nama instance movie clip, variabel dan objek dalam file
.swf yang digunakan untuk memberikan perintah pada suatu
movie clip atau mengambil atau memberi nilai pada suatu variabel.
19. Variables
Identifikasi yang menampung suatu niali dari berbagai macam tipe
data. Variabel dapat dibuat, diubah dan diperbaharui.
21
2.2.1.2. Syntax ActionScript 2.0
Seperti halnya bahasa pemrograman lainnya, ActionScript mempunyai
aturan syntax yang harus dipatuhi untuk mendapatkan script yang dapat di
dikompilasi dan dijalankan dengan benar.
Elemen-elemen yang perlu diperhatikan dalam ActionScript 2.0 antara
lain :
1. Case Sensitive
Karena ActionScript 2.0 bersifat CaseSensitive, variabel dengan
nama yang sama dapat menjadi variabel yang berbeda jika
penulisan namanya berbeda.
Contoh : Catur ≠ catur ≠ CATUR
Case Sensitive juga berlaku pada fungsi, class, method dan
keyword.
2. Dot Syntax
Dot/titik (.) digunakan untuk mengindikasikan properti atau
method suatu objek atau movieclip. Titik juga digunakan untuk
mengidentifikasikan target path ke suatu movieclip, variabel,
fungsi, atau objek.
3. Kurung Kurawal
Event handler dari ActionScript, definisi class dan juga fungsi
dikelompokkan dalam suatu blok dengan menggunakan kurung
kurawal.
22
4. Titik koma
Kalimat dalam ActionScript dipisahkan oleh titik koma.
5. Kurung
Digunakan untuk menempatkan parameter dari suatu fungsi.
6. Komentar
Komentar dalam ActionScript dibuat dengan menggunakan
tanda 2 garis miring (//) atau diawali dengan tanda /* dan
diakhiri dengan tanda */.
7. Kata Kunci
Kata yang secara default digunakan ActionScript untuk tujuan
tertentu, kata kunci tidak dapat digunakan sebagai nama
variabel, fungsi atau label nama.
2.3.ElectroServer 3
ElectroServer 3 adalah socket server yang diciptakan oleh Electrotank.
Walaupun ElectroServer 3 dapat digunakan untuk hampir semua aplikasi multi-
user, pada dasarnya ElectroServer 3 dibuat untuk Aplikasi game multiplayer dan
chat. Dengan demikian ElectroServer 3 memiliki fitur-fitur yang membuat
pembuatan aplikasi chat dan game multiplayer menjadi mudah.
ElectroServer 3 merupakan suatu aplikasi Java, yang artinya ElectroServer 3
dapat dijalankan oleh komputer yang dapat Menjalankan Java Runtime
Environment (JRE),atau dikenal juga dengan nama Java Virtual Machine. Sistem
Operasi yang mendukung JRE antara lain Windows 98/NT/ME/2000/XP,
23
Macintosh, Unix, Solaris dan Linux. Jadi dapat disimpulkan bahwa ElectroServer
3 dapat dijalankan hampir dimana saja.
2.3.1. Kelebihan ElectroServer 3
1. Sangat Stabil
ElectroServer 3 telah diuji dengan lebih dari 10.000 koneksi secara
bersamaan dan masih tetap berjalan dengan baik tidak seperti socket
server lain pada umumnya yang hanya mampu menampung beberapa
ratus koneksi.
2. Client – side API(Application Protocol Interface) yang baik
Telah tersedia protokol untuk koneksi dengan Flash, baik dengan
ActionScript 1.0 atau ActionScript 2.0.
3. Admin Client berbasis web yang baik
Didalam ElectroServer 3 telah disediakan Client yang dapat berlaku
sebagai Admin dalam sebuah aplikasi yang berbasis web yang dapat
mengkonfigurasi berbagai fungsi server, juga dapat digunakan untuk
melihat informasi real-time tentang CPU dan penggunaan memori.
4. Dapat dijalankan dimana saja
ElectroServer 3 dapat berjalan pada platform manapun yang
mendukung Java, antara lain Windows 98/NT/ME/2000/XP,
Macintosh, Unix, Solaris dan Linux. Jadi dapat disimpulkan bahwa
ElectroServer 3 dapat dijalankan hampir dimana saja.
24
2.3.2. Instalasi
Untuk dapat menginstal ElectroServer 3, sebelumnya dibutuhkan Java
Runtime Environment 1.4.2. Secara default ElectroServer 3 akan mengeset IP
address untuk web server pada alamat 127.0.0.1 pada port 8080 dan IP untuk
listener pada alamat 127.0.0.1 pada port 9875, alamat default ini hanya dapat
digunakan untuk pengetesan ElectroServer 3 pada komputer lokal, jika
ElectroServer ingin dijalankan dalam suatu jaringan, maka alamat tersebut harus
diubah pada alamat yang dapat dilihat oleh komputer lain.
25
BAB III
PERANCANGAN SISTEM
Pada bab ini akan dibahas tantang proses umum, perancangan antarmuka dan
perancangan proses dan contoh kasus.
3.1. Proses Umum
Proses secara umum yang terjadi pada aplikasi permainan catur ini, dapat
dilihat pada gambar 3.1.
Start
Scene Menu
Memilih Start
Memilih Credit
Memilih Help 3
2
1
no
no
yes
yes
yes
no
Gambar 3.1 Flowchart Umum
26
Pada saat permainan dieksekusi, maka akan akan muncul scene
menu yang terdiri dari tombol – tombol antara lain Start Game, Help,
Credit dan Exit. Bila user memilih tombol Exit, maka aplikasi permainan
ini akan berhenti, namun bila user memilih tombol lainnya selain tombol
Exit, maka aplikasi permainan akan menjalankan Scene lain sesuai dengan
fungsi dari tombol tersebut.
3.1.1. Menu Start Game
Menu Start Game adalah menu utama dalam aplikasi permainan catur ini,
karena di dalam menu inilah terjadi proses permainan antara user 1 melawan user
2. Menu Start Game ini memiliki 2 Sub menu dan 1 tombol. Proses Menu Start
Game dapat dilihat pada Gambar 3.2 berikut.
1
Scene GameSetting
Create Game
Join Game
Memilih Back Scene Menu
no
no
no
yes
yes
yes
1a
1b
Gambar 3.2 Flowchart Start Game
27
Setelah user memilih Menu Start Game pada Scene Menu, maka aplikasi
akan menampilkan scene Start game yang memiliki 1 tombol dan 2 sub menu
yaitu Create Game dan Join Game yang masing – masing akan mengeksekusi
scene lain sesuai dengan fungsinya. Jika user memilih tombol Back, maka
Aplikasi akan kembali ke Scene Menu.
3.1.1.1. Menu Create Game
Jika user memilih Menu Create Game maka aplikasi akan
menampilkan Scene Create Game, dan user akan memainkan buah catur yang
berwarna putih. Proses pada Scene Create Game ini dapat dilihat pada Gambar
3.3.
Nam a Gam e Sudah D iinput yes
1a
Scene Create Gam e
Scene Gam e Setting
M em ilih Back
no
1a1
Gambar 3.3 Flowchart Create Game
Pada Scene Create Game ini juga, user diharuskan menginputkan
nama dari game. Jika user memilih tombol back, maka aplikasi akan kembali ke
Scene Game Setting. Setelah user menginputkan nama game, kemudian aplikasi
28
permainan akan menampilkan Scene Menunggu Player. Proses Scene Menunggu
Player dapat dilihat pada gambar berikut.
Player Ditemukan
Scene Menunggu
Player
1a1
yes
no
1a2
Sudah X detik/Player ditemukan
yes
no
Memilih Cancel
no
Scene Create Game
Gambar 3.4 Flowchart Menunggu Player
Setelah User menginputkan nama game, maka aplikasi akan menunggu
adanya player lain (user kedua) agar proses permainan dapat dijalankan, jika
dalam jangka waktu tertentu client tidak juga ditemukan, atau belum ada user
kedua, maka user yang membuat game akan ditanya apakah user akan tetap
menunggu atau tidak, jika user memilih tidak, maka aplikasi permainan akan
kembali ke Scene Create Game, jika user memilih untuk tetap menunggu, maka
aplikasi permainan akan tetap menunggu user kedua. Jika user ditemukan maka
aplikasi permainan akan menampilkan Scene Player Ditemukan. Proses dari Scene
Player Ditemukan dapat dilihat pada gambar berikut.
29
G
Scene Player Ditemukan
1a2
Memilih Start
Memilih Cancel
Scene Create Game
no
yes
yesno
Gambar 3.5 Flowchart Player Ditemukan
Pada Scene Player Ditemukan ini, aplikasi permainan akan terus
menampilkan scene ini sebelum user memilih antara tombol Start atau Cancel,
jika user memilih tombol Start, maka aplikasi permainan akan memulai
permainan catur ( mengeksekusi Scene Game), namun jika user memilih Cancel,
maka aplikasi permainan akan kembali ke Scene Create Game.
3.1.1.2. Menu Join Game
Jika user memilih menu Join Game, maka user tersebut secara
otomatis akan menjadi player kedua dalam aplikasi permainan ini dan akan
memainkan buah catur berwarna hitam. Namun user hanya dapat menggunakan
menu ini jika sebelumnya sudah ada user yang membuat game dalam aplikasi
permainan ini, atau telah menyelesaikan proses Create Game. Proses menu Join
Game ini dapat dilihat pada gambar berikut.
30
Game Ditemukan Gyes Game Sudah Dipilih yes
no
1b
Scene Join Game
no
Memilih Game
Gambar 3.6 Flowchart Join Game
Setelah user memilih menu Join Game, aplikasi akan secara otomatis
memeriksa apakah sudah ada user yang menjadi player pertama dalam aplikasi
permainan ini, jika tidak ada, maka aplikasi ini akan menampilkan Scene
Peringatan selama beberapa detik, kemudian aplikasi permainan akan kembali ke
Scene Game Setting. Jika game ditemukan, maka user harus memilih game
dimana user tersebut akan bermain, karena dimungkinkan adanya lebih dari 1
game. Setelah user memilih game, maka aplikasi permainan akan memulai
permainan.
3.1.1.3. Proses Permainan
Proses permainan adalah proses utama dan terpenting di dalam aplikasi
permainan ini. Dalam proses permainan inilah kedua user bermain catur dan
berusaha untuk saling mengalahkan lawannya. Seperti yang telah dijelaskan
sebelumnya, user pertama akan memainkan buah catur berwarna putih dan user
kedua akan memainkan buah catur berwarna hitam. Proses permainan memiliki 3
sub proses, yaitu Konfirmasi Remis, Konfirmasi Menyerah dan Proses Ending
1. Scene Game
Proses permainan ini dapat dilihat pada gambar 3.7.
31
G
Scene Game
Pemain X, Giliran = APemain Y, Giliran = B
Giliran = 1
Gerakan Aktif
Gerakan Sah
Terjadi Skak
Scene Peringatan
Skak
Gerakan Tidak Aktif
Pemain lawan sudah melangkah
Gerakan Dibatalkan
C = AA = BB = C
yes
no
noyes
yes
no
no
yes
yes
Sudah X Detik yes
no
Pemain Melakukan Gerakan
G1
G2
A = 1B = 0C = 0
G3
no
Memilih Give Up
no
yes
no
Terjadi Skak Mat
Terjadi remis
no
yes
Memilih Draw Offer
no
yes G0
Timer Start
Timer Stop
G4
Gambar 3.7 Flowchart Permainan
32
Pada awal permainan aplikasi permainan akan mendeklarasikan 3 buah
variabel dengan tipe integer, yaitu A, B dan C, serta mengisi nilainya, yaitu A = 1,
B = 0 dan C = 0, dimana 3 buah variabel tersebut akan digunakan untuk mengatur
giliran user untuk melangkah. Kemudian aplikasi permainan akan menentukan
bahwa giliran pemain X adalah A dan giliran pemain Y adalah B.
Dalam Scene Game ini terdapat tombol 2 tombol, yaitu tombol Draw
Offer dan tombol Give Up, tombol Draw Offer adalah tombol untuk mengakhiri
permainan dalam keadaan seri atau ‘remis’, namun memilih tombol ini tidak
membuat permainan langsung berakhir dalam keadaan seri, tetapi user yang
memilih tombol ini memerlukan persetujuan pemain lawan untuk mengakhiri
permainan dalam keadaan seri, jika persetujuan pemain lawan tidak didapatkan,
maka permainan akan dilanjutkan kembali. Sedangkan tombol Give Up adalah
tombol untuk menghentikan permainan, pemain yang menekan tombol ini, secara
otomatis akan kalah dan permainan berakhir.
Setelah aplikasi menentukan giliran pemain, aplikasi akan memeriksa
apakah salah satu pemain memilih tombol Give Up, jika ya maka pemain tersebut
akan ditampilkan Scene Konfirmasi Menyerah. Jika tidak, maka aplikasi akan
memeriksa pemain mana yang memiliki giliran bernilai 1.
Pemain yang memiliki giliran bernilai 1 akan mendapat giliran untuk
menggerakkan buah caturnya, sedangkan pemain yang tidak memiliki nilai giliran
1, harus menunggu pemain lawannya selesai melakukan gerakan .
Scene Game ini memiliki timer untuk menghitung berapa lama waktu
yang dibutuhkan oleh pemain untuk berpikir sebelum melakukan gerakan. Timer
33
mulai menghitung pada saat gerakan diaktifkan dan berhenti pada saat pemain
selesai melangkah. Walaupun gerakan yang dilakukan oleh pemain tidak sah,
sehingga gerakan tersebut akan dibatalkan dengan mengembalikan buah catur
yang baru saja digerakkan ke posisi sebelumnya, timer tetap menghitung waktu
yang dihabiskan.
Setelah pemain melakukan gerakan, aplikasi permainan akan memeriksa
apakah gerakan yang dibuat sah atau tidak, jika gerakan tidak sah, maka gerakan
akan dibatalkan dan pemain harus melakukan gerakan lagi, jika gerakan sah, maka
aplikasi permainan akan memeriksa apakah terjadi ‘skak’, jika terjadi ‘skak’ maka
aplikasi permainan akan memeriksa apakah ‘skak’ yang terjadi adalah ‘skak mat’
atau bukan, jika terjadi ‘skak mat’, maka aplikasi akan masuk ke Scene Ending.
Jika ‘skak’ yang terjadi bukan ‘skak mat’, maka aplikasi akan memberikan
peringatan pada pemain yang terkena ‘skak’. Jika ‘skak’ tidak terjadi, aplikasi
permainan akan memeriksa, apakah terjadi ‘remis’, jika ya maka permainan akan
masuk ke scene Ending, jika tidak, permainan akan menukar nilai giliran jalan
kedua pemain.
Setelah menukar nilai giliran kedua pemain, aplikasi akan kemabali
memeriksa pemain mana yang mempunyai nilai giliran = 1, demikian seterusnya
sampai permainan berakhir.
2. Scene Konfirmasi Remis
Scene ini ditampilkan kepada lawan main dari pemain yang menekan tombol
Draw Offer. Dalam Scene ini pemain lawan diharuskan memilih apakah pemain
tersebut menerima penawaran untuk mengakhiri permainan dalam keadaan
34
‘remis’ atau tetap melanjutkan permainan. Jika pemain lawan memilih tombol yes,
maka permainan akan berakhir dalam keadaan seri, namun jika pemain lawan
memilih no, maka permainan akan dilanjutkan kembali.
Untuk lebih jelasnya dapat dilihat di Gambar 3.8 berikut.
G0
Memilih Tombol Yes
Scene Penawaran Remis di pc
pemain lawan
G2
no
yes
Scene Penolakan
Remis
G4
Gambar 3.8 Flowchart Konfirmasi Remis
3. Scene Konfirmasi Menyerah
Dalam Scene ini, user akan ditanyakan, apakah user akan menyerah, jika user
memilih yes, maka permainan akan berakhir, tetapi jika user memilih no, maka
permainan akan dilanjutkan kembali.
Untuk lebih jelasnya dapat dilihat di gambar 3.9
35
Memilih YesScene
Konfirmasi Menyerah
G1 Memlih Nono
Scene Ending
yes
no
G3
yes
Gambar 3.9 Flowchart Konfirmasi Menyerah
4. Scene Ending
Scene Ending ini menampilkan siapa pemenang permainan kali ini, atau
permainan berakhir seri(remis). Jika user sudah melihat, user dapat mengakhiri
Scene Ending ini dengan memilih OK.
Untuk lebih jelasnya dapat dilihat pada gambar 3.10
Scene Ending Scene MenuMemilih OK yes
no
G2
Gambar 3.10 Flowchart Scene Ending
3.1.2. Menu Help
Bila user memilih menu help, maka aplikasi permainan akan menampilkan
Scene Help, yang berisi peraturan dari permainan ini, Scene Help ini terdiri dari
beberapa halaman, user dapat melihat halaman berikut atau halaman sebelumnya
dengan memilih tombol yang telah disediakan.
36
Untuk lebih jelasnya, proses menu help dapat dilihat pada gambar 3.11
3
Scene HelpTampilkan
Halaman ke-“Page”
Halaman Berikut !=
NULL
Halaman Sebelum !=
NULL
Memilih Back
Tombol Next Aktif
Page =1
Tombol Previous Aktif
Memilih Next
Memilih Previous
Page = Page + 1
Page = Page - 1
Scene Menu
yes
yes
yes
no
no
yes
yes
no
no
no
Gambar 3.11 Flowchart Help
3.1.3. Menu Credit
Jika user memilih menu credit, maka aplikasi permainan akan
menampilkan Scene Credit, yang berisi tentang profil dari game dan game
developer.
Flowchart Scene Credit dapat dilihat pada gambar 3.12.
37
2
Scene Credits
Memilih Back Scene Menuyesno
Gambar 3.12 Flowchart Credit
3.2. Perancangan Antarmuka
3.2.1. Scene Menu
Pada saat awal aplikasi permainan dijalankan, maka akan muncul Scene
menu. Scene menu ini bertujuan untuk menyambut user dengan tampilan yang
menarik. Kemudian user dapat memilih menu yang tersedia dalam Scene menu.
Gambar 3.13 Scene Menu
38
3.2.2. Scene Setting
Scene Setting ini merupakan scene yang tampil jika user memilih menu
Start, Scene ini memiliki 2 sub Scene, yaitu Scene Create Game dan Scene Join
Game. Dalam scene ini user harus memilih apakah ia akan menjadi host atau
guest dalam permainan. Jika user memilih Create Game, maka user akan menjadi
Player pertama dalam permainan, tetapi jika user memilih Join Game, maka user
akan menjadi player kedua dalam permainan.
Gambar 3.14 Scene Setting
3.2.3. Scene Create Game
Scene ini akan muncul bila user memilih Create Game di Scene Setting.
Dalam Scene ini pemain harus memberi input nama pada game, kemudian pemain
akan menjadi player pertama pada game dengan nama yang baru saja diinputkan.
Gambar 3.15 Scene Create Game
39
3.2.4. Scene Menunggu Player
Scene ini muncul setelah user selesai menginputkan nama game di Scene
Create Game. Scene ini akan terus ditampilkan sampai jangka waktu tertentu, atau
sampai aplikasi permainan menemukan pemain kedua untuk memulai permainan.
Gambar 3.16 Scene Menunggu Player
3.2.5. Scene Player Ditemukan
Scene ini akan muncul jika aplikasi permainan menemukan pemain kedua,
jika user memilih tombol Cancel maka aplikasi permainan akan kembali ke Scene
Create Game, jika user memilih tombol start, maka aplikasi permainan akan
memulai permainan (masuk ke Scene Game).
Gambar 3.17 Scene Player Ditemukan
40
3.2.6. Scene Join Game
Scene ini akan muncul jika user memilih Join Game di Scene Setting, di
scene ini user yang menjadi Player kedua harus memilih salah satu dari game
yang ada.
Gambar 3.18 Scene Join Game
3.2.7. Scene Game
Scene Game akan muncul setelah user menyelesaikan setting permainan di
Scene Setting. Dalam Scene Game inilah kedua user bermain untuk saling
mengalahkan. Scene ini terbagi menjadi 6 elemen penting, yaitu :
1. Nama Pemain
2. Papan Catur
3. Tempat buah catur lawan yang sudah dimakan
4. Informasi kejadian
5. Tombol Penawaran Remis
6. Tombol Menyerah
41
Gambar 3.19 Scene Game
3.2.8. Scene Peringatan Skak
Scene Peringatan Skak muncul jika salah satu pemain terkena ‘skak’.
Gambar 3.20 Scene Peringatan Skak
3.2.9. Scene Penawaran Remis
Jika pemain memilih Draw Offer, maka aplikasi permainan akan
menampilkan Scene Penawaran Remis kepada pemain lawannya.
Gambar 3.21 Scene Penawaran Remis
42
3.2.10. Scene Penolakkan Remis
Scene Penolakkan Remis akan ditampilkan jika pemain lawan menolak
penawaran ‘remis’ yang diberikan.
Gambar 3.22 Scene Penolakkan Remis
3.2.11. Scene Konfirmasi Menyerah
Scene ini akan ditampilkan jika pemain memilih tombol Give Up. Dalam
scene ini pemain harus memilih, apakah pemain tersebut yakin akan menyerah,
jika memilih yes, maka permainan berakhir, tetapi jika memilih no, maka
permainan akan dilanjutkan kembali.
Gambar 3.23 Scene Konfirmasi Menyerah
3.2.12. Scene Ending
Scene Ending ditampilkan pada saat permainan berakhir, scene ini
memberituhukan kepada pemain status akhir dari permainan, siapa pemenangnya,
ataukah berakhir seri.
43
Gambar 3.24 Scene Ending
3.2.13. Scene Help
Dalam Scene Help ini, user dapat melihat peraturan dalam aplikasi
permainan ini.
Gambar 3.25 Scene Help
3.2.14. Scene Credit
Scene credit ini menampilkan tentang profil game dan profil pembuat
game.
Gambar 3.26 Scene Credit
44
BAB IV
IMPLEMENTASI SISTEM
Pada bab ini, penulis akan menjelaskan mengenai proses implementasi
dari sistem yang telah selesai dianalisis dan didesain agar siap untuk digunakan.
Antara lain akan dijelaskan mengenai pengaturan pada sederhana PC agar dapat
menjalankan aplikasi dengan baik. Selain itu juga akan dibahas mengenai lsiting
progam aplikasi maupun listing program ActionScript yang digunakan.
4.1. Pengaturan PC
Karena aplikasi ini merupakan aplikasi berbasis web, maka PC harus
terkoneksi dengan internet, namun penulis tidak akan membahas bagaimana
cara mengkoneksikan PC dengan internet, karena penulis menganggap itu
adalah hal yang umum. Selain itu untuk dapat menjalankan aplikasi ini, PC
juga harus memiliki Flash Player minimal versi 7 karena aplikasi ini dibuat
dengan Macromedia Flash MX 2004. Flash Player dapat didownload secara
gratis pada situs http://www.macromedia.com/go/getflashplayer. Kemudian
jika semua persiapan telah dilakukan, maka user dapat mengakses situs
dimana aplikasi ini berada. Penulis mengasumsikan bahwa user tidak akan
mengalami masalah dalam mendapatkan Flash Player, selain dengan adanya
kenyataan bahwa Flash Player dapat didownload secara gratis, hampir
semua jenis browser pada saat ini sudah memiliki kemampuan untuk
45
mendeteksi ada tidaknya Flash Player terinstal. Jika tidak masing-masing
browser akan memiliki caranya sendiri untuk mengatasi masalah tersebut.
Contohnya Opera yang langsung menanyakan user bahwa untuk melihat
halaman ini dibutuhkan Flash Player, apakah user ingin mendownload?
Gambar 4.1 Download Flash Player – Opera
Sedangkan Mozilla Firefox akan menampilkan bagian dari halaman web
yang membutuhkan Flash Player untuk dijalankan sebagai kotak kosong,
dengan tulisan yang mengatakan : klik disini untuk mendownload Plug-in
yang dibutuhkan.
46
Gambar 4.2 Download Flash Player – Mozilla Firefox
4.2. Tampilan Program Aplikasi Dan Potongan Listing Program
4.2.1. Menu Utama
Pada saat user memasuki situs pertama kali, maka user akan disambut
dengan animasi flash sederhana sebagai halaman pembuka, dan didalam halaman
tersebut terdapat 3 tombol yang berfungsi sebagai link untuk menuju ke sub-menu
yang tersedia, yaitu menu Start Game untuk memulai permainan catur, menu
Credit untuk melihat informasi tentang penulis, dan menu Help, dimana user bisa
mendapatkan informasi tentang aturan permainan catur dan informasi tentang
aplikasi ini. Tampilan halaman pembuka adalah sebagai berkut :
47
Gambar 4.3 Menu Utama
4.2.2. Menu Game
4.2.2.1. Koneksi ElectroServer
Aplikasi Game catur akan ditampilkan bila user memilih tombol Start
Game pada menu utama, pada saat aplikasi pertama kali berjalan, maka yang
pertama dilakukan adalah mengkoneksikan aplikasi dengan ElektroServer sebagai
socket server.
var serverSettings = new XML(); serverSettings.ignoreWhite = true; serverSettings.onLoad = function() { var children = this.firstChild.childNodes; for (var i=0;i<children.length;++i) { var name = children[i].nodeName var value = children[i].firstChild.nodeValue if (name == "IP") { ip = value; } else if (name == "Port") { port = Number(value); }
48
} System.security["loadPolicyFile"]("xmlsocket://"+ip+":"+port); } serverSettings.load("ServerSettings.xml"); this.onEnterFrame = function() { if (this.getBytesLoaded()/this.getBytesTotal() >=1 && getTimer() >= 1*1000) { delete this.onEnterFrame; gotoAndStop("Code"); } }
Potongan listing program di atas berfungsi untuk mempersiapkan koneksi antara
aplikasi dengan ElektroServer dengan cara membaca alamat IP dan Port yang
digunakan oleh ElektroServer yang terletak pada file ServerSettings.xml.
<ServerSettings> <IP>192.168.0.1</IP> <Port>9875</Port> </ServerSettings>
Listing Program di atas adalah merupakan isi dari file ServerSettings.xml yang
menyimpan alamat IP dan Port yang digunakan oleh ElektroServer. Isi dari file
ServerSettings.xml ini dapat diubah sesuai dengan alamat IP dan Port yang
digunakan oleh ElektroServer.
Setelah itu aplikasi akan mengkoneksikan diri dengan ElektroServer dengan
perintah
es.connect();
4.2.2.2. Login Game
Setelah koneksi berjalan dengan baik, aplikasi akan mengatur agar di
dalam ElektroServer, user akan terdaftar sebagai user dari aplikasi permainan
catur ini dan dalam permainan catur ini user akan dimasukkan dalam room utama,
yaitu Lobby.
49
var gameInfo:Object = new Object(); var es:ElectroServer = ElectroServer.getInstance(); es.setModeratorLabel(true, " [Mod]"); es.setDebug(false); function joinRoom() { var roomOb:Object = new Object(); roomOb.roomName = "Lobby"; roomOb.zone = "Chess Zone"; es.createRoom(roomOb); } es.roomJoined = function(Results, myRoom) { if (Results.success) { gotoAndStop("Chat"); } else { msg.text = Results.error; } };
Potongan dari listing program di atas adalah listing program yang menjalankan
operasi tersebut. Listing program diatas akan membuat suatu zone baru dalam
ElektroServer untuk menampung operasi aplikasi dengan nama Chess Zone.
Setelah itu user diharuskan memasukkan nama untuk login kedalam
aplikasi permainan catur ini.
Gambar 4.4 Scene Login
50
function loginFXN() { var username:String = username_txt.text; if (username.length>2 && username.length<15) { es.login(username); gotoAndStop("Waiting"); } } login_btn.onRelease = function() { if (username_txt.length > 2) { loginFXN(); } } function loginFXN() { var username:String = username_txt.text; if (username.length>2 && username.length<15) { es.login(username); gotoAndStop("Waiting"); } } login_btn.onRelease = function() { if (username_txt.length > 2) { loginFXN(); } }
Potongan Listing Program di atas akan memeriksa apakah username yang
diinputkan oleh user lebih dari 2 karakter dan kurang dari 15 karakter, jika tidak
maka aplikasi akan tetap menampilkan scene login sampai user menginputkan
username antara 3 sampai 14 karakter.
Jika username yang diinputkan sudah digunakan oleh user lain, maka
ElectroServer secara otomatis akan memberikan pesan bahwa username tersebut
telah digunakan.
51
Gambar 4.5 Pesan Username Telah Digunakan
4.2.2.3. Scene Chat
Setelah login berhasil, maka aplikasi akan menampilkan scene chat
dalam scene ini user dapat melihat daftar user yang sedang menjalankan aplikasi
ini, melihat daftar chat room dan game room yang dibuat oleh user lain,
melakukan chatting dengan user lain, baik untuk mencari lawan permainan
ataupun hanya sekedar chatting, di scene ini user juga dapat membuat room
sendiri untuk chatting, membuat room permainan sendiri dan mengirimkan pesan
pribadi yang hanya diterima oleh user yang dipilih. Scene chat ini terdiri dari
beberapa komponen antara lain :
a. User List
b. Chat Room List
52
c. Game Room List
d. Chat History
e. Chat Message Box
f. Room Info
g. User Info
h. New Room Button
i. New Game Button
Gambar 4.6 Scene Chat
4.2.2.3.1. User List
User list adalah daftar nama user yang sedang menjalankan aplikasi ini
dan berada di room yang sama.
function showUsers() { var userlist:Array = es.getUserList();
53
userListBox.dataProvider = userlist; }
Potongan listing program di atas akan mengambil daftar user yang
berada di Chess Zone dan menampilkannya di textbox User List.
user.text = username; Selection.setFocus(message); function cancel() { gotoAndStop(1); } function ok() { var msg = message.text; if (msg.length>0) { _parent.es.sendMessage("private", msg, [username]); gotoAndStop(1); } } function enterPressed() { ok(); }
Sedangkan potongan listing program di atas akan menampilkan popup clip private
yang akan muncul jika user mengklik ganda pada salah satu nama user yang
berada di user list, dengan munculnya popup clip private tersebut, user dapat
mengirimkan pesan pribadi yang hanya dapat dibaca oleh user yang dipilihnya
tersebut.
OK Cancel
Send to:
Message:
Send Private Message
Gambar 4.7 Popup clip private
54
4.2.2.3.2. Chat Room List
Chat Room List akan menampilkan semua room yang ada di dalam
Chess Zone.
function showRooms() { var roomlist = es.getRoomList(); RoomList = new Array(); var list = new Array(); var str = es.getZone().numUsers+" users playing chess"; users_playing.text = str; for (var i = 0; i<roomlist.length; ++i) { var room = roomlist[i]; var protected; if (!room.Description.attributes.isRoom) { if (room.attributes.IsPasswordProtected) { protected = " [locked] "; } else { protected = ""; } var label = room.Name.value+protected+" ("+room.attributes.Users+")"; var ob = new Object(); ob.label = label; ob.data = room; list.push(ob); } else { RoomList.push(room); } } roomListBox.setDataProvider(list); showRooms(); }
Potongan listing program di atas akan mengambil data room yang tersimpan di
dalam ElektroServer dan menampilkannya di Chat Room List, listing program di
atas juga akan memeriksa apakah Room yang ada di Chat Room List diproteksi
dengan password. Jika ya, maka nama room akan ditambahkan dengan attribut
[locked], contoh : nama room : chess, maka nama yang tertulis di dalam Chat
Room List adalah chess[locked], dan untuk dapat mengakses room tersebut, user
harus mengetahui password dari room tersebut. Jika seorang user ingin
mengakses suatu room tertentu, maka ia hanya perlu mengklik ganda pada room
yang dikehendakinya, jika room tersebut tidak diproteksi oleh password, maka
55
akan muncul popup clip joinroom1, yang hanya mengkonfirmasi room yang
dipilih user.
OK Cancel
Join Room
Gambar 4.8 Popup Clip Join Room 1
var name:String; name = roomOb.Name.value; roomName.text = name; function ok() { _parent.es.joinRoom(name); delete roomOb; delete name; gotoAndStop(1); } function cancel() { delete roomOb; delete name; gotoAndStop(1); } function enterPressed() { ok(); }
Potongan Listing Program di atas merupakan actionscript yang mengatur popup
clip join room 1, jika tombol ok di klik, maka maka clip ini akan menjalankan
fungsi ok( ), dan user akan langsung masuk kedalam room yang dipilihnya, jika
tombol cancel di klik, maka user akan kembali ke scene sebelumnya, jika user
menekan tombol enter pada keyboard, maka fungsi ok( ) akan dijalankan, sama
seperti user mengklik tombol ok.
Jika room yang dipilih oleh user diproteksi oleh password, maka akan
muncul popup clip join room 2 yang akan mengkonfirmasi room yang akan
diakses oleh user dan sekaligus meminta validasi password.
56
OK Cancel
Enter password:
Join Room
Gambar 4.9 Popup Clip Join Room 2
name = roomOb.Name.value; Selection.setFocus(pass); roomName.text = name; function ok() { _parent.es.joinRoom(name, pass.text); delete roomOb; delete name; gotoAndStop(1); } function cancel() { delete roomOb; delete name; gotoAndStop(1); } function enterPressed() { ok(); }
Potongan listing program di atas adalah actionscript yang mengatur popup clip
join room 2 jika user mengklik tombol ok atau menekan tombol enter pada
keyboard, jika password benar, maka user akan langsung masuk ke dalam room
yang dipilihnya, namun jika password salah maka akan ditampilkan popup clip
errorr. Jika user mengklik tombol cancel, maka user akan kembali ke tampilan
sebelumnya.
4.2.2.3.3. Game Room List
Game Room List adalah text box didalam scene chat yang
menampilkan daftar permainan yang dibuat oleh user.
57
function showGameRooms() { var width = gameClipHolder.content.game._width+10; var height = gameClipHolder.content.game._height+10; gameClipList = new Array(); for (var i = 0; i<gameRoomList.length; ++i) { var room = gameRoomList[i]; var name = "game"+i; var clip = gameClipHolder.content.game.duplicateMovieClip(name, i+1); var gameName:String = room.Description.attributes.name; clip.name.text = gameName;
Potongan listing program di atas akan menampilkan game room yang telah dibuat
oleh user, dengan menampilkan sebuah gambar untuk tiap-tiap game roomnya, di
dalam gambar juga tertedapat nama game room. Di dalam aplikasi ini, gambar
tersebut dinamai gameclipholder.
Gambar 4.10 Gameclipholder
if (room.Description.attributes.playersArrived == 1) { if (col == "white") { clip.white_clip._visible = true; clip.black_clip._visible = false; } else { clip.white_clip._visible = false; clip.black_clip._visible = true; } } else if (room.Description.attributes.playersArrived == 2) { clip.white_clip._visible = true; clip.black_clip._visible = true; }
Potongan listing program diatas adalah actionscript yang mengatur tampilan
gameclipholder jika game room tersebut baru memiliki satu pemain yang
memainkan buah catur berwarna putih, maka di dalam gameclipholder akan
ditampilkan gambar bidak berwarna putih, secara otomatis jika ada user yang
ingin mengakses permainan tersebut, maka ia akan memainkan buah catur
58
berwarna hitam, demikian juga sebaliknya, namun jika permainan, telah lengkap
memiliki 2 orang pemain, makan gameclipholder yang ditampilkan akan menjadi
seperti pada Gambar 4.10.
Gambar 4.11 Satu pemain putih
Gambar 4.12 Satu pemain hitam
function showGameInfo(show, room) { if (!show) { gameInfo_txt.text = ""; } else { var msg:String = ""; var atts = room.Description.attributes; msg += "<b>"+atts.name+"</b>"+newline; msg += atts.username+newline if (atts.allowSpectators) { msg += "Spectators allowed"+newline; } else { msg += "No spectators"+newline; } if (atts.timeGame) { msg += atts.time_minutes+" min, "+atts.time_seconds+" sec"+newline; if (atts.time_increment>0) { msg += "Time inc "+atts.time_increment+" sec"+newline; } } else { msg += "Not timed"+newline; } gameInfo_txt.text = msg; } }
Potongan listing program di atas adalah actionscript yang akan menampilkan
informasi tentang game room yang terdapat di dalam Game Room List, informasi
59
tersebut antara lain yaitu user yang membuat Game Room, status waktu
permainan dan status penonton.
function rolledOver(room) { showGameInfo(true, room); } function rolledOut() { showGameInfo(false); }
Dengan adanya listing program di atas, maka status informasi tentang Game
Room akan ditampilkan jika GameClipHolder di highlight oleh cursor.
Jika seorang user ingin bergabung dengan suatu Game Room, maka ia hanya
harus mengklik pada GameClipHolder dari Game Room yang dikehendakinya,
setelah user tersebut mengklik GameClipHolder tersebut, maka secara otomatis
aplikasi akan menampilkan popupclip join game.
Gambar 4.13 Popup clip Join Game tanpa password
Gambar 4.14 Popup clip Join Game dengan password
60
Di dalam popupclip join game user dapat memilih apakah di dalam game room
tersebut ia ingin menjadi player (pemain) atau spectator (penonton), jika ia
memilih mejadi penonton, maka ia hanya dapat menonton permainan dan
memberikan komentar-komentar dalam permainan tersebut.
if (IsPasswordProtected != true) { pword_clip._visible = false; } function cancel() { gotoAndStop(1); } function ok() { _parent.joiningGame = true; if (IsPasswordProtected) { var password = pword_clip.password.text; } else { var password = ""; } var name = _parent.pendingGame.Name.value _parent.es.joinGame(name, password, joinType); } roomName.text = _parent.pendingGame.Description.attributes.name if (!_parent.pendingGame.Description.attributes.allowSpectators) { spec._visible = false; } var radioListener:Object = new Object(); radioListener.click = function(evt:Object) { joinType = evt.target.selection.data; }; radioGroup.addEventListener("click", radioListener); if (gameFull) { joinType = "spectator"; player_radio.enabled = false; player_radio.selected = false; spectator_radio.selected = true; } else { joinType = "player"; } if (!withinBounds) { joinType = "spectator"; player_radio.enabled = false; player_radio.selected = false; spectator_radio.selected = true; } function enterPressed() { ok(); }
Potongan listing program diatas akan menentukan pengaturan pada popupclip join
game. Jika Game Room diberikan password oleh user pembuatnya, maka di dalam
popupclip join game akan tersedia textbox untuk menginput password seperti pada
61
gambar 4.13, namun jika password tidak diberikan, maka dalam popupclip join
game tidak akan ada textbox tersebut seperti pada gambar 4.12. Jika didalam game
room telah terdapat 2 orang pemain, dan Game Rom tersebut mengijinkan
spectator, maka user hanya dapat bergabung sebagai spectator, dan pilihan untuk
bergabung sebagai pemain tidak akan dapat dipilih. Jika di dalam Game Room
telah terdapat 2 orang pemain dan Game Room tidak mengijinkan spectator, maka
akan ditampilkan pesan bahwa user tidak dapat bergabung dengan Game Room
tersebut.
if (room.Description.attributes.allowSpectators == false) { popItUp = false; showPopUp("error", "This game is full and does not
allow spectators.");
Potongan Listing program di atas adalah actionscript yang menampilkan pesan
jika di dalam Game Room telah terdapat 2 orang pemain dan Game Room tidak
mengijinkan spectator.
4.2.2.3.4. Chat History
Chat History adalah sebuah textbox yang akan menampilkan seluruh
pesan yang dikirimkan antar user, baik pesan itu bersifat public atau private. Jika
suatu pesan bersifat public, maka pesan tersebut akan ditampilkan pada textbox
semua user, namun jika pesan bersifat private, maka pesan hanya akan
ditampilkan pada textbox user tujuan.
62
Gambar 4.15 Chat History
es.messageReceived = function(type:String, message:String, from:String) { if (type == "public") { chatHistory += from+": "+message+newline; } else if (type == "private") { chatHistory += from+"[private]: "+message+newline; } chatBox.text = chatHistory; chatBox.vPosition = chatBox.maxVPosition; };
Potongan listing program di atas akan mengambil pesan yang dikirimkan oleh
user melalui ElectroServer, jika pesan bersifat private, setelah nama pengirim
pesan akan diberi text [private], seperti pada gambar 4.15.
4.2.2.3.5. Chat Message Box
Chat Message Box adalah sebuah textbox dimana user mengetikkan
pesan yang akan dikirimkan. Pesan akan dikirimkan melalui ElectroServer.
Semua pesan yang dikirimkan melalui Chat Message Box secara otomatis akan
bersifat public. Pesan akan terkirim setelah user mengklik tombol send di sebelah
Chat Message Box.
Gambar 4.16 Chat Message Box
63
function sendClicked() { var msg:String = msgBox.text; if (msg.length>0) { es.sendMessage("public", msg); msgBox.text = ""; } }
Potongan listing program di atas akan mengidentifikasikan pesan sebagai pesan
yang bersifat public, kemudian mengirimkan pesan tersebut ke ElectroServer
untuk kemudian dibaca oleh user lain.
4.2.2.3.6. Room Info
Room info adalah pesan berupa text yang terletak di atas Chat History
yang menampilkan informasi tentang Chat Room dimana user berada, seperti pada
gambar 4.15.
function setRoomName() { var roomName = es.getRoom().Name.value; current_room_txt.text = "You are chatting in: "+roomName; }
Potongan listing program diatas akan mengambil nama Chat Room tempat user
berada dari ElectroServer, kemudian akan menampilkannya di Room Info.
4.2.2.3.7. User Info
User info adalah pesan berupa text yang terletak di atas Game Room
List yang akan menampilkan jumlah user yang sedang menjalankan aplikasi ini.
var str = es.getZone().numUsers+" users playing chess";
Potongan listing program di atas akan mengambil jumlah user yang berada di
dalam Chess Zone untuk ditampilkan pada User Info.
4.2.2.3.8. New Room Button
New Room Button adalah sebuah tombol yang digunakan user untuk
membuat Chat Room baru.
64
Key.addListener(keyListener); newRoom_btn.onRelease = function() { showPopUp("New Room"); };
Potongan listing program diatas akan menampilkan popup clip new room. Di
popup clip ini, user harus menginputkan nama dari room yang akan dibuatnya,
dan jika ingin, user dapat juga memberikan password pada room tersebut, namun
penginputan password bersifat optional.
Gambar 4.17 Popup clip new room
Popup clip New Room memiliki actionscript sebagai berikut.
Selection.setFocus(roomName); function makeRoom() { var roomOb:Object = new Object(); roomOb.roomName = roomName.text; roomOb.password = pass.text; _parent.es.createRoom(roomOb); } function cancel() { gotoAndStop(1); } function ok() { if (roomName.text.length>3) { makeRoom(); gotoAndStop(1); } } function enterPressed() { ok(); }
ActionScript di atas akan membuat Chat Room baru di dalam ElectroServer jika
nama room yang diinputkan user memenuhi syarat, yaitu lebih dari 3 karakter
pada saat user mengklik tombol ok atau menekan tombol enter pada keyboard.
65
4.2.2.3.9. New Game Button
New Game Button adalah tombol yang berfungsi untuk membuat
Game Room baru. Pada saat user mengklik New Game Button, maka ActionScript
berikut akan menampilkan Popup clip New Game yang mengijinkan user untuk
mengkonfigurasi Game Room-nya.
newGame_btn.onRelease = function() { showPopUp("New Game"); };
Gambar 4.18 Popup clip new room
Selection.setFocus(roomName); var allowSpectators = true; var timeGame = true; var time_minutes = 5; var time_seconds = 0; var time_increment = 0; var chosenColor = "white"; Selection.setFocus(roomName);
Potongan listing program di atas adalah actionscript yang mengatur kondisi
default konfigurasi permainan, kondisi default Game Room adalah Game Room
66
mengijinkan spectator, pemain menggunakan buah catur berwarna putih, dan
permainan diberi waktu 5 menit.
function ok() { if (roomName.text.length>1) { var gameRoomOb:Object = new Object(); gameRoomOb.roomName = roomName.text; gameRoomOb.password = pass.text; gameRoomOb.attributes = new Object(); gameRoomOb.attributes.name = roomName.text; gameRoomOb.attributes.numPlayers = 2; gameRoomOb.attributes.playersArrived = 1; gameRoomOb.attributes.allowSpectators = allowSpectators; gameRoomOb.attributes.timeGame = timeGame; gameRoomOb.attributes.time_minutes = time_minutes; gameRoomOb.attributes.time_seconds = time_seconds; gameRoomOb.attributes.time_increment = time_increment; gameRoomOb.attributes.master_color = chosenColor; gameRoomOb.attributes.username = parent.es.getUser().Name.value; _root.max_min = time_minutes; _root.max_sec = time_seconds; _root.time_inc = time_increment; _root.time_game = timeGame; _root.master_color = chosenColor; _parent.es.createGameRoom(gameRoomOb); _parent.joiningGame = true; gotoAndStop(1); }
Potongan listing program di atas adalah actionscript yang berupa fungsi yang
akan mengambil konfigurasi dari Game Room yang dibuat oleh user, kemudian
konfigurasi tersebut akan dikirimkan ke ElectroServer lalu ElectroServer akan
membuat Game Room baru sesuai dengan konfigurasi tersebut. Fungsi ini akan
dieksekusi pada saat user mengklik tombol OK.
function cancel() { gotoAndStop(1); }
Potongan listing program di atas akan mengembalikan tampilan ke scene
sebelumnya jika user mengklik tombol cancel.
67
4.2.2.4. Scene Game
Scene game merupakan scene utama dari aplikasi ini, scene ini adalah
scene dimana user bermain catur dan sekaligus melakukan chatting dengan user
lainnya. Komponen utama dari scene game ini adalah Chess Board, dan selain
Chess Board, scene game ini juga memiliki beberapa komponen yang berguna
sebagai pelengkap permainan, antara lain :
a. Time Box
b. Move History
c. Chat History
d. Chat Message Box
e. Spectator List
f. Player Info
g. Resign Button
h. Draw Button
i. Rematch Button
j. Lobby Button
68
Gambar 4.19 Scene Game
4.2.2.4.1. Chess Board
Secara garis besar chess board terdiri dari actionscript yang mengatur
jalannya permainan, seperti gerakan buah catur. Sesuai dengan peraturan catur
yang ada, maka pemain yang memiliki giliran jalan pertama adalah pemain
dengan buah catur berwarna putih. Tampilan pada kedua orang pemain memiliki
sedikit perbedaan, yaitu setiap pemain akan melihat bahwa buah catur yang ia
miliki akan berada di bagian bawah chess board, jadi pemain dengan buah catur
berwarna putih akan melihat tampilan seperti pada gambar 4.19, sedangkan
pemain dengan buah catur berwarna hitam akan melihat tampilan seperti pada
gambar 4.20
69
Gambar 4.20 Scene Game 2
function placePiece(id:String, x:Number, y:Number) { var clip = board_mc["piece"+id]; if (boardReverse) { x = 7-x; y = 7-y; } }
Potongan listing program di atas adalah actionscript yang akan membalik
peletakan buah catur. Didalam clip Chees board ini juga terdapat actionscript
untuk mengatur gerakan buah catur, sehingga user yang bermain catur tidak dapat
meletakkan buah caturnya secara sembarangan. Setiap gerakan yang dibuat oleh
user harus sesuai dengan peraturan catur yang berlaku. Jika user meletakkan buah
caturnya secara sembarangan, misalnya menjalankan kuda secara horisontal, maka
gerakan akan dibatalkan dan kuda tersebut kembali ke posisi sebelumnya.
70
if (type == "pawn") { var firstMove:Boolean = chessPiece.isFirstMove; var sign:Number; if (color == "white") { sign = 1; } else if (color == "black") { sign = -1; } var next_y:Number = start_y+sign; var nextTile:Tile = getTile(start_x, next_y); if (start_x == end_x && (end_y-start_y == sign*1 || (end_y-start_y == sign*2 && firstMove && !nextTile.isFilled)) && !containsPiece) { returnVal = true; } else if (Math.abs(start_x-end_x) == 1 && end_y-start_y == sign*1 && containsEnemy) { returnVal = true; if (returnVal && ((color == "white" && end_y == 7) || (color == "black" && end_y == 0))) { promotePawn = true; }
Potongan listing program di atas adalah actionscript yang mengatur gerakan
bidak, gerakan bidak adalah satu langkah lurus kedepan, namun jika bidak belum
pernah bergerak, bidak dapat maju 2 langkah, dengan catatan tidak ada buah catur
lawan yang menghalangi. Bidak hanya dapat bergerak 1 langkah diagonal pada
saat sedang memakan buah catur lawan. Jika bidak mencapai ujung dari papan
permainan, bidak mendapat promosi. Pada saat bidak mendapat promosi, maka
akan ditampilkan popup clip promotion, dimana user dapat memilih buah catur
yang akan ditukar dengan bidak tersebut.
Select a piece.
Gambar 4.21 Popup clip promotion
71
function clicked() { var newPiece:String; if (this == button1) { newPiece = "rook"; } else if (this == button2) { newPiece = "bishop"; } else if (this == button3) { newPiece = "knight"; } else if (this == button4) { newPiece = "queen"; } _parent.pieceSelected(newPiece); } button1.onRelease = clicked; button2.onRelease = clicked; button3.onRelease = clicked; button4.onRelease = clicked;
Potongan actionscript di atas adalah actionscript yang mengoperasikan popup clip
promosi. Bidak catur akan ditukar sesuai dengan pilihan user, jika user memilih
tombol satu, maka bidak akan ditukar dengan benteng, tombol dua dengan gajah,
tombol tiga dengan kuda dan tombol 4 dengan ratu.
var id:String = ob.id; var newPiece:String = ob.promotionPiece; var col:String = ob.color; board_mc["piece"+id].gotoAndStop(col+" "+newPiece);
Potongan actionscript diatas akan menukar bidak catur yang mendapat promosi
dengan buah catur pilihan pemain.
else if (type == "king") { var firstMove:Boolean = chessPiece.isFirstMove; if ((Math.abs(start_y-end_y) == 1 && start_x-end_x == 0) || (Math.abs(start_x-end_x) == 1 && (Math.abs(start_y-end_y) == 1 || start_y-end_y == 0))) { if (!containsSameColor) { returnVal = true; } } else if (firstMove && start_y == end_y) { if (end_x == 1) { var rookTile:Tile = getTile(0, start_y); var rook:ChessPiece = rookTile.getPiece(); var tile1:Tile = getTile(2, start_y); var tile2:Tile = getTile(1, start_y); var tileCondition:Boolean; if (color == "white") { tileCondition = !tile1.isFilled && !(tile1.isBlackHot && tile1.pawnCheck("black")) && !tile2.isFilled && !(tile2.isBlackHot && tile2.pawnCheck("black")); } else if (color == "black") {
72
tileCondition = !tile1.isFilled && !(tile1.isWhiteHot && tile1.pawnCheck("white")) && !tile2.isFilled && !(tile2.isWhiteHot && tile2.pawnCheck("white")); } if (rook.isFirstMove && tileCondition) { castling = true; var rook_dest:Tile = getTile(2, start_y); castlingInfo = [[starting_tile, ending_tile], [rookTile, rook_dest]]; returnVal = true; } } else if (end_x == 5) { var rookTile:Tile = getTile(7, start_y); var rook:ChessPiece = rookTile.getPiece(); var tile1:Tile = getTile(6, start_y); var tile2:Tile = getTile(5, start_y); var tileCondition:Boolean; if (color == "white") { tileCondition = !tile1.isFilled && !(tile1.isBlackHot && tile1.pawnCheck("black")) && !tile2.isFilled && !(tile2.isBlackHot && tile1.pawnCheck("black")); } else if (color == "black") { tileCondition = !tile1.isFilled && !(tile1.isWhiteHot && tile1.pawnCheck("white")) && !tile2.isFilled && !(tile2.isWhiteHot && tile2.pawnCheck("white")); } if (rook.isFirstMove && tileCondition) { castling = true; var rook_dest:Tile = getTile(4, start_y); castlingInfo = [[starting_tile, ending_tile], [rookTile, rook_dest]]; returnVal = true; } } }
Potongan listing program diatas adalah actionscript yang mengatur gerakan raja.
Raja dapat bergerak secara bebas baik secara vertikal, horisontal , maupun
diagonal, namun hanya sebanyak satu langkah. Sebelum raja bergerak, maka akan
dilakukan pengecekan terlebih dahulu, apakah ditempat raja akan bergerak, raja
akan terkena skak,dan tidak ada buah catur teman. Jika ya, maka raja tidak dapat
bergerak ke tempat tersebut. Selain gerakan umum, raja juga memiliki satu
gerakan khusus, yaitu blokir, sebelum melakukan blokir, listing proram akan
memeriksa apakah raja dan benteng yang akan melakukan blokir belum pernah
bergerak dan tidak ada buah catur diantara raja dan benteng yang akan melakukan
73
blokir, dan jalur blokir tidak ada yang terancam oleh buah catur lawan. Jika semua
syarat tersebut terpenuhi, maka raja dapat melakukan blokir.
else if (type == "knight") { if ((Math.abs(start_x-end_x) == 1 && Math.abs(start_y-end_y) == 2) || (Math.abs(start_x-end_x) == 2 && Math.abs(start_y-end_y) == 1)) { if (!c_ntainsSameColor) { returnVal = true; }
Potongan listing program diatas akan mengatur jalannya buah catur kuda. Kuda
bergerak 2 langkah horisontal, kemudian 1 langkah vertikal, atau 2 langkah
vertikal kemudian 1 langkah horisontal, gerakan kuda biasa dikenal dengan
gerakan huruf “L”. Kuda dapat bergerak bebas walaupun dihalangi oleh buah
catur lain, selama tempat dimana kuda akan bergerak tidak ada buah catur dengan
warna yang sama.
if (start_x == end_x && hor_vert) { var sign:Number; if (end_y-start_y>0) { sign = 1; } else { sign = -1; } for (var i = start_y+sign; i-end_y != sign; i += sign) { var currTile:Tile = getTile(start_x, i); var currPiece:ChessPiece = currTile.getPiece(); var filled:Boolean = currTile.isFilled; if (filled && i != end_y) { break; } else if (filled && i == end_y && currPiece.getColor() != color) { returnVal = true; break; } else if (i == end_y && !filled) { returnVal = true; } } } else if (start_y == end_y && hor_vert) { //horizontal only move var sign:Number; if (end_x-start_x>0) { sign = 1; } else { sign = -1; } for (var i = start_x+sign; i-end_x != sign; i += sign) { var currTile:Tile = getTile(i, start_y); var currPiece:ChessPiece = currTile.getPiece(); var filled:Boolean = currTile.isFilled;
74
if (filled && i != end_x) { break; } else if (filled && i == end_x && currPiece.getColor() != color) { returnVal = true; break; } else if (i == end_x && !filled) { returnVal = true; } }
Potongan Listing Program diatas adalah fungsi hor_vert yang berfungsi untuk
mengatur gerakan benteng. Benteng bergerak secara horisontal atau vertikal
dengan jumlah langkah yang tidak terbatas, selama tempat tujuannya tidak
dihalangi baik oleh buah catur lawan ataupun kawan. Benteng tidak dapat
bergerak ditempat dimana terdapat buah catur kawan.
else if (Math.abs(start_y-end_y) == Math.abs(start_x-end_x) && diag) { var sign_x:Number; var sign_y:Number; if (end_x-start_x>0) { sign_x = 1; } else { sign_x = -1; } if (end_y-start_y>0) { sign_y = 1; } else { sign_y = -1; } var j:Number = start_y+sign_y; for (var i = start_x+sign_x; i-end_x != sign_x; i += sign_x) { var currTile:Tile = getTile(i, j); var currPiece:ChessPiece = currTile.getPiece(); var filled:Boolean = currTile.isFilled; if (filled && i != end_x) { break; } else if (filled && i == end_x && currPiece.getColor() != color) { returnVal = true; break; } else if (i == end_x && !filled) { returnVal = true; } j += sign_y; }
75
Potongan Listing Program diatas adalah fungsi diag yang berfungsi untuk
mengatur gerakan gajah. Gajah bergerak secara diagonal dengan jumlah langkah
yang tidak terbatas, selama tempat tujuannya tidak dihalangi baik oleh buah catur
lawan ataupun kawan. Gajah tidak dapat bergerak ditempat dimana terdapat buah
catur kawan.
Gerakan ratu adalah merupakan gabungan dari gerakan benteng dan gajah,
maka untuk fungsi gerakan ratu aplikasi akan menggunakan fungsi hor_vert dan
fungsi diag.
else if (type == "queen" || type == "rook" || type == "bishop") { var hor_vert:Boolean = false; var diag:Boolean = false; if (type == "queen") { hor_vert = true; diag = true; } else if (type == "rook") { hor_vert = true; } else if (type == "bishop") { diag = true; }
Potongan listing program di atas adalah potongan listing yang mengatur jalannya
ratu, gajah dan benteng, jika buah catur yang dijalankan adalah benteng, maka
aplikasi akan mengeset nilai fungsi hor_vert = true , jika buah catur yang
dijalankan adalah gajah, maka aplikasi akan mengeset nilai fungsi diag = true ,
jika buah catur yang dijalankan adalah ratu, maka aplikasi akan mengeset nilai
fungsi hor_vert = true dan diag = true.
4.2.2.4.2. Timer Box & Player Info
Timer Box adalah suatu movie clip yang menampilkan aturan waktu
dalam permainan catur ini, aturan waktu yang ditampilkan sesuai dengan
konfigurasi user pada saat membuat new game room. Timer box terdiri dari 4
76
komponen, yaitu 2 timer, satu untuk masing masing pemain, dan 2 tombol, satu
untuk masing-masing pemain. Timer dan tombol milik masing-masing pemain
ditandai dengan player info di tiap-tiap timer, player info memberikan informasi
tentang buah catur berwarna apa yang dimainkan oleh user dan nama user.
Gambar 4.22 Timer Box
Didalam timerbox terdapat beberapa pengaturan waktu, antara lain
waktu awal, penambahan waktu dan pengurangan waktu. Waktu awal dan
penambahan waktu dapat dikonfigurasi oleh user, sedangkan waktu akan
berkurang secara otomatis sesuai dengan giliran jalan pemain. Jika konfigurasi
default belum diubah, maka masing-masing pemain akan memiliki waktu awal 5
menit yang akan berkurang pada saat pemain tersebut mendapat giliran jalan, dan
pengurangan waktu tersebut akan berhenti setelah pemain melakukan sebuah
gerakan legal yang membuat giliran jalan berpindah ke pemain lawannya dan
secara otomatis waktu dari pemain lawannya akan mulai berkurang sampai ia
melakukan sebuah gerakan legal.
Jika konfigurasi default belum diubah, maka dalam permainan tidak
ada penambahan waktu. User dapat mengubah konfigurasi penambahan waktu /
time increment ini. Dengan adanya penambahan waktu, maka setiap kali seorang
pemain melakukan gerakan, maka jumlah waktu yang dimilikinya akan
ditambahkan sesuai dengan nilai penambahan waktu.
77
Pada saat pemain mendapat giliran jalan, maka tombol timerbox milik
pemain tersebut akan berada diatas, dan tombol pemain yang sedang menunggu
giliran jalan akan tertekan ke bawah. Pada saat giliran jalan berubah, maka begitu
juga dengan tombol timerbox masing-masing pemain.
function timerBoxRequest() { timerBox.setTimeParameters(_root.max_min, _root.max_sec, _root.time_inc); timerBox.setMyColor(myColor); } function startGame() { //After both players have arrived and player 1 has pressed the start button, start the game if (myColor == "black") { timerBox.startCounting("white"); } else { sendNames(); } }
Potongan listing program di atas akan memulai perhitungan waktu dan akan
mengatur tombol pada timerbox sesuai dengan giliran pemain.
function startCounting(which) { if (_root.time_game) { start_time = getTimer(); counting = true; if (which == "white") { currentColor = white; white_plunger.gotoAndStop(2); } else if (which == "black") { currentColor = black; black_plunger.gotoAndStop(2); } render(); } } function stopCounting(increment_it) { if (counting) { counting = false; if (currentColor.color == myColor && increment_it) { currentColor.seconds += inc; } currentColor.seconds = render(); white_plunger.gotoAndStop(1); black_plunger.gotoAndStop(1); } }
78
Potongan listing program di atas berfungsi untuk memulai penghitungan waktu,
menghentikan penghitungan waktu dan melakukan penambahan waktu sesuai
dengan giliran jalan. Potongan listing program diatas juga akan mengubah tombol
pada timerbox sesuai dengan giliran jalan.
4.2.2.4.3. Move History Box
Move history adalah sebuah textbox yang mencatat koordinat setiap
gerakan buah catur yang dibuat oleh user.
Gambar 4.23 Move History Box
moveOb.action = "move"; moveOb.x1 = starting_tile.getColumn(); moveOb.y1 = starting_tile.getRow(); moveOb.x2 = ending_tile.getColumn(); moveOb.y2 = ending_tile.getRow(); var resultOb:Object = chess.move(starting_tile, ending_tile); history_box.dataProvider = resultOb.history; historyBox.text = chess.getHistory();
Potongan listing program di atas akan mengambil koordinat gerakan yang dibuat
oleh kedua pemain, kemudian menampilkannya di move history box.
4.2.2.4.4. Chat History
Sama seperti pada scene chat, chat history pada scene game juga
merupakan sebuah textbox yang akan menampilkan seluruh pesan yang
dikirimkan antar user, baik pesan itu bersifat public atau private. Jika suatu pesan
79
bersifat public, maka pesan tersebut akan ditampilkan pada textbox semua user,
namun jika pesan bersifat private, maka pesan hanya akan ditampilkan pada
textbox user tujuan.
Gambar 4.24 Chat History
Key.addListener(keyListener); es.messageReceived = function(type:String, message:String, from:String) { if (type == "public") { chatHistory += from+": "+message+newline; } else if (type == "private") { chatHistory += from+"[private]: "+message+newline; } chatBox.text = chatHistory; chatBox.vPosition = chatBox.maxVPosition; };
Potongan listing program di atas akan mengambil pesan yang dikirimkan oleh
user melalui ElectroServer, jika pesan bersifat private, setelah nama pengirim
pesan akan diberi text [private].
4.2.2.4.5. Chat Message Box
Sama seperti pada scene chat, chat message box pada scene game juga
merupakan sebuah textbox dimana user mengetikkan pesan yang akan dikirimkan.
Pesan akan dikirimkan melalui ElectroServer. Semua pesan yang dikirimkan
melalui Chat Message Box secara otomatis akan bersifat public. Pesan akan
terkirim setelah user mengklik tombol send di sebelah Chat Message Box.
Gambar 4.25 Chat Message Box
80
Key.removeListener(keyListener); var chatHistory:String = ""; var playerList:Array; var spectatorList:Array; function sendClicked() { var msg:String = msgBox.text; if (msg.length>0) { es.sendMessage("public", msg); msgBox.text = ""; } } send_btn.onRelease = sendClicked; var keyListener:Object = new Object(); keyListener.onKeyDown = function(ev) { if (Key.isDown(13)) { sendClicked(); } };
Potongan listing program di atas akan mengidentifikasikan pesan sebagai pesan
yang bersifat public, kemudian mengirimkan pesan tersebut ke ElectroServer
untuk kemudian dibaca oleh user lain.
4.2.2.4.6. Spectator List
Spectator list adalah sebuah textbox yang menampilkan nama user
yang berperan sebagai spectator didalam sebuah game room.
Gambar 4.26 Spectator list
function showUsers(userList, type, name) { if (type == "userleft" && name == opponent) { game_clip.opponent_left(); } //get the user list var userlist = es.getUserList(); playerList = new Array(); spectatorList = new Array(); allowSpectators = es.getRoom().Description.attributes.allowSpectators; for (var i = 0; i<userlist.length; ++i) { var user:Object = userlist[i]; var num:Number = user.AssignedNumber.value;
81
if (num>=0 && num != undefined && num != null && num<maxPlayers) { if (num>highestNum) { highestNum = num; } user.gamePlayer = true; playerList.push(user); } else { user.gamePlayer = false; spectatorList.push(user); } } game_clip.setGamePlayerList(playerList); game_clip.setSpectatorList(spectatorList); }
Potongan listing program di atas akan mengambil daftar user yang berada di
Game room, kemudian memisahkan antara player dan spectator, dan kemudian
menampilkan spectator pada spectator list.
4.2.2.4.7. Resign Button
Resign button adalah tombol yang digunakan oleh user untuk
menyerah. Jika user mengklik tombol resign, maka aplikasi akan menampilkan
popup clip resign.
Gambar 4.27 Popup clip resign
resign_btn.onRelease = function() { _parent.resign(true); gotoAndStop(1); } cancel_btn.onRelease = function() { gotoAndStop(1); }
82
Potongan listing diatas akan mengset nilai fungsi resign() dengan nilai true pada
saat user mengklik tombol resign game.
function resign(val) { if (!val) { popUp("Resign"); } else { iLost(); } }
Potongan listing program di atas akan mengeksekusi fungsi ilost() jika fungsi
resign() memiliki nilai true. Fungsi iLost() akan menghentikan permainan dan
user yang melakukan resign akan dinyatakan kalah.
4.2.2.4.8. Draw Button
Draw buttton adalah sebuah tombol yang digunakan seorang pemain
jika ia ingin menawarkan permainan berakhir remis/seri. Pada saat seorang
pemain mengklik tombol draw, maka aplikasi akan menampilkan popup clip draw
yang akan menanyakan apakah pemain tersebut ingin menawarkan remis ke
pemain lawan.
Gambar 4.28 Popup clip draw
Jika user memilih yes, maka akan ditampilkan popup clip draw waiting yang akan
memberitahu bahwa aplikasi sedang menunggu jawaban penawaran tersebut dari
pemain lawan.
yes_btn.onRelease = function() { _parent.draw(true);
83
gotoAndStop("Draw Waiting"); }; no_btn.onRelease = function() { gotoAndStop(1); };
Potongan listing program di atas menampilkan popup clip draw waiting jika user
mengklik tombol yes.
Waiting for your opponent's reply...
Gambar 4.29 Popup clip waiting
Sedangkan di layar pemain lawan akan ditampilkan popup clip draw request yang
menyatakan bahwa, lawan menawarkan remis.
Gambar 4.30 Popup clip draw request
yes_btn.onRelease = function() { _parent.drawAnswer("yes"); gotoAndStop(1); }; no_btn.onRelease = function() { _parent.drawAnswer("no"); gotoAndStop(1); }; requestingDraw = true
Potongan listing program diatas akan memberi nilai yes pada draw jika user
mengklik tombol yes dan nilai no jika user mengklik tombol no.
Jika Pemain lawan memilih accept, maka permainan berakhir dan berakhir
remis/seri, dan aplikasi akan menampilkan popup clip draw yes, yang akan
memberitakan bahwa permainan berakhir seri.
84
Gambar 4.31 Popup clip draw yes
Jika lawan memilih decline, maka permainan akan dilanjutkan dan aplikasi akan
menampilkan popup clip no, yang menyatakan bahwa penawaran remis ditolak.
Gambar 4.32 Popup clip draw no
function gameIsDraw() { inPlay = false; timerBox.stopCounting(); enableRestart(true); textBox.text = "Game is a draw!"; if (myNum == 0) { _parent.endGame_plugin(.5); } }
Potongan listing program di atas akan mengakhiri permainan dengan status seri.
4.2.2.4.9. Rematch Button
Rematch button berfungsi untuk mengulang permainan setelah
permainan berkhir, dan kedua pemain masih berada di dalam game room. Pada
saat salah seorang user mengklik tombol rematch, maka aplikasi akan
menampilkan popup clip restart request yang berfungsi untuk mengkonfirmasi
apakah user ingin mengulang permainan.
85
Play a rematch?
Yes No
Gambar 4.33 Restart request
Jika user memilih yes, maka aplikasi akan menampilkan popup clip rematch
waiting, selagi menunggu respon dari pemain lawan, apakah permintaan untuk
mengulang permainan diterima.
yes_btn.onRelease = function() { _parent.sendRestart(); gotoAndStop("Rematch Waiting"); }; no_btn.onRelease = function() { gotoAndStop(1); };
Potongan listing program di atas akan menampilkan popup clip rematch waiting
dan menampilkan popupclip rematch request di layar pemain lawan jika user
memilih yes, dan akan kembali ke tampilan sebelumnya jika user memilih no.
Waiting for a response form your opponent...
Gambar 4.34 Rematch waiting
86
Sedangkan di layar pemain lawan, aplikasi akan menampilkan popup clip rematch
request yang menanyakan apakah pemain lawan ingin mengulang permainan atau
tidak.
Your opponent would like a rematch. Do you accept?
Yes No
Gambar 4.35 Rematch request
Jika pemain lawan memilih yes, maka permainan akan dimulai lagi dari awal, jika
memilih no, maka aplikasi akan menampilkan popup clip restart no, yang
menyatakan bahwa pemain lawan menolak untuk mengulang permainan.
yes_btn.onRelease = function() { _parent.rematchAnswer("yes") gotoAndStop(1); }; no_btn.onRelease = function() { _parent.rematchAnswer("no") gotoAndStop(1); };
Potongan listing program diatas akan memberi nilai yes pada fungsi
rematchanswer jika user mengklik tombol yes dan nilai no jika user mengklik
tombol no.
Your opponent has declined your request for a rematch.
OK
Gambar 4.36 Restart no
87
function rematchAnswer(val) { var sendOb:Object = new Object(); sendOb.action = "restart answer"; sendOb.answer = val; sendMove(sendOb); if (val == "yes") { _root.gotoAndStop("Refresh"); } }
Potongan listing program di atas akan merestart permaian jika nilai dari rematch
answer adalah yes.
4.2.2.4.10. Lobby Button
Lobby button berfungsi untuk kembali ke chat scene setelah permainan
berakhir, jika user mengklik lobby button, maka user akan kembali ke scene chat
dan secara otomatis akan masuk ke room default, yaitu Lobby.
lobby_clip.lobby_btn.onRelease = function() { _root.joinRoom(); _root.gotoAndStop("Chat"); };
Potongan listing program di atas akan mengembalikan user ke scene chat jika
user mengklik Lobby button.
4.2.3. Menu Credit
Menu credit akan menampilkan informasi tentang penulis.
Gambar 4.37 Menu Credit
88
4.2.4. Menu Help
Menu help akan memberikan informasi tentang aturan permainan catur
yang dilengkapi dengan animasi gerakan tiap bidak, serta memberikan penjelasan
secara detail tentang aplikasi ini.
Gambar 4.38 Menu Help
89
BAB V
ANALISA HASIL
5.1. Uji Coba Perangkat Lunak
Pengujian terhadap aplikasi game dilakukan setelah ElectroServer sebagai
web server dan socket server terinstal, seperti pada uraian Bab IV. Pada uji coba
ini diasumsikan user akan menggunakan fasilitas chatting dan permainan pada
aplikasi Game Online Chess.
5.1.1. Uji Coba Scene Chat
Dalam scene ini user akan melihat daftar chat room yang tersedia, daftar
user yang berada pada room user tersebut berada dan daftar game room. User
dapat mengetikkan pesan kepada user lain, pesan ini dapat bersifat umum (dapat
dibaca oleh semua user) atau juga dapat bersifat pribadi (hanya dapat dibaca oleh
user tujuan). Untuk mengirimkan pesan,maka user mengetikkan pesan pada Chat
Message Box, maka pesan tersebut akan ditampilkan pada Chat History dan dapat
dibaca oleh semua user pada room yang sama. Untuk mengirimkan pesan pada
user tertentu, maka user akan mengklik pada nama user tujuan dan aplikasi akan
menampilkan sebuah textbox untuk mengetikkan pesan kepada user tersebut dan
pesan akan ditampilkan pada chat history milik user tujuan.
Untuk bergabung dengan salah satu chat room yang tersedia, maka user
dapat mengklik salah satu room di dalam textbox daftar room(Chat Room List),
jika room tersebut tidak diberi password oleh user yang membuatnya, maka user
akan langsung masuk ke dalam room tersebut dan daftar user berubah menurut
90
room yang dipilihnya. Jika room tersebut diberi password, maka user harus
mengetikkan password di text box yang telah disediakan, jika tidak atau password
salah, maka user kembali ke room sebelumnya.
Untuk membuat chat room, maka user dapat mengklik tombol new room
yang tersedia, dan jika room tersebut ingin diberi password, maka user dapat
mengetikkan password di textbox yang disediakan, jika tidak user dapat
mengosongkan textbox tersebut.
Untuk bergabung dengan salah satu game room, maka user dapat
mengklik salah satu game room yang tersedia pada Game Room List, Jika room
tersebut diberi password, maka user harus mengetikkan password di textbox yang
telah disediakan, jika tidak atau password salah, maka user kembali ke room
sebelumnya. Pada saat memilih Game Room, user dapat memilih ingin bergabung
sebagai pemain atau penonton, namun jika jumlah pemain sudah mencapai jumlah
maksimal (2), maka secara otomatis user bergabung sebagai penonton.
Untuk membuat game room maka user dapat mengklik tombol New Game
yang telah disediakan, jika room tersebut ingin diberi password, maka user dapat
mengetikkan password di textbox yang disediakan, jika tidak user dapat
mengosongkan textbox tersebut.
5.1.2. Uji Coba Scene Game
Untuk mulai bermain catur seorang user harus menunggu adanya user lain
yang bergabung dengan Game Room nya sebagai pemain. Untuk bermain catur
user akan mengklik buah catur yang ingin dijalankannya dan menggeser buah
catur tersebut ke tempat tujuan. Jika buah catur diletakkan pada tempat yang tidak
91
sesuai aturan, misalnya, raja maju tiga langkah diagonal, maka buah catur tersebut
akan kembali ke posisi awal.
5.2.Analisa Manfaat
Berdasarkan proses implementasi yang telah dilaksanakan diperoleh
analisa manfaat sebagai berikut:
1. Bagi pemain catur pemula, atau bahkan bagi user yang sama sekali
tidak tahu cara bermain catur, dapat mempelajari aturan-aturan catur
yang diberikan pada menu help.
2. User dapat bermain sekaligus berkomunikasi dengan user lain dengan
adanya fasilitas chatting.
3. Karena aplikasi ini berbasis web, maka seorang user dapat bermain
catur atau pun hanya sekedar chatting dengan user lain yang berada di
tempat lain.
5.3.Analisa Teknologi
Beberapa analisa teknologi yang diperoleh setelah proses implementasi antara
lain:
1. Kemampuan Macromedia Flash MX 2004 ini di dalam kompresi file sangat
berguna sekali, mengingat, aplikasi yang dibuat menggunakan banyak sekali
file gambar dan beberapa file audio, yang dapat membuat ukuran file
membengkak, dan juga mengingat aplikasi yang dibuat merupakan aplikasi
berbasis web sehingga akan lebih baik jika ukuran file menjadi semakin
kecil untuk mempercepat transfer data.
92
2. Sebagai socket server, ElectroServer 3 memiliki banyak sekali fasilitas yang
mempermudah penulis dalam pembuatan aplikasi. Namun sebagai web
server, ElectroServer3 memiliki konfigurasi yang lebih rumit dan kurang
lengkap dibandingkan dengan web server seperti Apache.
3. Untuk menjalankan aplikasi tidak perlu menginstal apapun, hanya perlu
sebuah perangkat komputer yang terhubung ke internet dengan browser
yang mendukung flash.
5.4.Kelebihan dan Kekurangan aplikasi
Program aplikasi yang penulis buat tentu saja memiliki kelebihan dan
kekurangannya.
Kelebihan program aplikasi yang penulis buat antara lain :
1. Dengan aplikasi permainan catur ini selain user dapat bermain catur,
user juga dapat berkomunikasi dengan user lain dengan adanya fasilitas
chatting.
2. Karena aplikasi ini berbasis web, untuk dapat mengakses aplikasi ini,
user tidak perlu menginstal program apapun, user hanya perlu
mengakses situs dimana aplikasi ini berada, tentu saja dengan browser
yang mendukung flash.
3. Dengan aplikasi ini juga, user dapat bermain catur dengan lawan main
yang berada di tempat yang jauh.
4. Aplikasi ini dibuat sepenuhnya dengan menggunakan bahasa inggris,
sehingga diharapkan dapat diakses oleh user internasional.
93
Kekurangan program aplikasi yang dibuat oleh penulis antara lain :
1. Karena aplikasi ini berbasis flash, maka dibutuhkan koneksi internet
yang cukup cepat, agar aplikasi dapat berjalan secara maksimal.
2. Aplikasi permainan ini tidak bisa melakukan save game (menyimpan
permainan untuk dilanjutkan lain kali).
3. Aplikasi menggunakan ElectroServer 3 sebagai web server dan socket
server, sedangkan sampai saat ini masih jarang sekali jasa web hosting
yang menggunakan teknologi tersebut.
94
BAB VI
PENUTUP
6.1.Kesimpulan
Dari proses pembuatan aplikasi ini penulis dapat mengambil beberapa
kesimpulan, antara lain:
1. Aplikasi dapat berjalan dengan baik, baik permainan catur itu sendiri,
maupun fasilitas chatting yang ada, sehingga tidak menutup kemungkinan
untuk digunakan dalam keadaan yang sesungguhnya, seperti lomba catur,
atau hanya sekedar forum untuk para penggemar catur.
2. Macromedia Flash MX 2004 sangat cocok digunakan untuk membangun
aplikasi berbasis web karena memiliki kemampuan kompresi data gambar
dan suara yang sangat baik, yaitu dengan membuat file .swf. Macromedia
Flash MX 2004 juga memiliki bahasa pemrograman yang berorientasi
objek yaitu ActionScript 2.0 dan fasilitas animasi yang dapat membuat
tampilan game menjadi lebih menarik.
6.2.Saran
Untuk pengembangan sistem yang akan datang penulis menyarankan agar
aplikasi permainan catur ini memiliki fasilitas save game, yaitu kemampuan untuk
menyimpan permainan agar dapat dilanjutkan lain kali.
DAFTAR PUSTAKA
Andreas Andi Suciadi, Menguasai Pembuatan Animasi Dengan Macromedia Flash MX,
Jakarta: PT Elex Media Komputindo, 2003.
Bernard Hartanto & Ferdianto Wijaya, The Magic of Flash MX 2004, Jakarta: PT Elex
Media Komputindo 2004.
Jhonsen, Membuat berbagai Efek dengan Flash MX, Jakarta: PT Elex Media
Komputindo, 2003
Yahya Kurniawan, ST, Kiat Praktis Menguasai ActionScript 2.0, Jakarta: PT Elex Media
Komputindo,2005
www.electrotank.com
www.conservativebookstore.com/chess/
www.koni.or.id/koni_pb_percasi.htm
stop(); var serverSettings = new XML(); serverSettings.ignoreWhite = true; serverSettings.onLoad = function() { var children = this.firstChild.childNodes; for (var i=0;i<children.length;++i) { var name = children[i].nodeName var value = children[i].firstChild.nodeValue if (name == "IP") { ip = value; } else if (name == "Port") { port = Number(value); } } System.security["loadPolicyFile"]("xmlsocket://"+ip+":"+port); } serverSettings.load("ServerSettings.xml"); this.onEnterFrame = function() { if (this.getBytesLoaded()/this.getBytesTotal() >=1 && getTimer() >= 1*1000) { delete this.onEnterFrame; gotoAndStop("Code"); } }
var gameInfo:Object = new Object(); var es:ElectroServer = ElectroServer.getInstance(); es.setModeratorLabel(true, " [Mod]"); es.setDebug(false); function joinRoom() { var roomOb:Object = new Object(); roomOb.roomName = "Lobby"; roomOb.zone = "Chess Zone"; es.createRoom(roomOb); } es.roomJoined = function(Results, myRoom) { if (Results.success) { gotoAndStop("Chat"); } else { msg.text = Results.error; } }; es.loggedIn = function(success, error, variables) { if (success) { for (var i = 0; i<variables.length; ++i) { var name:String = variables[i].Name.value; var value:String = variables[i].Data.value; gameInfo[name] = value; } joinRoom(); } else { msg.text = error; tryAgain_clip.gotoAndStop(2); } }; es.onConnection = function(success, error) { if (success) { gotoAndStop("Login"); } else { msg.text = error; } }; es.connectionClosed = function(val) { //disconnected }; es.setIP('192.168.0.1');//tergantung alamat ip web server es.setPort(9875);// port number jangan dirubah2 kacau semua!!!! gotoAndStop("Connecting");
msg.text = "Connecting..." es.connect();
function loginFXN() { var username:String = username_txt.text; var password:String = password_txt.text; if (username.length>2 && username.length<15) { es.login(username, password); gotoAndStop("Waiting"); } } login_btn.onRelease = function() { if (username_txt.length > 2) { loginFXN(); } }
Key.removeListener(keyListener); var chatHistory:String = ""; var playerList:Array; var spectatorList:Array; function sendClicked() { var msg:String = msgBox.text; if (msg.length>0) { es.sendMessage("public", msg); msgBox.text = ""; } } send_btn.onRelease = sendClicked; var keyListener:Object = new Object(); keyListener.onKeyDown = function(ev) { if (Key.isDown(13)) { sendClicked(); } }; Key.addListener(keyListener); es.messageReceived = function(type:String, message:String, from:String) { if (type == "public") { chatHistory += from+": "+message+newline; } else if (type == "private") { chatHistory += from+"[private]: "+message+newline; } chatBox.text = chatHistory; chatBox.vPosition = chatBox.maxVPosition; }; function showUsers(userList, type, name) { if (type == "userleft" && name == opponent) { game_clip.opponent_left(); } //ambil user list var userlist = es.getUserList(); //buat player list sama spectator list. playerList = new Array(); spectatorList = new Array(); //player max di gameroom maxPlayers = es.getRoom().Description.attributes.numPlayers; allowSpectators = es.getRoom().Description.attributes.allowSpectators; myNum = es.getUser().AssignedNumber.value; var highestNum:Number = 0; for (var i = 0; i<userlist.length; ++i) { var user:Object = userlist[i]; var num:Number = user.AssignedNumber.value; if (num>=0 && num != undefined && num != null && num<maxPlayers) { //masukkin ke player list if (num>highestNum) { highestNum = num;
} user.gamePlayer = true; playerList.push(user); } else { //masukin ke spectator list user.gamePlayer = false; spectatorList.push(user); } } //tampilin isi player list sama spectator list showBothListBoxes(); if (playerList.length == maxPlayers && myNum == 0) { //pemain lengkap , pesan mulai main sendStartMove(playerList[1].Name.value); } else if (playerList.length == maxPlayers && myNum == 1) { sendStartMove(); } else if (playerList.length == maxPlayers) { spectatorStart(); } if (!es.getUser().gamePlayer && es.getUser().AssignedNumber.value>=maxPlayers) { //jika join game sudah penuh //ada tampilan pilihan jadi spectator atau pergi. if (!allowSpectators) { //langsung buang kalo no spectator goBack(); } } if (es.getRoom().Description.attributes.playersArrived != highestNum+1 && es.getUser().isGameMaster) { //+1 hitungnya mulai dari 0 changeDetail(highestNum+1); } game_clip.setGamePlayerList(playerList); game_clip.setSpectatorList(spectatorList); } function showBothListBoxes() { spectatorListBox.dataProvider = spectatorList; } function sendStartMove() { game_clip.start(); } function spectatorStart() { game_clip.spectatorStart(); } function changeDetail(num) { var descOb = es.getRoom().Description; descOb.attributes.playersArrived = num; es.changeRoomDetail("description", descOb); } es.userListUpdated = showUsers; es.moveReceived = function(type:String, moveOb:Object, from:String) { game_clip.moveReceived(moveOb, from); }; function createRoomVar() { var room = es.getRoom(); var master_name = room.Description.attributes.username; if (es.getUser().Name.value == master_name) { var ob = new Object(); ob.name = "master_is_here"; ob.data = "yes"; ob.locked = true; ob.persistent = false; es.createRoomVariable(ob); } } function checkRoomVar() { var master_name = es.getRoom().Description.attributes.username; if (es.getUser().Name.value != master_name) { var ob = es.getRoomVariables(); if (ob.master_is_here != "yes") { game_clip.masterLeft();
} } } function roomVariablesUpdated(type:String, ob:Object, name:String) { var master_name = es.getRoom().room.Description.attributes.username; if (ob.master_is_here != "yes" && es.getUser().Name.value != master_name) { game_clip.masterLeft(); } } es.roomVariablesUpdated = roomVariablesUpdated; createRoomVar();
var min, sec, inc; var start_time; var white:Object = new Object(); white.color = "white"; var black:Object = new Object(); black.color = "black"; var counting = false; var myColor; function getMySeconds():Number { if (_parent.myColor == "white") { return white.seconds; } else { return black.seconds; } } function getHisSeconds():Number { if (_parent.myColor == "white") { return black.seconds; } else { return white.seconds; } } function setSeconds(who, num) { if (who == "white") { currentColor = white; } else if (who == "black") { currentColor = black; } currentColor.seconds = num; render_spectator(); } function iLost() { _parent.iLost(); stopCounting(); } function setMyColor(which) { myColor = which; } function startCounting(which) { if (_root.time_game) { start_time = getTimer(); counting = true; if (which == "white") { currentColor = white; white_plunger.gotoAndStop(2); } else if (which == "black") { currentColor = black; black_plunger.gotoAndStop(2); } render(); } } function stopCounting(increment_it) { if (counting) { counting = false; if (currentColor.color == myColor && increment_it) { currentColor.seconds += inc;
} currentColor.seconds = render(); white_plunger.gotoAndStop(1); black_plunger.gotoAndStop(1); } } function setTimeParameters(tmp_min, tmp_sec, tmp_inc) { start_time = getTimer(); min = tmp_min; sec = tmp_sec; inc = tmp_inc; white.seconds = min*60+sec; black.seconds = min*60+sec; currentColor = white; render(); currentColor = black; render(); } function updateTime(col, seconds) { if (_root.time_game) { start_time = getTimer(); if (col == "white") { currentColor = white; } else if (col == "black") { currentColor = black; } currentColor.seconds = Number(seconds); render(); } } function render() { if (_root.time_game) { var now = getTimer(); var seconds_depleted = Math.round((now-start_time)/1000); var seconds_left = currentColor.seconds-seconds_depleted; if (seconds_left<0) { seconds_left = 0; } if (seconds_left<=0 && currentColor.color == myColor) { if (counting) { iLost(); } } var mins = Math.floor(seconds_left/60); var secs = seconds_left%60; if (secs<10) { secs = "0"+secs; } if (mins<10) { mins = "0"+mins; } var str = mins+":"+secs; if (currentColor.color == "white") { white_counter_txt.text = str; } else { black_counter_txt.text = str; } return seconds_left; } } function render_spectator() { if (_root.time_game) { var seconds_left = currentColor.seconds; if (seconds_left<0) { seconds_left = 0; } var mins = Math.floor(seconds_left/60); var secs = seconds_left%60; if (secs<10) { secs = "0"+secs;
} if (mins<10) { mins = "0"+mins; } var str = mins+":"+secs; if (currentColor.color == "white") { white_counter_txt.text = str; } else { black_counter_txt.text = str; } return seconds_left; } } this.onEnterFrame = function() { if (counting && _root.time_game) { render(); } }; _parent.timerBoxRequest();
if (type == "pawn") { var firstMove:Boolean = chessPiece.isFirstMove; var sign:Number; if (color == "white") { sign = 1; } else if (color == "black") { sign = -1; } var next_y:Number = start_y+sign; var nextTile:Tile = getTile(start_x, next_y); if (start_x == end_x && (end_y-start_y == sign*1 || (end_y-start_y == sign*2 && firstMove && !nextTile.isFilled)) && !containsPiece) { returnVal = true; } else if (Math.abs(start_x-end_x) == 1 && end_y-start_y == sign*1 && containsEnemy) { returnVal = true; if (returnVal && ((color == "white" && end_y == 7) || (color == "black" && end_y == 0))) { promotePawn = true; }
else if (type == "king") { var firstMove:Boolean = chessPiece.isFirstMove; if ((Math.abs(start_y-end_y) == 1 && start_x-end_x == 0) || (Math.abs(start_x-end_x) == 1 && (Math.abs(start_y-end_y) == 1 || start_y-end_y == 0))) }
else if (type == "knight") { if ((Math.abs(start_x-end_x) == 1 && Math.abs(start_y-end_y) == 2) || (Math.abs(start_x-end_x) == 2 && Math.abs(start_y-end_y) == 1)) { if (!c_ntainsSameColor) { returnVal = true; }
else if (type == "queen" || type == "rook" || type == "bishop") { var hor_vert:Boolean = false; var diag:Boolean = false; if (type == "queen") { hor_vert = true; diag = true; } else if (type == "rook") { hor_vert = true; } else if (type == "bishop") { diag = true; }