menggunakan C++
Tugas (Workshop) Teknik Implementasi Game | Dosen Pengampu : Halimatus Sadyah
S.Kom, M.Kom
Permainan catur dimainkan oleh pemain putih terlebih dahulu, maju satu
kali main lalu bergantian ke pemain hitam
Kodingan berikut menjelaskan pergantian pemain catur. CurrentPlayerColor
adalah white
Win/Victory Condition
- jika raja diskak dan tidak dapat keluar dari posisi skak. Hanya ada tidak
cara bagi raja untuk keluar dari posisi skak: keluar dari petak skak
(meskipun dia tidak bisa rokade!), memblokir skak dengan buah lain,
atau memukul buah yang mengancam raja. Jika raja tidak dapat keluar
dari skakmat, permainan selesai.
- Kadang-kadang, permainan catur tidak berakhir dengan kemenangan
seorang pemain, tetapi dengan remis (seri). Ada 5 alasan mengapa
permainan catur dapat berakhir remis:
Posisi mencapai jalan buntu jika pada saat giliran seorang
pemain melangkah, rajanya tidak sedang diskak tetapi tidak dapat
melakukan langkah yang sah
Pemain bisa menyetujui remis dan berhenti bermain
Perwira di papan tidak cukup untuk memaksakan skakmat
(contoh: raja-gajah melawan raja)
Permainan dinyatakan remis jika ada posisi yang tepat sama
diulang tiga kali (meskipun tidak harus berturut-turut)
Lima puluh langkah beruntun telah dimainkan dan kedua
pemain sama-sama tidak menggerakkan pion atau memukul bidak
Aturan Khusus :
- Bidak mempunyai kemampuan khusus, yaitu jika mencapai sisi papan
satunya, bidak dapat menjadi buah catur lainnya (disebut promosi). Bidak
dapat dipromosikan menjadi buah apa pun.
- En-Passant: Jika sebuah bidak bergerak dua petak pada langkah
pertamanya, dan dengan melakukannya mendarat di sebelah bidak
lawan (secara efektif menghindar dari kemungkinan bidak lawan
tersebut untuk memukulnya), bidak lawan tersebut memiliki opsi untuk
memukulnya. Langkah khusus ini harus dilakukan segera setelah bidak
yang pertama tadi bergerak. Jika tidak, opsi untuk memukul tersebut
hilang.
- Rokade: Langkah ini memungkinkan Anda melakukan dua hal penting
dalam satu langkah: mengamankan raja dan mengeluarkan benteng
dari sudut ke dalam permainan.
Input game ini menggunakan keyboard, yang mana papan catur terdiri dari
kolom yang di identitaskan dengan huruf dan barisnya di identitaskan dengan
angka, untuk mengerakkan pion/bidak catur kita menunjuk pada pion yang
dituju, dimana koordinat pion itu berada kemudian kita input kan koordinat yang
dituju, semisal pion berada di koordinat a7 menuju ke a6, maka untuk
memindahkannya kita menginputkan : a2>a3
Jika kita salah menginputkan perintah bergerak, maka bidak tidak akan berjalan/
mengalami kondisi illegal move.
3. Display
Display game catur memuat 64 petak yang disusun menggunakan array 2 dimensi dan
looping yang dikemas dalam function display tersendiri, dan dibantu dengan beberapa
library tambahan seperti vector fungsinya untuk menyediakan wadah template kelas
std:: vector sebuah array dinamis.
4. Penyimpanan Data
Menurut saya, data yang disimpan disini adalah objek catur itu sendiri (bidak-bidak),
karena permainan chess tidak mengembalikan nilai/skor. Bidak-bidak catur datanya
disimpan pada array 2 dimensi dan variable, karena bidak-bidak catur mempunyai
daerah masing-masing. Misalnya petak paling ujung ditempati oleh benteng, maka
koordinat caturnya di array [0][0]
// Normal board setup
board[0][0]=rock;
board[0][1]=knight;
board[0][2]=bishop;
board[0][3]=queen;
board[0][4]=king;
board[0][5]=bishop;
board[0][6]=knight;
board[0][7]=rock;
board[1][0]=pawn;
Library
#include "string"
#include "cstdlib"
#include "sstream"
using std::vector;
Inisialisasi
Pada bagian inisialisasi, terdapat sintaks untuk inisialisasi board nya
yang berupa array 2 dimensi, deklarasi dan inisialisasi masing masing
bidak, status game (apakah game masih berjalan atau sudah
winCondition), current_player (giliran pemain putih atau permain
hitam), turn_counter (permainan ini sudah berapa kali giliran),
Fungsi Utama