By Nailah ft.Hafsoh
Hey guys!!!!!!!!!! siapa yang kangen hayooooooo? Nailah is back everyone. Jadi hari ini aku akan membagikan hasil karya aku + tutor untuk bikin Game tic tac toe Versi aku di scratch.
Sebenernya aku dapet tutor ini dari My It teacher yaitu Mr.Haris. Kalian bisa cek website beliau untuk tutor originalnya : https://abuhusna.my.id/project-based-learning-tic-tac-toe/
˚୨୧⋆.˚ Buat sprite ˚୨୧⋆.˚
Langkah pertama yang harus kita lakuin adalah membuat sprite. Di sini kita membutuhkan 3 sprite berbeda( Sesuai kreasi kalian) Yaitu X, O, dan Empty.
Buat filenya aku taruh di sini yaaaaaaa
*note:jangan lupa di hapus bg yaaa*
Atau kalau mau kalian juga bisa langsung bikin kok di Scratchnya (Bebas!!)
Setelah selesai download semua spritenya, kalian pilih sprite yang kosong. Buka kode lalu masukkan kode berikut ini:

Setelah selesai masih di sprite yang sama kalian tambahin lagi kode baru, yaitu:

*Note: Untuk bagian yang ada tulisan Cat & Bear itu bisa kalian sesuaikan aja ya sama nama sprite kalian.
╰┈➤Buat ID Cell unik
Setelah papan permainan disiapkan serta Player 1 dan Player 2 sudah bisa dijalankan bergantian, maka langkah selanjutnya adalah bagaimana agar sistem mengecek siapa yang memenangkan permainan tersebut. Seperti yang kita tahu permainan akan dimenangkan oleh Player yang bisa menyusunnya di dalam 1 baris sama, 1 kolom yang sama, atau dalam diagonal yang sama.
Untuk itu bagaimana agar sistem ini dapat mengingatnya dan mengeceknya. Tidak lain dan tidak bukan adalah dengan cara membuat ID Cell yang unik. Kita buat setiap cell memiliki ID. Kita berikan dan tentukan saja ID Cell nya dengan angka 1 sampai 9. Cara membuatnya adalah dengan cara kalian menekan bagian variabel, lalu pencet Make a variable (Buat Variabel) dan ketik IdCell.

Setelah selesai kalian tambahkan beberapa baris kode untuk IdCell nya seperti di bawah ini:

*Note: Kalau bisa pastikan penempatannya dan blok yang di pilih benar ya.
╰┈➤Buat List ID
Selanjutnya, agar sistem kita bisa mengenali, menyimpan data, dan memprosesnya sehingga bisa di cek siapa pemenangnya, maka kita harus bisa memberikan sebuah instruksi agar setiap Player mengklik cell tsb dapat menyimpan datanya. Contoh jika player 1 mengklik ID Cell no. 5, maka akan disimpan dalam memori sementara bahwa ID Cell no. 5 adalah milik player 1 dengan tanda Silang Merah(Sebagai contoh). Begitu pun sebaliknya ketika player 2 mengklik maka akan disimpan datanya dan seterusnya, hingga ada pemenangnya atau hasil akhirnya adalah seri/imbang.
Untuk itu, kita bisa memanfaatkan fitur Make a List pada variable.

Setelah itu masukkan blok kedalam kodingan punya kalian, seperti ini:

╰┈➤Store List ID
Selanjutnya kita akan menugaskan untuk mengisi List tersebut dengan data yang di klik oleh Player. Dan nanti akan terlihat pada list tersebut apa yang diklik oleh player tertentu. Contoh Player 1 dengan tanda silang merah ketika jalan pertama kali memilih ID Cell no. 5, maka list no. 5 pun terisi dengan tanda X, begitupun sebalikan. Bagaimana caranya ? kita tambahkan block puzzle replace item of list with thing dibawah puzzle when this sprite clicked seperti pada contoh gambar berikut;

* Note: Untuk lebih memudahkan pengecekan oleh sistem, kita bisa memanfaatkan block puzzle My Blocks. ini seperti membuat sebuah Function.
╰┈➤Buat sebuah Function
Dengan adanya block My Blocks, kita dapat dengan mudah membuat sebuah function yang nantinya bertugas untuk mengecek kondisi permainan. Dimana jika Player tertentun dapat menyusun Cell dengan kondisi dalam setiap baris yang sama, setiap kolom yang sama maupun secara diagonal, maka dialah pemenangnya.
Caranya adalah:
Isi dari Function tersebut adalah berupa serangkaian kondisi dengan block puzzle IF. sebagai contoh jika kondisi ID Cell 1,2, dan 3 diisi oleh Player 1, maka player 1 lah yang menjadi pemenangnya
Eittssss gak cuman itu, kita juga harus mendifinisikan seluruhnya, agar kondisi ketika berhasil menyamakan dalam setiap baris, setiap kolom, maupun secara diagonal maka dialah pemenangnya. Untuk itu kita tambahkan lagi dengan block puzzle IF yang lain.

( ꩜ ᯅ ꩜;) <-*Reaksi para scratcher*
Itu baru satu player X, bagaimana dengan player O. tentunya sangat panjang jika kita harus membuat kondisi lagi dengan mendefinisikan player O. Oleh karena itu bisa kita optimalkan dengan menggunakan My Block kembali untuk mendefinisikannya. Kita buat kembali My Block dengan nama Check Win, yang berisi block Check Player X dan Check Player O. Seperti gambar berikut:

Setelah kita membuat MyBlock Check Win, selanjutnya kita buat 2 parameter yang di cek, yaitu Player X dan Player O.

Jika sudah mendefinikan Function Check Win, jangan lupa bahwa isi dari function tersebut baru cuma ada player X, yang player O belum ada. untuk itu kita harus rubah menjadi Player dengan memberikan blok Player pada define Check Player hingga seperti ini:

╰┈➤Cek pemenang dengan memanggil sebuah Function
Karena function nya sudah jadi tinggal kita panggil function tersebut untuk mengecek pemenangnya. Caranya adalah :

˚୨୧⋆.˚Buat backdrops˚୨୧⋆.˚
Langkah selanjutnya agar terlihat siapa yang jadi pemenangnya, kita buat dahulu 4 backdrops, yang terdiri dari:
•Backdrop kosong
•Backdrop X win
•Backdrop O win
•Backdrop Draw/seri

╰┈➤Tampilkan pemenang
Pertama diawal kita setting backdrops kosong, kemudian kita definisikan sebuah penerimaan broadcast untuk menampilkan pemenangnya. seperti berikut:

Draw
Untuk membuat hasil akhir seri/draw adalah dengan melihat kondisi dimana setiap Cell ID yang diklik sampai akhir cell ID ke-sembilan belum ada player yang menang, maka hal tersebut terjadi kondisi seri/draw. Dengan begitu kita bisa memanfaatkan sebuah variable counter untuk menghitung Cell yang diklik, bila Cell ID yang di klik mencapai jumlah 9, maka bisa dikatakan permainan tersebut berakhir seimbang/seri/draw.
Pertama buat variable Counter:

Daaaaaaaaaaaaaan akhirnya pun selesai (omg akhirnya). Emang projek kali ini kode yang kita pakai luamayan(sebenernya gak lumayan) panjang. Soalnya disini kita ketambahan fungsi baru seperti IdCell, define my block, list, dan counter. Kayaknya udah ya sekian aja kalo masih ada kekurangan dan kesalahan mohon maaf. Sekian dari Author, bye!!!
Nice, great job Nailah…
Semoga dengan membagikan ilmu pelajaran yang sudah didapatkan kemudian dishare kembali melalui tulisan seperti ini, menambah pemahaman tentang bagaimana sebuah aplikasi/program dibuat. Teruslah menulis dan berkarya, baarakallahufiik… d(>_<)
Teruslah menulis dan berkarya…