serta fungsi-fungsi yang mendukung kelas tersebut saat menjalankan state yang sedang aktif.
perancangan yang telah diperoleh dari tahapan sebelumnya. Untuk ilustrasinya, dapat dilihat pada Gambar 7. Implementasi ini berupa pengkodean dengan menggunakan bahasa pemrograman C++.
Gambar 7 Ilustrasi pada tahap implementasi (Murray 2000). Pengujian
Gambar 6 Diagram Metodologi Penelitian yang digunakan.
Jika implementasi yang telah dilakukan belum menyelesaikan masalah yang ada, maka akan dilakukan pengujian untuk menyempurnakan kembali sistem tersebut hingga masalah yang ada telah terselesaikan. Pengujian sistem dilakukan menggunakan metode black-box. Pengujian ini bertujuan untuk mengetahui apakah state-state yang ada dalam sistem telah berjalan dan memeriksa error pada sistem.
Perancangan Tahap perancangan sistem ini mencakup dua hal berikut: 1 Perancangan Kelas-kelas Utama Untuk memudahkan implementasi dengan menggunakan pemrograman berorientasi objek akan ditentukan kelas-kelas dari objek yang ada pada simulasi tersebut. Fungsifungsi yang ada pun disesuaikan dengan kebutuhan yang sebelumnya telah didefinisikan. 2 Perancangan Finite State Machine Proses yang terjadi pada tahap ini yaitu merancang state machine dari agen kecerdasan buatan pada objek-objek yang ada agar sesuai dengan peraturan yang telah ditentukan. Mulai dari penentuan state-state hingga pergerakan objek saat kondisi state berubah. Implementasi Simulasi permainan ini akan diimplementasikan ke dalam bentuk aplikasi prototipe berdasarkan hasil analisa dan
HASIL DAN PEMBAHASAN Identifikasi Masalah Tujuan dari permainan futsal adalah mencetak gol sebanyak-banyaknya karena tim yang skornya lebih tinggi lah yang akan memenangkan permainan. Pada kasus ini masalah yang harus diselesaikan adalah perilaku pemain-pemain dalam tim ketika mencoba mencapai tujuan tersebut. Jika dipandang dari sisi permainan futsal itu sendiri, masalah yang ada antara lain: pendefinisian batas dari lapangan dimana pemain dapat berinteraksi, pendefinisian peran dari pemain dalam tim (pemain lapangan, pemain bertahan, penjaga gawang), reaksi tiap pemain maupun tim jika berada pada kondisi tertentu, perubahan kondisi permainan sesuai dengan keputusan wasit, dan memperkirakan kejadian yang mungkin terjadi selanjutnya (menduga gerakan lawan). Untuk simulasinya, masalah yang ada antara lain: merender permainan dalam bentuk aplikasi, menggerakkan pemain sesuai dengan aksi yang dilakukannya, dan mengubah kondisi
5
(state) pemain maupun tim sesuai perubahan lingkungan di sekitarnya. Sesuai dengan ruang lingkup penelitian ini, perancangan akan difokuskan pada implementasi metode FSM untuk pergerakan dasar pertandingan. Untuk permasalahan mengenai perubahan kondisi permainan sesuai dengan keputusan wasit jika terjadi pelanggaran atau pencatatan waktu, serta kebijakan pelatih dalam mengatur tim tidak akan dirancang karena bersifat subjektif. Subjektif yang dimaksud di sini adalah bergantung pada penglihatan wasit ataupun pelatih. Analisis a. Analisis Kelas Beberapa objek yang berpengaruh pada olahraga futsal ini adalah: • • • • • •
lapangan dua buah gawang satu bola dua tim delapan pemain lapangan dua penjaga gawang
Dari objek-objek tersebut dapat diidentifikasi kelas-kelas yang ada, yaitu: • FutsalPitch Merupakan kelas utama pada sistem yang menginstansiasi kelas-kelas lain yang dibutuhkan agar simulasi dapat dijalankan. • FutsalGoal Kelas yang akan mendefinisikan kedua gawang pada FutsalPitch. • FutsalBall Kelas yang mendefinisikan bola yang digunakan saat simulasi berjalan. • FutsalTeam Kelas yang mendefinisikan tim-tim yang ada pada simulasi. Terdapat 2 tim yang akan dibuat, yaitu tim A yang daerahnya berada di sebelah kiri lapangan, dan tim B yang daerahnya berada di sebelah kanan lapangan. • FutsalPlayer Kelas ini mendefinisikan pemain dalam tim yang ada pada simulasi. Pemain-pemain ini lah yang akan menjadi agen kecerdasan buatan.
• FieldPlayer Merupakan kelas turunan dari FutsalPlayer yang akan mendefinisikan pemain lapangan dalam tim. • GoalKeeper Sama halnya dengan FieldPlayer, kelas ini merupakan kelas turunan dari FutsalPlayer yang akan mendefinisikan penjaga gawang (kiper) dalam tim. b. Analisis States Pada simulasi ini states yang ada dapat dibedakan menjadi tiga bagian, yaitu states untuk tim, states untuk pemain lapangan, dan states untuk penjaga gawang. States yang dimiliki oleh tim dapat dilihat pada Tabel 1. Tabel 1 States untuk tim Formasi Dasar
State
Deskripsi
Kick Off
KickOff
State saat awal permainan dan pada saat memulai kembali permainan setelah terjadi gol.
Menyerang
Attack
State saat tim sedang menguasai bola dan melakukan penyerangan.
Bertahan
Defense
State saat tim sedang tidak menguasai bola dan bertahan dari serangan lawan.
Serangan Penuh
FullAttack
State saat tim sedang melakukan tendangan sudut di daerah gawang lawan agar dapat menyerang sepenuhnya.
Bertahan Penuh
FullDefense State saat tim lawan sedang melakukan tendangan sudut di daerah gawang agar dapat bertahan sepenuhnya.
Sesuai dengan gerakan dasar pemain pada olahraga futsal, dapat didefinisikan beberapa state yang dimiliki oleh pemain lapangan yang dapat dilihat pada Tabel 2. Tabel 2 States untuk pemain lapangan Gerakan Dasar
State
Deskripsi
Kembali ke formasi
BackTo Formation
State untuk menginstruksi pemain agar kembali ke formasi yang sedang dijalankan.
Menunggu instruksi
Idle
State saat pemain tidak sedang mengontrol bola dan menunggu instruksi dari pemain lain.
Mengejar bola
Chase
State saat pemain sedang mengejar bola yang dijalankan oleh pemain yang paling dekat dengan bola dan pemain bertahan saat daerah tim sedang diserang oleh lawan.
Menendang Kick bola
State saat pemain akan menendang bola, baik itu melakukan operan ataupun tendangan langsung ke gawang.
6
Menerima bola
Receive
State saat pemain akan menerima operan bola dari pemain lain.
Tendangan ke dalam
OutKick
State saat pemain akan menendang bola kembali ke lapangan setelah lawan menendang bola keluar melewati garis samping.
Tendangan sudut
CornerKick State saat pemain melakukan tendangan sudut ketika lawan menendang bola keluar melewati garis gawang daerah lawan tersebut.
Menggiring Dribble bola
State saat pemain sedang menggiring bola.
Mendukung Support penyerang
State saat pemain mencari posisi yang mendukung penyerang pada saat tim sedang menyerang daerah musuh.
-
State ini merupakan state global yang akan dieksekusi terlebih dahulu sebelum mengeksekusi state yang dimiliki FieldPlayer yang bersangkutan.
GlobalFP
Untuk states kiper dapat dilihat pada Tabel 3. Tabel 3 States untuk kiper Gerakan Dasar
State
Deskripsi
Kembali ke gawang
BackTo Goal
State saat penjaga gawang keluar dari garis batas gawang dan akan kembali menjaga gawangnya.
Melindungi gawang
Cover Goal
State saat penjaga gawang sedang melindungi gawang.
Mencegat bola
Intercept State yang dijalankan ketika bola memasuki jangkauan penjaga gawang untuk menghentikan atau mencegat bola.
Mengembalikan bola
State untuk mengembalikan bola Bring BallBack kembali ke lapangan setelah sebelumnya bola dihentikan oleh penjaga gawang, atau saat pemain lawan menendang bola melewati garis gawang di daerah penjaga gawang.
-
Global GK
State global dari penjaga gawang, yang akan dieksekusi terlebih dahulu sebelum mengeksekusi state yang dimilikinya.
c. Pembagian Area Menjadi Subarea Untuk mengidentifikasi formasi atau posisi pemain ketika permainan akan dimulai atau pada saat sedang berlangsung, akan dilakukan pembagian area pada lapangan futsal menjadi beberapa subarea seperti yang terlihat pada Gambar 8.
Gambar 8 Pembagian area menjadi beberapa subarea pada lapangan futsal. d. Estimasi Posisi Bola Untuk menentukan posisi bola saat bergerak, dibutuhkan fungsi yang dapat mengestimasi posisi bola setelah dikenai aksi. Ilustrasinya dapat dilihat pada Gambar 9. Untuk menghasilkan estimasi yang lebih nyata, dibutuhkan suatu parameter gesekan dengan permukaan lapangan agar bola yang sedang bergerak kecepatannya dapat berkurang perlahan-lahan. Hal ini dapat dilakukan dengan memberikan kecepatan negatif atau berlawanan dengan kecepatan bola saat bergerak sehingga untuk menentukan posisi bola selanjutnya setelah t waktu dapat menggunakan rumus berikut: ∆𝑥 = 𝑢∆𝑡 + 𝑎 ∆𝑡
,
dengan ∆𝑥 adalah jarak yang ditempuh u adalah kecepatan bola saat ditendang, dan a adalah pengurangan kecepatan karena pergeseran.
Gambar 9 Estimasi posisi bola setelah dikenai aksi. Selain itu juga diperlukan penghitungan waktu yang diperlukan bola menuju target sesuai dengan jarak yang ditempuhnya sehingga jika dilakukan tendangan dengan tenaga yang relatif kecil sedangkan target tendangan berada di titik yang jauh dari pemain, dapat dihitung bahwa bola tidak akan dapat menempuh jarak tersebut. Rumus yang digunakan yaitu: 𝑣 = 𝑢 + 2𝑎∆𝑥 , ∆𝑡 =
,
dengan 𝑣 adalah kecepatan bola saat mencapai tujuan, u adalah kecepatan bola saat ditendang, a adalah pengurangan kecepatan karena pergeseran, ∆𝑥 adalah jarak yang ditempuh, dan ∆𝑡 adalah interval waktu (Buckland 2005).
7
e. Pergerakan Pemain Seluruh pemain hampir setiap saat harus melihat dan mengikuti posisi bola. Pergerakan yang dilakukan bergantung pada formasi tim dan peran pemain dalam tim tersebut, apakah menjadi penyerang, pemain bertahan, atau penjaga gawang. Pada saat tim sedang melakukan penyerangan, pemain penyerang akan berusaha mencetak angka dengan memasuki daerah musuh, sedangkan pemain bertahan akan menjaga daerah timnya dari serangan lawan. Pada saat tim sedang bertahan, seluruh pemain akan kembali ke posisi awal untuk menjaga daerah timnya. Berbeda dengan pemain lapangan, penjaga gawang akan tetap berada di posisinya baik tim dalam formasi menyerang ataupun bertahan. Setiap aksi yang dilakukan oleh pemain dalam simulasi ini akan mempengaruhi pergerakan pemain lainnya. Baik itu pemain dalam satu tim maupun pemain lawan. Aksi tersebut direpresentasikan dalam bentuk state. Transisi perubahan aksi tersebut akan dilakukan oleh state machine. f. Sustain Dot Analyzer Jika penyerang memasuki daerah musuh, maka akan dicari pemain lain yang akan menjadi pendukung penyerang tersebut. Pencarian ini dilakukan dengan membagi daerah musuh tersebut menjadi titik-titik, dan menghitung nilai setiap titik tersebut berdasarkan parameter tertentu. Penghitungan ini akan dinamakan Sustain Dot Analyzer. Parameter yang akan dihitung antara lain: • Keamanan titik jika pemain yang sedang mengontrol bola melakukan operan ke titik tersebut • Kemungkinan menendang bola langsung menuju gawang untuk mencetak angka dari titik tersebut • Menghitung jarak titik tersebut dari pemain yang sedang mengontrol bola, semakin jauh nilainya akan semakin tinggi. Namun, jika melewati batas jarak optimal yang telah ditentukan, titik tersebut tidak akan diberi nilai. Nilai akhir pada tiap titik merupakan jumlah nilai dari tiap parameter. Jika nilai akhir tersebut merupakan nilai tertinggi, maka pemain
yang akan mendukung penyerang akan bergerak ke titik tersebut. Untuk ilustrasi dari Sustain Dot Analyzer ini dapat dilihat pada Gambar 10.
Gambar 10 Ilustrasi dari Sustain Dot Analyzer. Perancangan Dari hasil analisis kelas yang telah dilakukan sebelumnya, dapat dirancang relasi antar kelas tersebut dengan menggunakan diagram kelas. Karena modul simulasi ini dapat dibagi menjadi dua bagian yang terpisah, maka tiap bagian tersebut akan direpresentasikan dalam bentuk package-package. a. Perancangan Kelas-kelas Utama Package FutsalClass membutuhkan beberapa kelas tambahan untuk membantu perancangan simulasi permainan olahraga futsal ini. Kelas-kelas tambahan tersebut diambil dari sample code yang terdapat pada buku Programming Game AI by Example yang ditulis oleh Mat Buckland. Kelas-kelas tambahan ini direpresentasikan dalam package Common. Diagram kelas dari package FutsalClass ini dapat dilihat pada Lampiran 1. Pada saat pergantian state, objek-objek dapat bergerak sesuai dengan pesan yang dikirimkan. Dalam simulasi ini FutsalPlayer dan FutsalBall merupakan objek yang bergerak, sehingga didefinisikan sebagai turunan dari kelas MovingEntity yang membantu dalam menentukan koordinat lokal dari objek tersebut dan merotasi arah dari pemain agar sesuai dengan tujuan gerakannya. Selain itu FutsalPlayer memiliki hubungan composition dengan kelas SteeringBehaviors yang digunakan untuk menggerakkan objek tersebut sesuai instruksi yang dikirimkan. Walaupun FutsalBall merupakan objek yang bergerak, tetapi kelas ini tidak memerlukan SteeringBehaviors karena gerakannya hanya dipengaruhi oleh pemain (tidak dapat bergerak sendiri). FutsalPlayer juga merupakan turunan dari kelas AutoList dimana kelas ini berfungsi untuk membuat sebuah list dari beberapa objek yang sama secara otomatis.
8
b. Perancangan Finite State Machine
Implementasi
Package FSM ini akan dibuat sesuai dengan struktur State Design Pattern dengan mendefinisikan aspek-aspek yang terdapat di dalam simulasi. Diagram kelas dari package FSM ini dapat dilihat pada Lampiran 2.
Lingkungan pengembangan simulasi ini menggunakan bahasa pemrograman C++ dengan Microsoft Visual Studio 2008 sebagai kompilator serta seperti yang sebelumnya telah disebutkan, bahwa dalam perancangan simulasi ini juga akan digunakan library tambahan dari buku Programming Game AI by Example yang ditulis oleh Mat Buckland.
1 State Kelas ini merupakan kelas abstrak yang berfungsi sebagai interface bagi state-state yang akan diidentifikasi. Sehingga setiap state yang ada dapat mengimplementasi kelas ini sesuai dengan aksi yang akan dilakukan saat memasuki state, saat di dalam state, saat keluar dari state, dan saat menerima pesan. 2 StateMachine Fungsi utama dari state machine adalah memisahkan antara kelas state dengan kelas yang mengimplementasi transisi logika. Kelas inilah yang digunakan oleh objek untuk bertransisi agar dapat berinteraksi dengan kelas state yang dimiliki objek tersebut. 3 FutsalTeamStates Merupakan kumpulan kelas-kelas state untuk mendefinisikan aksi tiap FutsalPlayer dalam satu tim pada saat berganti formasi. State-state yang ada di sini merupakan state yang dimiliki oleh tim. Aliran state pada FutsalTeamStates diilustrasikan dalam bentuk diagram state pada Lampiran 3. 4 FieldPlayerStates Merupakan kumpulan kelas-kelas state yang dimiliki oleh pemain lapangan (FieldPlayer). Diagram state dari FieldPlayerStates dapat dilihat pada Lampiran 4. 5 GoalKeeperStates Merupakan kelas-kelas state yang dimiliki oleh kiper (GoalKeeper). Diagram state dari GoalKeeperStates dapat dilihat pada Lampiran 5. Kelas-kelas di atas dapat didefinisikan sebagai aspek-aspek yang terdapat di dalam struktur State design pattern. Dimulai dari StateMachine yang berfungsi sama halnya dengan aspek Context, State yang berfungsi sama halnya dengan aspek State, serta statestate yang terdapat pada FutsalTeamStates, FieldPlayerStates, dan GoalKeeperStates yang berfungsi sama dengan aspek ConcreteState.
Simulasi permainan olahraga futsal ini akan diimplementasikan dalam bentuk Windows Application dengan nama Futsal Agent SimulaTion (FAST). Pengguna bisa melihat jalannya simulasi dan memilih menu yang tersedia untuk mengaktifkan beberapa pilihan yang membantu pengguna dalam melihat aliran perubahan state dari tiap objek yang ada. a. Implementasi Kelas-kelas Utama Lapangan akan dienkapsulasi pada kelas FutsalPitch yang dimana instansiasi dari kelas ini akan dilakukan saat aplikasi dijalankan. Pada kelas inilah terdapat fungsi untuk membagi area lapangan menjadi beberapa subarea agar objek mengetahui dimana mereka berada saat menjalankan formasi tertentu. Pada simulasi ini area dibagi secara horizontal menjadi 5 bagian dan secara vertikal menjadi 10 bagian, sehingga total subarea yang terbentuk ada 50. Di awal simulasi setiap objek akan diposisikan pada suatu subarea tertentu, yang kemudian akan berubah sesuai dengan formasi yang sedang dijalankan. Kelas ini selanjutnya akan menginstansiasi FutsalBall, FutsalGoal, dan FutsalTeam. Hal yang diperhatikan saat mengimplementasi FutsalGoal hanyalah identifikasi titik tepi kiri dan kanan dari gawang sehingga jika bola melewati garis yang menghubungkan kedua titik tersebut, akan tercipta gol. FutsalTeam akan menginstansiasi setiap pemain dalam tim dan pointer-pointer yang mengacu pada lapangan, tim lawan, gawang tim, dan gawang lawan. Selain itu juga terdapat pointer yang mengacu kepada pemain-pemain penting yang terdapat dalam tim, yaitu: • Control Player Pemain yang sedang membawa bola yang berguna juga sebagai indikasi bahwa timnya sedang menguasai bola. • Support Player Pemain yang mendukung penyerang untuk mencetak gol.
9
• Receive Player Penerima bola yang dimana hanya akan ada satu penerima bola saja pada satu waktu. • Closest To Ball Player Pemain yang paling dekat dengan bola (Buckland 2005). Selain itu dibuat beberapa fungsi yang dapat mendukung state-state saat dieksekusi. Fungsifungsi tersebut antara lain: • Mengganti state semua pemain lapangan untuk kembali ke posisi awal (sering digunakan pada saat penjaga gawang sedang menguasai bola) • Mengecek apakah terdapat lawan dalam radius posisi pemain saat ini • Memeriksa apakah operan dapat dilakukan • Memeriksa beberapa strategi operan yang mungkin dapat dilakukan dan menentukan penerima operan terbaik yang berada pada jangkauan operan • Mengecek apakah operan yang akan dilakukan bebas dari lawan • Mengecek apakah pemain dapat melakukan tendangan ke gawang Selain itu juga dibuat fungsi pendukung yang akan dienkapsulasi bersama pemain dalam tim, yaitu pada kelas FutsalPlayer. Fungsi-fungsi tersebut antara lain: • Mengecek apakah pemain berada pada areanya • Mengecek apakah suatu objek berada di depan pemain • Mengecek apakah ada lawan yang mengancam posisi pemain • Mengecek apakah pemain berada di daerah gawang lawan • Mengecek apakah pemain merupakan pemain yang paling dekat dengan bola • Memberitahukan support player untuk mendukung pemain ketika sedang menyerang • Mengecek apakah bola terdapat pada jangkauan penjaga gawang • Mengecek apakah bola berada pada jangkauan tendangan • Mengecek apakah bola terdapat pada jangkauan penerima bola • Menghitung jarak ke gawang tim • Menghitung jarak ke gawang lawan Pada FutsalPlayer ini juga terdapat enumerasi yang mendefinisikan peranan pemain dalam tim sehingga dapat menentukan apakah pemain akan menjadi penyerang (attacker), pemain bertahan (defender), atau kiper
(goalkeeper). Untuk penyerang dan pemain bertahan akan diinisialisasi sebagai FieldPlayer, dan kiper sebagai GoalKeeper, dimana keduanya merupakan turunan dari FutsalPlayer. b. Implementasi Finite State Machine Kelas State hanya memuat fungsi-fungsi abstrak yang kemudian akan diturunkan ke setiap state-state yang ada agar dapat diimplementasi sesuai dengan perilaku dari state-state tersebut. Kode dari kelas State tersebut adalah sebagai berikut: template
class State { public: virtual ~State(){}; virtual void Enter(data_model*)=0; virtual void Execute(data_model*)= 0; virtual void Exit(data_model*)=0; virtual bool ReceiveMessage(data_model*, const Telegram&)=0; };
Kelas State Machine pada sistem ini memiliki atribut yang menyimpan objek yang diacu, kondisi state saat ini, kondisi state sebelumnya, dan kondisi state global. Pada saat memperbaharui state, state global akan dieksekusi terlebih dahulu sebelum state saat ini. Hal ini diperlukan untuk memberikan kondisi yang sama pada semua pemain, misalnya pada saat bola keluar garis lapangan dimana setiap pemain harus dapat mengetahui peristiwa tersebut. Penggalan kode dari state machine ini adalah sebagai berikut: template class StateMachine { private: data_model* sm_holder; State* sm_current; State* sm_previous; State* sm_global; … void ChangeState(State* NewState){ sm_previous = sm_current; sm_current->Exit(sm_holder); sm_current = NewState; sm_current->Enter(sm_holder); } void Update()const{ if(sm_global) sm_global->Execute(sm_holder); if(sm_current) sm_current->Execute(sm_holder); } … };
Setelah mengimplementasi kelas State dan State Machine, kelas state-state yang berupa concrete state akan dibuat sesuai dengan perancangan yang sebelumnya telah dijelaskan.
10
Selanjutnya akan d dijelaskan aliran peerubahan s state yangg terjadi saat meengimplemenntasi gerakann dasar darii tiap peemain ataupunn tim. Untukk tampilan sim mulasi saaat dijalankan dapat dilihatt pada Lampiiran 6, 7, 8 dan 9.
b.. Mengoper Bola B Aliran statte dari FielldPlayerStatess saat peemain melakuukan operan ke pemain lainnya daalam satu tim dapat dilihat ppada Gambar 13.
a. Memulai Peermainan Aliran statte dari FutssalTeamStatess saat meemulai permaainan dapat diilihat pada Gambar 111.
Gambar 13 Diagram D FielddPlayerStates saat mengoper boola.
D FutsaalTeamStates saat s Gambar 11 Diagram m memulai permaainan. Setiap tim memulai m perm mainan dengann state yaang sama yaitu KickOff. Jika J semua pemain daalam tim telaah berada di posisinya masingm maasing, maka state akan berubah menjadi m Deefense. Pada kondisi ini, pemain dalam m tim yaang akan melakukan tendaangan kick off ff akan meengejar bola dan d mengoperr ke pemain laainnya sebagai tanda permainan p tellah dimulai. Aliran A staate pada pemaain ini dapat dilihat d pada Gambar 122. Tim dari pemain yangg mengontroll bola setelah permaiinan dimulaii akan menngubah staate-nya menjaadi Attack.
Sebelum melakukan m opperan, pemain n yang seedang mengontrol bola akan mem meriksa ap pakah operann dapat dilaakukan atau tidak deengan mempeertimbangkan posisi musuh h, jarak op peran, dan possisi penerima operan. Jika operan o daapat dilakukann, pemain inii akan mengirrimkan peesan kepada pemain yangg menjadi kaandidat peenerima operaan. Pemain yaang menerimaa pesan teersebut akann merubah state-nya menjadi m Receive dan mengejar m bolaa yang diopeer saat masuk m ke dalam m jangkauan ppenerima bolaa. c. Mengejar Bola B Mengejar bola yang dimaaksud di sini adalah paada saat tim tiidak sedang m menguasai bola. Tim teersebut akan menentukan ppemain manaa yang teerdekat dengaan bola lalu merubah sta ate-nya menjadi m Chase. Jika selaanjutnya ditem mukan peemain lain daalam satu tim m yang lebih dekat deengan bola, maka m pemain tersebut akan diubah d sttate-nya meenjadi Chasse dan pemain p seebelumnya akkan diubah staate-nya menjadi Idle attau BackToFoormation sesuuai dengan kondisi k lin ngkungannya.. d.. Kembali kee Posisi Awal
Gambar 12 Diagram D FieldP dPlayerStates saat s melakuukan tendangan kick off
Jika pemaiin yang sedaang dalam kondisi k Ba ackToFormattion telah berrada di posisii yang diiharuskan, maka m state-nnya akan diubah d menjadi m Idle. Jika J pada saaat kembali ke posisi teersebut tim tiddak sedang m menguasai bola dan peemain merupaakan yang terdekat dengan n bola maka m state-nyaa akan diubah menjadi Chasse. Pada saat pemain p telah bberada di possisinya daan pemain teersebut memiiliki peran sebagai s peemain bertahaan, akan dicekk apakah daerrah tim teersebut sedangg diserang oleeh lawan atau u tidak.
11
Jikka ya, makaa pemain terssebut akan diubah d staate-nya menjadi Chase unntuk menghenntikan law wan. Aliran state s dari FieeldPlayerStatees saat akkan kembali ke k posisi awall dapat dilihatt pada Gaambar 14.
gaawang lawan selama tidakk ada ancamaan dari laawan sambil mencari peemain yang dapat mendukungnya m a dalam melakkukan penyerrangan. Aliran A state saat s pemain sedang meng ggiring bo ola dapat dilihhat pada Gambbar 16.
Gambar 14 Diagram D FieldP dPlayerStates saat s mengoper boola.
Gambar 16 Diagram D FielddPlayerStates saat menggiring bbola.
e. Menendang Bola ke Gaw wang Lawan
g.. Mendukungg Penyerang
Aliran staate saat peemain melaakukan tenndangan ke gawang daapat dilihat pada Gaambar 15.
Aliran statee saat pemainn akan mend dukung peemain lain dalam d tim ssaat menyeran ng ke daaerah lawan dapat d dilihat paada Gambar 17.
Gambar 15 Diagram D FieldP dPlayerStates saat s menendaang bola ke gaawang lawan. Sebelum melakukan m teendangan, pemain yaang sedang mengontrol m bola akan mem meriksa appakah tendanggan dapat dillakukan atau tidak deengan mempeertimbangkan jarak ke gaawang law wan dan possisi kiper. Jikka tendangan dapat dillakukan, peemain ini akan melaakukan tenndangan laluu mencari peemain yang dapat meenjadi penddukung penyyerang agar jika tenndangan berhhasil ditepis oleh kiper pemain terrsebut akaan langsunng melanjjutkan peenyerangan. f. Menggiring Bola Pemain mennggiring bola dengan melaakukan tenndangan kecill ke depan pem main sesuai dengan d araah dari pemaain tersebut lalu l mengejarr bola yaang telah diteendang dan menendangny m ya lagi saaat bola beradda dalam janngkauan tendaangan. Peemain akan terus t menggiiring bola kee arah
Gambar 17 Diagram D FielddPlayerStates saat akan menndukung pemaain penyerang g Pemain yanng mendukunng penyerang g akan mencari m posisi yang tepat ddengan menjalankan fu ungsi SustainnDotAnalyzer. Jika posisi telah diitemukan, maka m pemaiin tersebut akan mengirim m pesaan kepada peemain yang sedang s membawa m boola agar m memberikan operan o paadanya dan mengubah state-nya menjadi m Receive. Pemaain yang mennerima pesan n akan mengecek m apaakah memangg dapat dilaakukan op peran ke pem main tersebut atau tidak. Jiika ya, op peran akan lanngsung dilakuukan. Pada saat bola b tidak laggi dikuasai oleh tim daari pemain pendukung, p m maka pemain n akan keembali ke possisi awal denggan mengubah h stateny ya menjadi BaackToFormatiion.
12