2024. október 17., csütörtök

Sakk pythonban

Neve; python chess.py

Forrás1;

class Piece:
    def __init__(self, color):
        self.color = color

class Pawn(Piece):
    def valid_moves(self, position):
        # Itt egyszerűsítjük a bábuk mozgását
        direction = 1 if self.color == "white" else -1
        return [(position[0] + direction, position[1])]

class Rook(Piece):
    def valid_moves(self, position):
        return [(position[0] + i, position[1]) for i in range(-7, 8) if i != 0] + \
               [(position[0], position[1] + i) for i in range(-7, 8) if i != 0]

class Board:
    def __init__(self):
        self.board = self.initialize_board()

    def initialize_board(self):
        board = [[None for _ in range(8)] for _ in range(8)]
        # Helyezzük el a bábukat (csak példaként az első sorban)
        board[0][0] = Rook("white")
        board[0][1] = Pawn("white")
        # További bábuk elhelyezése...
        return board

    def display(self):
        for row in self.board:
            row_display = []
            for piece in row:
                if piece is None:
                    row_display.append(".")
                else:
                    row_display.append("P" if isinstance(piece, Pawn) else "R")
            print(" ".join(row_display))

def main():
    board = Board()
    board.display()

    while True:
        move = input("Add meg a bábú mozgását (formátum: 'x y'): ")
        x, y = map(int, move.split())
        # Itt a bábuk mozgatásának logikáját implementálhatjuk
        # Ellenőrizzük, hogy a mozgás érvényes-e, stb.

if __name__ == "__main__":
    main()

vagy grafikusan

Készíthetünk egy alapvető grafikus sakkprogramot Python-ban a Pygame könyvtár segítségével. A program tartalmazza a sakktábla kirajzolását, a bábuk kezdeti elhelyezését, valamint a bábuk mozgatásának alapvető logikáját. Itt egy egyszerű példa:

Először is, győződj meg róla, hogy a Pygame telepítve van. 
Ezt a következő paranccsal teheted meg: pip install pygame


Forrás2;

import pygame
import sys

# Alap konfigurációk
WIDTH, HEIGHT = 800, 800
SQUARE_SIZE = HEIGHT // 8
FPS = 60

# Színek
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

# Bábuk
PIECES = {
    'b': '♟', 'w': '♙',
    'r': '♖', 'n': '♘', 'b': '♗', 'q': '♕', 'k': '♔',
}

# Sakktábla inicializálása
class Chessboard:
    def __init__(self):
        self.board = self.create_board()

    def create_board(self):
        # 8x8-as tábla létrehozása
        board = [['' for _ in range(8)] for _ in range(8)]
        # A bábuk elhelyezése
        board[0] = ['r', 'n', 'b', 'q', 'k', 'b', 'n', 'r']
        board[1] = ['p'] * 8
        board[6] = ['P'] * 8
        board[7] = ['R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R']
        return board

    def draw(self, screen):
        for y in range(8):
            for x in range(8):
                color = WHITE if (x + y) % 2 == 0 else BLACK
                pygame.draw.rect(screen, color, (x * SQUARE_SIZE, y * SQUARE_SIZE, SQUARE_SIZE, SQUARE_SIZE))

                piece = self.board[y][x]
                if piece:
                    font = pygame.font.Font(None, 74)
                    text = font.render(PIECES[piece.lower()], True, WHITE if piece.isupper() else BLACK)
                    screen.blit(text, (x * SQUARE_SIZE + 15, y * SQUARE_SIZE + 5))

# Főfuggetlen program
def main():
    pygame.init()
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption('Sakk')
    clock = pygame.time.Clock()

    chessboard = Chessboard()

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

        screen.fill(BLACK)
        chessboard.draw(screen)
        pygame.display.flip()
        clock.tick(FPS)

if __name__ == '__main__':
    main()

Hogyan fut le;
Könyvtárak: A program importálja a pygame és sys könyvtárakat.
Beállítások: A sakktábla méretét, a négyzetek méretét és a frames per second (FPS) beállítást definiáltuk.
Színek: Definiáltuk a fekete és fehér szín értékeit.
Bábuk: A bábukat Unicode karakterek segítségével reprezentáljuk.
Sakktábla osztály: Az osztály létrehozza a sakktáblát, elhelyezi a bábukat, és rajzolja a táblát.
Fő program: Inicializálja a Pygame könyvtárat, létrehozza a sakktáblát, és megkezdi az eseménykezelést és a frissítést.
Futtatás
A fenti kódot egy .py kiterjesztésű fájlba (pl. chess.py) másolva, majd a terminálban futtatva indíthatod a sakkprogramot:

 


Nincsenek megjegyzések:

Megjegyzés küldése