79 lines
2.2 KiB
Python
Executable File
79 lines
2.2 KiB
Python
Executable File
#!/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()
|