Advertisement
c0d3dsk1lls

checker CodedSkills.net

Aug 7th, 2022 (edited)
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 16.36 KB | None | 0 0
  1. ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
  2. ##=======================================================================================================================================================================================##
  3. ##----------------------CODEDSKILLS.NET--------------------------------------------------------------------------------------------------------------------------------------------------##
  4. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  5. import pygame as pg      #
  6. from .statics import *   #
  7. from .pieces import *    #
  8. #------------------------#
  9. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  10. #----CHECKER BOARD CREATION ----------------#------------------------------------------+------------------+---------------------------------------+
  11. class checker_board: #----------------------#
  12.     def __init__(self): #-------------------#
  13.         self.board = [] #-------------------#
  14.         self.selected = None  #-------------#
  15.         self.black_l = self.white_l = 12    #
  16.         self.black_k = self.white_k = 0     #
  17.         self.create_board()  #--------------#
  18. #----------------------------#
  19. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  20. #----DESIGN THE BOARD --------------------------#---------------------------------+----------------------------------------+---------------------------------------------+
  21.     def draw_cubes(self, window): #-------------#
  22.         window.fill(blue) #---------------------#
  23.         for row in range(rows): #---------------#
  24.             for col in range(row % 2, cols, 2): #
  25.                 pg.draw.rect( #-----------------#---------------------------------------#
  26.                     window, black, (row * sq_size, col * sq_size, sq_size, sq_size)     #
  27.                 ) #---------------------------------------------------------------------#
  28. #-----------------#
  29. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  30. #------------------------------------------------------------------------#-----------------------------+------------------------------------+
  31.     def move(self, piece, row, col): #-----------------------------------#
  32.         self.board[piece.row][piece.col], self.board[row][col] = (       #
  33.             self.board[row][col], #--------------#-----------------------#
  34.             self.board[piece.row][piece.col],    #
  35.         ) #--------------------------------#-----#
  36.         piece.move(row, col) #-------------#
  37.         if row == rows - 1 or row == 0:    #
  38.             piece.make_king() #------#-----#
  39.             if piece.color == white: #
  40.                 self.white_k += 1 #--#
  41.             else: #------------------#
  42.                 self.black_k += 1    #
  43. #------------------------------------#
  44. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  45.     # TO GET THE PIECE YOU CHOSE --#--------------+-------------------------------------+-----------------------+
  46.     def get_piece(self, row, col): #---#
  47.         return self.board[row][col]    #
  48. #--------------------------------------#
  49. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  50. #---------------------------------------------#-------------------------------+----------------------------------------+------------------------+
  51.     def create_board(self):  #----------------#
  52.         for row in range(rows): #-------------#
  53.             self.board.append([]) #-----------#
  54.             for col in range(cols): #---------#
  55.                 if col % 2 == ((row + 1) % 2):#
  56.                     if row < 3: #-------------#----------------------------#
  57.                         self.board[row].append(pieces(row, col, white))    #
  58.                     elif row > 4: #----------------------------------------#
  59.                         self.board[row].append(pieces(row, col, black))    #
  60.                     else: #--------------------------#---------------------#
  61.                         self.board[row].append(0)    #
  62.                 else: #------------------------#-----#
  63.                     self.board[row].append(0)  #
  64. #----------------------------------------------#
  65. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  66. #------------------------------#-------------------------------------------------+---------------------------------------+----------------------------+
  67.     def draw(self, window):#---#
  68.         self.draw_cubes(window)#
  69.         for row in range(rows):#----#
  70.             for col in range(cols): #-------------#
  71.                 piece = self.board[row][col]      #
  72.                 if piece != 0: #---------#--------#
  73.                     piece.draw(window)   #
  74. #----------------------------------------#
  75. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  76. #----------------------------------------#-------------+------------------------------------+-----------------------------+
  77.     def get_valid_moves(self, piece):    #
  78.         moves = {} #------#--------------#
  79.         l = piece.col - 1 #
  80.         r = piece.col + 1 #
  81.         row = piece.row   #--------------------#
  82.         if piece.color == black or piece.king: #
  83.             moves.update( #--------------------#--------------------------------#
  84.                 self._traverse_l(row - 1, max(row - 3, -1), -1, piece.color, l) #
  85.             ) #-----------#-----------------------------------------------------#
  86.             moves.update( #--------------------------------------------------------------#
  87.                 self._traverse_r(row - 1, max(row - 3, -1), -1, piece.color, r)          #
  88.             ) #--------------------------------#-----------------------------------------#
  89.         if piece.color == white or piece.king: #
  90.             moves.update( #--------------------#------------------------------------#
  91.                 self._traverse_l(row + 1, min(row + 3, rows), 1, piece.color, l)    #
  92.             ) #-----------#-------------------------------------------------------  #
  93.             moves.update( #---------------------------------------------------------#
  94.                 self._traverse_r(row + 1, min(row + 3, rows), 1, piece.color, r)    #
  95.             ) #--------#------------------------------------------------------------#
  96.         return moves   #
  97. #----------------------#
  98. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  99. #-----------------------------#----------------------+----------------------------------+---------------------------+
  100.     def remove(self, pieces): #
  101.         for piece in pieces:  #-----------------------#
  102.             self.board[piece.row][piece.col] = 0      #
  103.             if piece != 0: #----------------#---------#
  104.                 if piece.color == black:    #
  105.                     self.black_l -= 1  #----#
  106.                 else: #----------------#
  107.                     self.white_l -= 1  #
  108. #--------------------------------------#
  109. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  110. #----------------------------#-----------+------------+--------------------+----------------------------------+
  111.     def winner(self): #------#
  112.         if self.black_l <= 0:#
  113.             return white #---#---#
  114.         elif self.white_l <= 0:  #
  115.             return black   #-----#
  116.         return None    #---#
  117. #----------------------#
  118. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  119. #------TRAVERSAL LEFT----------------------------------------------#
  120.     def _traverse_l(self, start, stop, step, color, l, skip=[]):   #
  121.         moves = {} #-----------------------------------------------#
  122.         last = []  #--------------------------#
  123.         for r in range(start, stop, step):    #
  124.             if l < 0: #----------------#------#
  125.                 break #----------------#
  126.             current = self.board[r][l] #
  127.             if current == 0: #---------#
  128.                 if skip and not last:  #
  129.                     break  #-----------#
  130.                 elif skip: #--------------------#
  131.                     moves[(r, l)] = last + skip #
  132.                 else: #------------------#------#
  133.                     moves[(r, l)] = last #
  134.                 if last: #---------#-----#
  135.                     if step == -1: #--------#
  136.                         row = max(r - 3, 0) #
  137.                     else: #---------------------#
  138.                         row = min(r + 3, rows)  #
  139.                     moves.update( #-------------#------------------------------------------#
  140.                         self._traverse_l(r + step, row, step, color, l - 1, skip=last)     #
  141.                     ) #--------------------------------------------------------------------#
  142.                     moves.update( #--------------------------------------------------------#
  143.                         self._traverse_r(r + step, row, step, color, l + 1, skip=last)     #
  144.                     ) #--------------------------------------------------------------------#
  145.                 break #--------------------#
  146.             elif current.color == color:   #
  147.                 break #-------------#------#
  148.             else: #-----------------#
  149.                 last = [current]    #
  150.             l -= 1  #---#-----------#
  151.         return moves    #
  152. #-----------------------#
  153. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  154. #-TRAVERSAL RIGHT----------------------------------------------------------#---------+---------------------------------------+
  155.     def _traverse_r(self, start, stop, step, color, right, skip=[]):       #
  156.         moves = {} #--------------------------#----------------------------#
  157.         last = [] #---------------------------#
  158.         for r in range(start, stop, step): #--#
  159.             if right >= cols: #---------------#
  160.                 break #-----------------------#
  161.             current = self.board[r][right]    #
  162.             if current == 0: #--------#-------#
  163.                 if skip and not last: #
  164.                     break  #----------#---------------#
  165.                 elif skip: #--------------------------#
  166.                     moves[(r, right)] = last + skip   #
  167.                 else: #--------------------------#----#
  168.                     moves[(r, right)] = last #---#
  169.                 if last: #-----------------------#
  170.                     if step == -1: #-------------#
  171.                         row = max(r - 3, 0)      #
  172.                     else: #----------------------#
  173.                         row = min(r + 3, rows)   #
  174.                     moves.update( #-------#------#
  175.                         self._traverse_l( #------------------------------------------#
  176.                             r + step, row, step, color, right - 1, skip=last         #
  177.                         )         #--------------------------------------------------#
  178.                     ) #-----------#-------------------------------------------#
  179.                     moves.update( #-------------------------------------------#
  180.                         self._traverse_r( #-----------------------------------#
  181.                             r + step, row, step, color, right + 1, skip=last  #
  182.                         )   #-------------------------------------------------#
  183.                     ) #-----#
  184.                 break #----------------------#
  185.             elif current.color == color:     #
  186.                 break #----------------------#
  187.             else: #-------------------#
  188.                 last = [current]      #
  189.             right += 1      #---------#
  190.         return moves        #
  191. #---------------------------#
  192. ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
  193. ##=================================================================================================================================================##
  194. ##-------------------------------------------------------------------------------------------------------------------------------------------------##
  195. ##                                                                                                                                                 ##
  196. ##                                                                                        ##   //                                                  ##
  197. ##----+-#########\   ########  -+#######\\-- +##########   #######\\        /#######\\    ##  //     ######---+-##      ##       /#######\\        ##
  198. ##      ##-          ##|--|##    ##-     ##   ##           ##-     ##      ||-----        ## //        ##       ##----+-##      ||-----         +--##
  199. ##      ##           ##|  |##  -+##    +--##  #######      ##       ##  -- \\#######\\    ## \\        ##       ##      ##------\\#######\\-------+##
  200. ##      ##-        +-##|--|##    ##-     ##   ##           ##-     ##         ------||    ##  \\       ##       ##      ##         ------||--------##
  201. ##      #########/   ########  -#######//-  -+##########   #######//       \\######//     ##   \\    ######---+-#####   #####   \\######//------+--##
  202. ##                                                                                                                                                 ##
  203. ##                                                          https://CodedSkills.net                                                                ##
  204. ##-------------------------------------------------------------------------------------------------------------------------------------------------##
  205. ##=================================================================================================================================================##
  206. ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
  207.  
  208.  
  209. ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
  210. ##=======================================================================================================================================================================================##
  211. ##---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------##
  212. ##                                                                                                                                                                                       ##
  213. ##           ###       #######\    #######\       #######       ########     ##  ##     ########     ########       #######     ########       ####        ##         /#######\\         ##
  214. ##          #-##            //          //        \   //    =      ##        ##  ##        ##        ##|--|##       ##  //         ##         //  \\       ##        ||-                 ##
  215. ##            ##          ##\\        ##\\           //            ##        ##  ##        ##        ##|  |##       ###\\          ##        //====\\      ##        \\#######\\         ##
  216. ##            ##            //          //          //             ##        ##  ##        ##        ##|--|##       ##  \\         ##       //      \\     ##                 ||         ##
  217. ##       ##########   ########--  ########--       //       =      ##         ####         ##        ########       ##   \\     ########   //        \\    #######   \\######//          ##
  218. ##                                                                                                                                                                                       ##
  219. ##                                                                         https://1337tutorials.net                                                                                     ##
  220. ##---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------##
  221. ##=======================================================================================================================================================================================##
  222. ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
  223.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement