docs: def check_win_by_step(self, x, y, user, line_number=None):
          '''Check winners by current step'''
          if not line_number:
              line_number = self.win
          for ang in self.angle:
              self.win_list = [(x, y)]
              angs = [ang, ang + math.pi]
              line_num = 1
              radius = 1
              direction = [1, 1]
              while True:
                  if line_num == line_number:
                      return True
                  if direction == [0, 0]:
                      break
                  for ind, a in enumerate(angs):
                      target_x = int(x + radius*(sign(math.cos(a)))) if direction[ind] else -1
                      target_y = int(y - radius*(sign(math.sin(a)))) if direction[ind] else -1
                      if target_x < 0 or target_y < 0 or target_x > self.board_size - 1 or target_y > self.board_size - 1:
                          direction[ind] = 0
                      elif self.pos[target_x][target_y] == user:
                          self.win_list.append((target_x, target_y))
                          line_num += 1
                      else:
                          direction[ind] = 0
                  else:
                      radius += 1
          else:
              return (x, y)