Anda di halaman 1dari 9

Analisa Game Klasik Chess

menggunakan C++
Tugas (Workshop) Teknik Implementasi Game | Dosen Pengampu : Halimatus Sadyah
S.Kom, M.Kom

Oleh : Yayang Rahmadina (4210161001)

1. Deskripsi Aturan Main

Permainan catur adalah permainan yang dimaikan 2 pemain yang masing-


masing mempunyai objek berupa 16 bidak. Dan bidak-bidak catur mempunyai
peran, daerah dan aturan jalan masing-masing.

Misalnya, di potongan koding berikut menjelaskan bahwa bidak-bidak catur mempunyai


posisi khusus masing-masing.

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

Disaat giliran kita menjalankan bidak, kita bisa mengambil/mencuri bidak


lawan. Karena VictoryCondition permainan catur adalah ketika raja
berhasil dikepung oleh bidak-bidak lawan.

Kodingan win condition


Pergerakan Bidak Catur
King : Raja hanya dapat bergerak satu petak ke segala arah - naik, turun, ke
samping, dan secara diagonal.
Queen : Ia bisa bergerak secara horizontal, vertikal, maupun diagonal
sejauh mungkin dan menyerah dari arah tersebut pula/ namun tetap
logis.

Bishop/ Gajah : hanya bisa bergerak secara vertikal, namun bisa


bergerak sejauh mungkin hingga menyerang.

Kuda : bergerak dengan bentuk L yang terdiri dari dua kotak


horizontal lalu satu kotak vertikal, atau satu kotak horizontal dan dua
kotak vertikal, ke arah manapun.

Benteng : bergerak secara horizontal dan vertikal sejauh mungkin. Ia


bisa menyerang buah yang berada di jalurnya.
Pion : Bergerak ke depan satu atau dua kotak, namun hanya boleh
maju satu kotak setelah itu. Pion hanya boleh menyerang bagian lain
satu kotak secara diagonal darinya, dan tidak bergerak mundur. Kecuali
pada langkah pertama yang dapat melangkah ke depan dua petak.

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.

2. Input yang digunakan

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.

int board[8][8]; //deklarasi untuk membuat papan catur

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;

5. Fungsi untuk menyusun Game ini

Library

#include "iostream" = standar input output

#include "fstream" = program bisa membaca isi file sekaligus memberikan


output ke dalam file tersebut. Contoh yang paling dekat adalah penulisan
pada file teks yang biasanya berformat (.txt).

#include "string"

#include "vector" = untuk menyediakan wadah template kelas std:: vector


sebuah array dinamis.

#include "math.h" = library untuk menyediakan fungsi perhitungan


matematika

#include "cstdlib"

#include "sstream"

using namespace std;

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

Berisi fungsi-fungsi pendukung seperti displayGameInformation();


reset(); displayBoard();. Dan terdapat looping while yang gunanya
ketika pergantian menggerakkan bidak, ketika masih bermain status
berkondisi 1, maka permainan masih berjalan sampai kondisi salah
adalah 0 maka terjadi permainan berakhir atau bermain ulang.
Fungsi Bergerak
Dalam matematika, Sistem koordinat kartesius digunakan untuk
mementukan tiap tiap dalam bidang menggunakan dua bilangan yang
biasa disebut koordinat x (absis) dan koordinat y (ordinat) dari titik
tersebut. Perhitungan matematika inilah yang digunakan pada catur
sehingga perlu library math.h.
Setiap petak dipapan catur sekarang mempunyai nama sendiri, dimulai
dengan kolom terlebih dahulu barulah angka baris, sebagai contohnya
yang biasa dipakai yaitu kolom e dan baris ke 4, jadi dapat kita tulis e4.

Anda mungkin juga menyukai