#!/bin/python3 from os import system from dataclasses import dataclass from board import Board from piece import Piece @dataclass class Player: name: str color: str class Chess: def __init__(self, players): self.players = players self.board = Board() def win(self, player): if player.color == 'white': print(''' ░█░█░█░█░▀█▀░▀█▀░█▀▀░░░█░█░▀█▀░█▀█ ░█▄█░█▀█░░█░░░█░░█▀▀░░░█▄█░░█░░█░█ ░▀░▀░▀░▀░▀▀▀░░▀░░▀▀▀░░░▀░▀░▀▀▀░▀░▀ ''') else: print(''' ░█▀▄░█░░░█▀█░█▀▀░█░█░░░█░█░▀█▀░█▀█ ░█▀▄░█░░░█▀█░█░░░█▀▄░░░█▄█░░█░░█░█ ░▀▀░░▀▀▀░▀░▀░▀▀▀░▀░▀░░░▀░▀░▀▀▀░▀░▀ ''') exit(0) def tie(self): print(''' ░█▀▀░▀█▀░█▀█░█░░░█▀▀░█▄█░█▀█░▀█▀░█▀▀ ░▀▀█░░█░░█▀█░█░░░█▀▀░█░█░█▀█░░█░░█▀▀ ░▀▀▀░░▀░░▀░▀░▀▀▀░▀▀▀░▀░▀░▀░▀░░▀░░▀▀▀ ''') exit(0) def makeMove(self, player): chosenTile = 0, 0 while True: piece = self.board.selectPiece(player, *chosenTile) chosenTile = piece possibleMoves = Piece.possibleMoves(*piece, self.board) if move := self.board.selectMove(player, *piece, possibleMoves): break self.board.movePiece(piece, move) def turn(self, playerNum): system('clear') self.makeMove(players[playerNum]) # 1 - 1 = 0 and 1 - 0 = 1 if self.board.checkCheckMate(players[1 - playerNum].color): self.win(players[playerNum]) elif self.board.checkStaleMate(players[1 - playerNum].color): self.tie() def loop(self): while True: self.turn(0) self.turn(1) if __name__ == "__main__": players = ( Player('Spiller 1', 'white'), Player('Spiller 2', 'black'), ) game = Chess(('Spiller 1', 'Spiller 2')) game.loop()