def __init__(self, owner_id, location): self.owner_id = owner_id self.location = location self.health = 3 self.configuration = 0 self.new_cmd = NewSeed() self.new_cmd.location = location self.new_cmd.owner = owner_id self.new_cmd = self.new_cmd.encode_self() self.destr_cmd = SeedDestroyed() self.destr_cmd.location = location self.destr_cmd = self.destr_cmd.encode_self() self.pento = [0, -1, 1, -1, -1, 0, 0, 0, 0, 1] self.glider = [1, -1, -1, 0, 1, 0, 0, 1, 1, 1] self.s_counter = 2
def deploy_bomb(self, at_location): # pass cell = self._board[at_location] for i in range(-1, 2): for j in range(-1, 2): if i == 0 and j == 0: continue target_x = cell.t_x + i target_y = cell.t_y + j if target_x < 0: target_x = self._size_x-1 if target_x >= self._size_x: target_x = 0 if target_y < 0: target_y = self._size_y-1 if target_y >= self._size_y: target_y = 0 n = self.temp[target_x][target_y] self._board[n.idx].reset() for u_id in self._users: u = self._users[u_id] for s in u.seeds: if s.location == at_location: s.damage(1) if s.is_dead(): u.remove_seed(at_location) d = SeedDestroyed() d.location = at_location self.broadcast(d.encode_self()) break
class Seed(): def __init__(self, owner_id, location): self.owner_id = owner_id self.location = location self.health = 3 self.configuration = 0 self.new_cmd = NewSeed() self.new_cmd.location = location self.new_cmd.owner = owner_id self.new_cmd = self.new_cmd.encode_self() self.destr_cmd = SeedDestroyed() self.destr_cmd.location = location self.destr_cmd = self.destr_cmd.encode_self() self.pento = [0, -1, 1, -1, -1, 0, 0, 0, 0, 1] self.glider = [1, -1, -1, 0, 1, 0, 0, 1, 1, 1] self.s_counter = 2 def set_config(self, new_config): pass def damage(self, amount): self.health -= amount def is_dead(self): return self.health <= 0 def can_spawn(self): if self.s_counter == 0: self.s_counter = 5 return True self.s_counter -= 1 def spawn(self, board, maxX): mycell = board[self.location] iteratefrom = self.pento if randint(0, 1) == 0 else self.glider for i in range(0, len(iteratefrom), 2): coord = (iteratefrom[i+1] + mycell.t_y) * maxX + iteratefrom[i] + mycell.t_x board[coord].reset() board[coord].user_id = self.owner_id # glider = new int[10]; # glider[0] = 2; glider[1] = 0; # glider[2] = 0; glider[3] = 1; # glider[4] = 2; glider[5] = 1; # glider[6] = 1; glider[7] = 2; # glider[8] = 2; glider[9] = 2; # glider = new int[10]; # glider[0] = 2; glider[1] = 0; # glider[2] = 0; glider[3] = 1; # glider[4] = 2; glider[5] = 1; # glider[6] = 1; glider[7] = 2; # glider[8] = 2; glider[9] = 2;