import matplotlib.pyplot as plt import numpy as np
class ChessBoard:
white = [1,1,1]
blue = [0,0,1]
red = [1,0,0]
queen_red=None
queen_blue=None
x_red=None
y_red=None
x_blue=None
y_blue=None
under_attack=True
def __init__(self):
# Create the board (grid)
self.grid = np.zeros([8,8,3])
# self.grid = np.random.rand(8,8,3)
for i in range(8):
for j in range(8):
if (i%2==0 and j%2==0) or (i%2==1 and j%2==1):
self.grid[i,j] = ChessBoard.white
def render(self):
plt.imshow(self.grid)
def add_red(self,row,col):
self.grid[row,col]=ChessBoard.red
ChessBoard.x_red=row
ChessBoard.y_red=col
ChessBoard.queen_red=[row,col]
self.render()
def add_blue(self,row,col):
self.grid[row,col]=ChessBoard.blue
ChessBoard.x_blue=row
ChessBoard.y_blue=col
ChessBoard.queen_blue=[row,col]
self.render()
def check_if_under_attack(self,x_red,y_red,x_blue,y_blue):
"""
To check if the Queen is Under
attck or Not.
"""
ChessBoard.x_red=x_red
ChessBoard.y_red=y_red
ChessBoard.x_blue=x_blue
ChessBoard.y_blue=y_blue
return self.is_under_attack(x_red,y_red,x_blue,y_blue)
def is_under_attack(self,x_red,y_red,x_blue,y_blue):
"""
This method is to check if a given coordinates of a blue and red queen will attack each other
"""
x_subtraction=abs(ChessBoard.x_red-ChessBoard.x_blue)
y_subtraction=abs(ChessBoard.y_red-ChessBoard.y_blue)
if ChessBoard.x_red==ChessBoard.x_blue:
ChessBoard.under_attack=True
return ChessBoard.under_attack
elif ChessBoard.y_red==ChessBoard.y_blue:
ChessBoard.under_attack=True
return ChessBoard.under_attack
elif x_subtraction==y_subtraction:
ChessBoard.under_attack=True
return ChessBoard.under_attack
else:
ChessBoard.under_attack = False
return ChessBoard.under_attack
chess=ChessBoard() chess.render() chess.add_red(4,7) chess.add_blue(3,7) assert chess.check_if_under_attack(3,5,4,6) == True #Diagonal check assert chess.check_if_under_attack(4,5,4,6) == True #Horizontal check assert chess.check_if_under_attack(3,6,4,6) == True # Vertical check assert chess.check_if_under_attack(0,0,2,6) == False #Not Under Attack
print('All tests passed!!!!!!') All tests passed!!!!!!