2026. június 12., péntek

Stockfish automata sakk

A kód létrehoz egy sakkjátszmát, amelyben a gép (Stockfish) véletlenszerűen vagy a motor logikája szerint lép.A sakk automatizálásához (például lépések elemzéséhez, tábla leolvasásához vagy motorok vezérléséhez) a Python tökéletes választás. Az alábbi alapvető példa egy terminálban futtatható sakk-készletet és a népszerű Stockfish sakkmotorral való kommunikációt mutatja be a python-chess könyvtár segítségével 
-------------------
import chess
import random

def jatek_inditasa():
    # Új sakkjátszma indítása
    tabla = chess.Board()
    print("Sakkjátszma elindult!")
    print(tabla)
    print("-" * 20)

    # Játék ciklus
    while not tabla.is_game_over():
        if tabla.turn: # Fehér játékos (a felhasználó) lépése
            print(f"Elérhető lépések: {[tabla.san(lep) for lep in tabla.legal_moves]}")
            lep_szoveg = input("Add meg a lépésed (pl. e2e4): ")
            
            try:
                lep = chess.Move.from_uci(lep_szoveg)
                if lep in tabla.legal_moves:
                    tabla.push(lep)
                else:
                    print("Érvénytelen lépés! Próbáld újra.")
                    continue
            except:
                print("Hibás formátum!")
                continue
        
        else: # Fekete játékos (a gép) lépése
            # Itt lehet Stockfish motort is használni a "random.choice" helyett
            lehetseges_lepesek = list(tabla.legal_moves)
            if lehetseges_lepesek:
                gep_lepese = random.choice(lehetseges_lepesek)
                print(f"Gép lépése: {tabla.san(gep_lepese)}")
                tabla.push(gep_lepese)
        
        print("-" * 20)
        print(tabla)
        print("-" * 20)

    print("A játéknak vége!")
    print(f"Eredmény: {tabla.outcome()}")

if __name__ == "__main__":
    jatek_inditasa()
-------------------
Sakkjátszma elindult!
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R N B Q K B N R
--------------------
Elérhető lépések: ['Nh3', 'Nf3', 'Nc3', 'Na3', 'h3', 'g3', 'f3', 'e3', 'd3',
 'c3', 'b3', 'a3', 'h4', 'g4', 'f4', 'e4', 'd4', 'c4', 'b4', 'a4']
Add meg a lépésed (pl. e2e4): 
KeyboardInterrupt: Execution stopped by user.
** Process exited - Return Code: 130 **
-------------------


Nincsenek megjegyzések:

Megjegyzés küldése