TDT4109/Exercise 10/chess/chess.py

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()