Advertisement
tokyoedtech

chess.py

Aug 13th, 2020
1,936
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.48 KB | None | 0 0
  1. # Starter Chess Program by @TokyoEdTech
  2. # Work in Progress
  3.  
  4. import os
  5. import platform
  6. import time
  7.  
  8. def clear_screen():
  9.     if platform.system() == "Windows":
  10.         os.system("cls")
  11.     else:
  12.         os.system("clear")
  13.        
  14. def print_header():
  15.     print("     Simple Chess by @TokyoEdTech")
  16.     print("           Sample Move: a3 a5\n")
  17.        
  18. class Board():
  19.     def __init__(self):
  20.         self.board = []
  21.         self.board.append(["r", "k", "b", "q", "k", "b", "k", "r"])
  22.         self.board.append(["p", "p", "p", "p", "p", "p", "p", "p"])
  23.         for row in range(4):
  24.             self.board.append([" ", " ", " ", " ", " ", " ", " ", " "])
  25.         self.board.append(["P", "P", "P", "P", "P", "P", "P", "P"])
  26.         self.board.append(["R", "K", "B", "Q", "K", "B", "K", "R"])
  27.  
  28.     def move_piece(self, move):
  29.        
  30.         # Strip extra spaces at start and end
  31.         move = move.strip()
  32.        
  33.         # Make sure length is 5
  34.         if len(move) != 5:
  35.             return False
  36.        
  37.         # Make sure middle is a space
  38.         if move[2] != " ":
  39.             return False
  40.        
  41.         try:
  42.             start_col = move[0]
  43.             start_col = self.convert_col_to_number(start_col) - 1
  44.             start_row = 8 - int(move[1])
  45.             end_col = move[3]
  46.             end_col = self.convert_col_to_number(end_col) - 1
  47.             end_row = 8 - int(move[4])
  48.            
  49.             # Check for legal move
  50.             print(self.get_legal_moves(start_row, start_col))
  51.            
  52.             self.board[end_row][end_col] = self.board[start_row][start_col]
  53.             self.board[start_row][start_col] = " "
  54.            
  55.             return True
  56.            
  57.         except:
  58.             return False
  59.  
  60.     def show_board(self):
  61.         print("    A   B   C   D   E   F   G   H")
  62.         print("  ---------------------------------")
  63.         row_number = 8
  64.         for row in self.board:
  65.             print(str(row_number) + " | ", end="")
  66.             for i in range(len(row)):
  67.                 print(row[i] + " | ", end="")
  68.             print(str(row_number))
  69.             print("  ---------------------------------")
  70.             row_number -= 1
  71.         print("    A   B   C   D   E   F   G   H")
  72.  
  73.     def convert_col_to_number(self, col):
  74.         col = col.upper()
  75.         if col == "A":
  76.             return 1
  77.         if col == "B":
  78.             return 2
  79.         if col == "C":
  80.             return 3
  81.         if col == "D":
  82.             return 4
  83.         if col == "E":
  84.             return 5
  85.         if col == "F":
  86.             return 6
  87.         if col == "G":
  88.             return 7
  89.         if col == "H":
  90.             return 8
  91.            
  92.     def calculate_board(self):
  93.         values = {"P":1, "p":1, "R":3, "r":3, "K":5, "k":5, "B":7, "b":7, "Q":14, "q":14, "K":50, "k":50}
  94.         white_total = 0
  95.         black_total = 0
  96.         for row in self.board:
  97.             for piece in row:
  98.                 if piece in ["P", "R", "K", "B", "Q", "K"]:
  99.                     white_total += values[piece]
  100.                 elif piece in ["p", "r", "k", "b", "q", "k"]:
  101.                     black_total += values[piece]
  102.        
  103.         return (white_total, black_total)
  104.                
  105.     def get_legal_moves(self, row, col):
  106.         moves = []
  107.        
  108.         piece = self.board[row][col]
  109.        
  110.         # Pawns
  111.         if piece == "p":
  112.             if row == 6:
  113.                 moves.append((row-2, col))
  114.             moves.append((row-1, col))
  115.         elif piece == "P":
  116.             if row == 1:
  117.                 moves.append((row+2, col))
  118.             moves.append((row+1, col))
  119.        
  120.         # Return moves    
  121.         return moves
  122.            
  123. clear_screen()
  124. print_header()
  125.  
  126. board = Board()
  127. board.show_board()
  128.  
  129. game_on = True
  130.  
  131. while game_on:
  132.     # Get White Move
  133.     legal = False
  134.     while not legal:
  135.         move = input("\nWHITE MOVE: ")
  136.         legal = board.move_piece(move)
  137.         if not legal:
  138.             print("ILLEGAL MOVE")
  139.             time.sleep(1)
  140.  
  141.         clear_screen()
  142.         print_header()
  143.         board.show_board()
  144.    
  145.     legal = False
  146.     while not legal:
  147.         move = input("BLACK MOVE: ")
  148.         legal = board.move_piece(move)
  149.         if not legal:
  150.             print("ILLEGAL MOVE")
  151.             time.sleep(1)
  152.    
  153.         clear_screen()
  154.         print_header()
  155.         board.show_board()
  156.  
  157.     values = board.calculate_board()
  158.     print("WHITE: {}  BLACK: {}".format(values[0], values[1]))
  159.    
  160.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement