Proyek ini adalah sebuah aplikasi catur otomatis berbasis GUI menggunakan Tkinter yang mengintegrasikan engine Stockfish dan PyAutoGUI. Chess Bot ini memungkinkan pengguna untuk bermain catur dengan bantuan AI, memulai permainan dari posisi FEN yang ditentukan, dan menerima langkah terbaik dari Stockfish untuk kedua pemain secara otomatis.
Proyek ini terdiri dari tiga script utama:
catur.py
: Skrip utama untuk menjalankan dan mengontrol interaksi dengan engine Stockfish, serta mengelola alur permainan catur di GUI.click.py
: Skrip yang digunakan untuk berinteraksi dengan layar menggunakan PyAutoGUI untuk mensimulasikan klik dan pergerakan otomatis berdasarkan koordinat papan catur.grid.py
: Skrip ini menyediakan pengaturan untuk grid papan catur dan konversi notasi catur ke koordinat yang digunakan oleh PyAutoGUI.
Sebelum menjalankan proyek ini, pastikan Anda memiliki persyaratan berikut:
- Python 3.x (direkomendasikan versi 3.6 ke atas)
- Stockfish: Engine catur Stockfish diunduh dan dikonfigurasi.
- PyAutoGUI: Untuk kontrol otomatis klik pada layar.
- Tkinter: Digunakan untuk membuat GUI aplikasi.
- Chess: Modul Python untuk menangani aturan catur.
-
Install dependensi yang diperlukan:
pip install pyautogui chess
-
Stockfish:
- Unduh Stockfish dari situs resmi Stockfish.
- Ekstrak dan simpan file eksekutabel Stockfish pada lokasi yang sesuai di sistem Anda.
- Jalankan
catur.py
untuk memulai aplikasi GUI catur. - Pilih posisi awal FEN (format posisi catur standar) dan klik "Mulai dari FEN".
- Skript akan automatisasi analisis siapakah yang jalan, dan menganalisis best move untuk kamu
- Skrip akan membuat file
fen.txt
danbest.txt
- Happy Playing!
- Tujuan: Skrip ini mengelola interaksi dengan engine Stockfish, membaca input dari pengguna, dan memperbarui status papan catur pada GUI.
- Fungsi Utama:
StockfishProcess
: Kelas untuk mengelola proses Stockfish, mengirim perintah, dan menerima hasil analisis untuk mendapatkan langkah terbaik.start_from_fen()
: Fungsi untuk memulai permainan dari posisi FEN yang diberikan oleh pengguna.add_white_move()
: Fungsi untuk menangani langkah pemain putih dan menganalisis langkah terbaik dari pemain hitam.update_fen_display()
: Memperbarui tampilan FEN pada GUI.
- GUI: Menggunakan Tkinter untuk menangani input langkah, menampilkan FEN saat ini, dan output analisis.
- Tujuan: Skrip ini menggunakan PyAutoGUI untuk mengontrol klik pada papan catur berdasarkan koordinat.
- Fungsi Utama:
get_turn_from_fen()
: Fungsi untuk membaca filefen.txt
dan menentukan giliran pemain (Putih atau Hitam) berdasarkan FEN yang ada.- Konfigurasi Grid: Menyusun koordinat dan ukuran grid papan catur untuk menghubungkan notasi catur dengan posisi di layar.
- Tujuan: Menyediakan pengaturan koordinat dan konversi dari notasi catur (seperti 'e2' atau 'g1') ke koordinat layar yang digunakan oleh PyAutoGUI untuk klik otomatis.
- Fungsi Utama:
- Mapping Notasi: Memetakan kolom papan catur (a-h) ke angka (1-8) dan sebaliknya.
- Menghitung ukuran sel: Menghitung ukuran setiap sel pada papan berdasarkan ukuran layar yang ditentukan.
- GUI Interaktif: Pengguna dapat memasukkan posisi FEN dan mendapatkan langkah terbaik dari Stockfish.
- Pengenalan Giliran: Secara otomatis mendeteksi giliran putih atau hitam berdasarkan FEN.
- Langkah Otomatis: Setelah langkah pemain putih dimasukkan, AI akan memberikan langkah terbaik.
- Simpan dan Baca FEN: FEN dapat disimpan dan dibaca dari file untuk melanjutkan permainan.
- Pastikan untuk menyesuaikan path Stockfish pada variabel
stockfish_path
dicatur.py
. fen.txt
digunakan untuk menyimpan FEN terakhir yang dimasukkan, danbest.txt
untuk menyimpan langkah terbaik yang dipilih oleh Stockfish.
- Stockfish Tidak Menanggapi: Pastikan bahwa path ke Stockfish benar dan Stockfish dijalankan tanpa kesalahan.
- Koordinat Klik Tidak Akurat: Jika Anda mengalami masalah dengan koordinat klik yang tidak sesuai, pastikan layar Anda memiliki resolusi yang sesuai dan sesuaikan nilai pada
GRID_START_X
,GRID_START_Y
,GRID_END_X
, danGRID_END_Y
diclick.py
.
Jika Anda ingin berkontribusi pada proyek ini:
- Fork repositori ini.
- Buat perubahan yang Anda inginkan.
- Kirim pull request dengan deskripsi perubahan yang dilakukan.