12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- from math import ceil
- from random import randrange
- from simulation.board import Board
- class Player:
- def __init__(self, board, blob):
- """
- :type blob: Blob_Manager
- :type board: Board
- """
- self.board = board
- self.blob = blob
- self.clean_top = True
- def save(self):
- return format(self.clean_top, 'd')
- def load(self, filename):
- with open(filename, 'r') as file:
- self.clean_top = file.readline() == '1'
- def set_random_food(self, qt, random_top=None):
- if random_top is None: # Randomize over all the board
- y_offset = 0
- y_range = self.board.height
- if random_top: # Randomize over the half top board
- y_offset = 0
- y_range = ceil(self.board.height / 2)
- elif not random_top: # Randomize over the half bottom board
- y_offset = int(self.board.height / 2)
- y_range = ceil(self.board.height / 2)
- foods = 0
- while foods < qt:
- x = randrange(self.board.width)
- y = y_offset + randrange(y_range)
- if not self.board.has_food(x, y):
- if self.set_food(x, y):
- foods += 1
- def set_food(self, x, y, size=1):
- food_put = False
- for x_size in range(size):
- for y_size in range(size):
- if 0 <= x + x_size < self.board.width and 0 <= y + y_size < self.board.height:
- if not self.board.board_array[x + x_size, y + y_size].touched:
- self.board.board_array[x + x_size, y + y_size].food = True
- food_put = True
- if not food_put:
- print("There is blob there !")
- return False
- return True
- def check_blob_size(self):
- size = 0
- for x in range(self.board.width):
- for y in range(self.board.height):
- if self.board.board_array[x, y].touched:
- size += 1
- return size/(self.board.width * self.board.height) * 100
- def clean_board(self):
- y_range = ceil(self.board.height/2)
- if self.clean_top:
- y_offset = 0
- else:
- y_offset = int(self.board.height/2)
- for x in range(self.board.width):
- for y in range(y_range):
- self.board.reset(x, y_offset + y)
- self.blob.reset(x, y_offset + y)
- self.clean_top = not self.clean_top
|