예제 #1
0
    def __init__(self, data=None, name=None, kind=None, element=None):
        self.val = 0
        self.free_spaces = 8
        self.name = name
        UserList.__init__(self)
        if data == None:
            # The code below creates 4 units of element with a comp
            # of (4,2,2,0). Each unit is equiped with a unique weapon.
            if kind == 'mins':
                if element != None:
                    s = Stone()
                    s[element] = 4
                    s[OPP[element]] = 0
                    for o in ORTH[element]:
                        s[o] = 2
                    for wep in WEP_LIST:
                        scient = Scient(element, s)
                        scient.equip(eval(wep)(element, Stone()))
                        scient.name = "Ms. " + wep
                        self.append(scient)
                else:
                    raise ("Kind requires element from %s." % ELEMENTS)
                if self.name == None:
                    self.name = element + " " + 'mins'
            return

        if isinstance(data, list):
            for x in data:
                self.append(x)
        else:
            self.append(data)
예제 #2
0
    def init_levels(self):
        level1 = Level()
        self.generate_ground(level1)
        for i in range(2, 8):
            level1.blocks.add(
                Crate((1200, self.window_height - 102 * i), (0, 0), 100, 100,
                      "crate"))
        level1.blocks.add(
            Stone((1500, self.window_height - 310), (0, 0), 200, 200, "stone"))
        level1.enemies.add(
            Sheep((1500, self.window_height - 400), (0, 0), 100, 100, "sheep"))

        level2 = Level()
        self.generate_ground(level2)
        level2.blocks.add(
            Crate((1200, self.window_height - 200), (0, 0), 100, 100, "crate"))
        level2.blocks.add(
            Stone((1300, self.window_height - 200), (0, 0), 100, 100, "stone"))
        level2.blocks.add(
            Ice((1400, self.window_height - 200), (0, 0), 100, 100, "Ice"))
        level2.enemies.add(
            Sheep((1500, self.window_height - 200), (0, 0), 100, 100, "sheep"))
        level2.enemies.add(
            Sheep((1000, self.window_height - 200), (0, 0), 100, 100, "sheep"))

        level3 = Level()
        self.generate_ground(level3)
        level3.enemies.add(Ice((400, 900), (0, 0), 100, 100, "Ice"))
        level3.enemies.add(Sheep((300, 900), (0, 0), 100, 100, "sheep"))

        self.levels = [level1, level2, level3]
예제 #3
0
    def __init__(self,
                 element,
                 comp,
                 name=None,
                 weapon=None,
                 weapon_bonus=None,
                 location=None,
                 sex='female'):
        for orth in ORTH[element]:
            if comp[orth] > comp[element] / 2:
                raise ValueError("Scients' orthogonal elements cannot be \
                                  more than half the primary element's value.")
        Unit.__init__(self, element, comp, name, location, sex)
        self.move = 4
        self.weapon = weapon
        if weapon_bonus == None:
            self.weapon_bonus = Stone()
        else:
            self.weapon_bonus = weapon_bonus
        self.equip_limit = Stone({E: 1, F: 1, I: 1, W: 1})
        for i in self.equip_limit:
            self.equip_limit[i] = self.equip_limit[i] + self.comp[i] \
            + self.weapon_bonus[i]
        self.calcstats()

        #equiping weapons should be done someplace else.
        self.equip(self.weapon)
예제 #4
0
 def test_board_setitem(self):
     board = self._get_empty_board()
     board_obj = Board(board, BOARD_DIM)
     board_obj[0][0] = Stone(BLACK_STONE)
     self.assertTrue(Stone(BLACK_STONE), board_obj[0][0])
     board_obj[0][0] = Stone(WHITE_STONE)
     self.assertTrue(Stone(WHITE_STONE), board_obj[0][0])
예제 #5
0
def max_comp(suit, kind='Scient'):
    """Returns the maximum composition of 'kind' of element 'suit'"""
    comp = Stone()
    if kind == 'Scient':
        comp[suit] = 255
        comp[OPP[suit]] = 0
        comp[ORTH[suit][0]] = comp[ORTH[suit][1]] = 127
        return comp
    if kind == 'Weapon':
        comp2 = Stone()
        comp2[suit] = comp[suit] = 63
        comp2[OPP[suit]] = comp[OPP[suit]] = 0
        comp2[ORTH[suit][0]] = comp[ORTH[suit][1]] = 0
        comp2[ORTH[suit][1]] = comp[ORTH[suit][0]] = 63
        return (comp, comp2)
    if kind == 'Nescient':
        comp2 = Stone()
        comp2[suit] = comp[suit] = 255
        comp2[OPP[suit]] = comp[OPP[suit]] = 0
        comp2[ORTH[suit][0]] = comp[ORTH[suit][1]] = 0
        comp2[ORTH[suit][1]] = comp[ORTH[suit][0]] = 254
        return (comp, comp2)
    if kind == 'Stone':
        for i in comp:
            comp[i] = 255
        return comp
예제 #6
0
def parse_move(arr):
    if isinstance(arr[1], str):
        return Stone(arr[0]).get_type(), arr[1]
    else:
        return Stone(arr[0]).get_type(), [
            str_to_point(arr[1][0]),
            [parse_board(board) for board in arr[1][1]]
        ]
예제 #7
0
파일: board.py 프로젝트: ieuan-jones/pytafl
 def addStone(self,side,pos,variant=NORMAL):
     stone = Stone(side,(pos[0]*34,pos[1]*34),variant)
     
     if side == ATTACKER:
         self.attack.append(stone)
     if side == DEFENDER:
         self.defense.append(stone)
예제 #8
0
 def toggle(self, colour):
     """Put or remove stone at cursor."""
     point = self._cursor.point
     if point in self._board:
         del self._board[point]
     else:
         self._board[point] = Stone(colour)
예제 #9
0
def enter():
    game_framework.reset_time()
    global map, player, house, background, avalanche, coin, snows, map_on_coins, game_over, santa, game_clear, distance, stones
    map = Map()
    player = Player()
    house = House()
    background = Background()
    avalanche = Avalanche()
    coin = Coin()
    game_over = Game_over()
    santa = Santa()
    game_clear = Game_clear()
    distance = Distance()
    map_on_coins = [Map_on_Coin() for i in range(200)]
    snows = [Snow() for i in range(20)]
    stones = [Stone() for i in range(10)]

    Player.x = 300.0
    Player.y = 300.0
    Player.unreal_x = 300.0
    Player.unreal_y = 0
    Player.jump_before_y = 0
    Map.map_move_y_minor = 0
    Avalanche.game_over = 0
    Game_clear.game_clear = 0
    Santa.game_clear = 0
def test_check_valid_move():
    WIDTH = 600
    stone = Stone(WIDTH)
    gc = GameController(WIDTH, stone)
    gc.counter = 2

    gc.stone.total_row[3][3].color = 0
    gc.stone.total_row[4][4].color = 0
    gc.stone.total_row[3][4].color = 1
    gc.stone.total_row[4][3].color = 1
    assert gc.check_valid_move(4, 2) is True
    assert gc.check_valid_move(5, 3) is True
    assert gc.check_valid_move(2, 4) is True
    assert gc.check_valid_move(3, 5) is True
    assert gc.check_valid_move(3, 4) is False
    assert gc.check_valid_move(2, 2) is False
    assert gc.check_valid_move(0, 0) is False
    assert gc.check_valid_move(7, 7) is False

    gc.counter = 1
    gc.stone.total_row[3][3].color = 0
    gc.stone.total_row[4][4].color = 0
    gc.stone.total_row[3][4].color = 1
    gc.stone.total_row[4][3].color = 1
    assert gc.check_valid_move(3, 2) is True
    assert gc.check_valid_move(4, 5) is True
    assert gc.check_valid_move(5, 4) is True
    assert gc.check_valid_move(2, 3) is True
    assert gc.check_valid_move(3, 4) is False
    assert gc.check_valid_move(2, 2) is False
    assert gc.check_valid_move(0, 0) is False
    assert gc.check_valid_move(7, 7) is False
예제 #11
0
def t2c(tup):
    """Converts a tuple to a comp"""
    if len(tup) != 4: raise Exception("Incorrect number of values in tuple")
    comp = Stone()
    for i in range(4):
        comp[ELEMENTS[i]] = tup[i]
    return comp
예제 #12
0
def one_three_zeros(value):
    squad = Squad()
    for i in ELEMENTS:
        s = Stone()
        s[i] = value
        squad.append(Scient(i, s))
    return squad
예제 #13
0
def rand_comp(suit=None, kind=None, max_v=255):
    """Returns a random comp in 'suit' for use instaniating 'kind'
       If 'suit' is not valid, random element used.
       If 'kind' is not valid stone is used
       if 'kind' is 'Stone' suit ignored"""
    if not suit in ELEMENTS:
        suit = rand_element()

    comp = Stone()
    if kind is None or kind not in KINDS:
        kind = 'Stone'

    if kind == 'Stone':
        for element in comp:
            comp[element] = random.randint(0, max_v)
        return comp
    else:
        if kind == 'Scient':
            comp[suit] = random.randint(1, max_v)
            for picked in ORTH[suit]:
                #NOTE: if comp[suit] = 1 orths will be 0.
                comp[picked] = random.randint(0, (comp[suit] / 2))
            return comp

        else:  #Nescient is currently the only other kind
            comp[suit] = random.randint(1, max_v)
            comp[random.choice(ORTH[suit])] = \
                random.randint(1, comp[suit])
            return comp
예제 #14
0
def run_game():
    #init游戏并创建一个窗口对象
    pygame.init()
    ai_settings=Settings()#创建Settings类的实例
    screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("地球保卫战 v1.0")

    #创建实例
    sscol=Group()
    stone=Stone(screen)
    stats=GameStats(ai_settings)
    bullets=Group()
    ship=Ship(ai_settings,screen)
    sscol.add(ship)
    aliens=Group()
    button=Button(ai_settings,screen,"Play")
    score=Score(ai_settings,screen,stats)

    
    while True:

        #帧数
        pygame.time.Clock().tick(120)
        #监视键盘和鼠标事件
        func.check_events(ai_settings,screen,ship,aliens,bullets,button,stats,score)

        #决定游戏是否开始
        if stats.game_status:
            ship.update()
            func.release_bullet(ai_settings,bullets,screen,aliens,stats,score)
            func.update_alien(ai_settings,screen,aliens,ship,stats,bullets,score,stone,sscol)
        
        
            #每次循环都重绘屏幕
        func.update_screen(ai_settings,screen,ship,bullets,aliens,stats,button,score,stone)
    def move(self, stones):
        num = 0
        i = 0
        j = 0

        if (len(stones[0]) == 0 and len(stones[1]) == 0):
            return self.grid.center()

        # Get last stone of opponent
        opponentLastStone = stones[1][-1]

        if opponentLastStone.x + 66 < self.grid.WIDTH:
            finalCoord = Coordinate(opponentLastStone.x + 66,
                                    opponentLastStone.y)
        else:
            finalCoord = Coordinate(opponentLastStone.x - 66,
                                    opponentLastStone.y)

        for i in range(0, len(self.coordList), self.JUMP):
            coord = self.coordList[i]

            x = opponentLastStone.x + coord.x
            y = opponentLastStone.y + coord.y

            if x < 0 or y < 0 or x > self.grid.WIDTH or y > self.grid.HEIGHT:
                continue

            currStone = Stone(x, y)
            flag = 0

            if not opponentLastStone.getFeasible(currStone):
                continue

            for l in range(0, 2):
                for stone in stones[l]:
                    if not stone.getFeasible(currStone):
                        flag = 1
                        break
                if flag == 1:
                    break

            if flag == 1:
                continue

            stones[0].append(currStone)

            self.grid.setColor(stones)

            ret = self.grid.getColorDist()

            stones[0].pop()

            if (ret[0] > num):
                num = ret[0]
                finalCoord = Coordinate(currStone.x, currStone.y)

        return finalCoord
def test_read_file():
    WIDTH = 600
    stone = Stone(WIDTH)
    gc = GameController(WIDTH, stone)

    assert gc.score_list == []
    # The default when scores.txt is blank

    gc.read_file('test_scores.txt')
    assert gc.score_list == [['Khai4', 22], ['Khai3', 20]]
예제 #17
0
파일: field.py 프로젝트: AFDudley/btpy
 def harvest_stones(self):
     """returns set of stones generated at harvest"""
     stones = Stone()
     for x in xrange(self.grid.x):
         for y in xrange(self.grid.y):
             for suit, value in self.grid[x][y].comp.iteritems():
                 stones[suit] += value
     for suit, value in stones.iteritems():
         stones[suit] /= 8  #8 seems like a good number...
     return stones
예제 #18
0
def process_stone(frame_desc,
                  id,
                  contour,
                  src_img,
                  result_img,
                  save_stones=None):
    m = cv2.moments(contour)

    try:
        cx = int(m['m10'] / m['m00'])
        cy = int(m['m01'] / m['m00'])
    except:
        return None

    bbox = cv2.boundingRect(contour)

    ec, es, ea = cv2.minAreaRect(contour)
    ec = (int(ec[0]), int(ec[1]))
    es = (int(es[0]) / 2, int(es[1]) / 2)
    ea = int(ea)
    if es[1] > es[0]:
        es = es[1], es[0]
        ea += 90
    ea = ea % 180

    resy, resx, _ = src_img.shape
    if not preselect_stone((resx, resy), ec, es):
        return None

    cutout = src_img[bbox[1]:bbox[1] + bbox[3], bbox[0]:bbox[0] + bbox[2]]
    b, g, r = cv2.split(cutout)
    a = np.zeros_like(b, dtype=np.uint8)
    cv2.drawContours(a, [contour], 0, 255, -1, offset=(-bbox[0], -bbox[1]))
    cropped = cv2.merge((b, g, r, a))
    color = find_dominant_color(cropped)
    structure = lbp_histogram(cropped)

    if result_img is not None:
        dummy = np.array([np.array([color])])
        rgb_color = (cv2.cvtColor(dummy, cv2.COLOR_LAB2BGR)[0, 0]).tolist()
        cv2.drawContours(result_img, [contour], 0, rgb_color, -1)
        cv2.circle(result_img, ec, 4, (128, 0, 0))
        cv2.rectangle(result_img, (bbox[0], bbox[1]),
                      (bbox[0] + bbox[2], bbox[1] + bbox[3]), (255, 0, 0))
        cv2.ellipse(result_img, ec, es, ea, 0, 360, (0, 0, 255))

    ret = Stone(ec, es, ea, color, structure)

    if save_stones:
        cv2.imwrite(
            'stones/stone_{}_{:03d}.{}'.format(frame_desc, id, save_stones),
            cropped)
        ret.save('stones/stone_{}_{:03d}.data'.format(frame_desc, id))

    return ret
def test_can_go():
    WIDTH = 600
    stone = Stone(WIDTH)
    gc = GameController(WIDTH, stone)
    gc.counter = 2
    gc.stone.total_row[3][3].color = 0  # 4 starting stones
    gc.stone.total_row[4][4].color = 0
    gc.stone.total_row[3][4].color = 1
    gc.stone.total_row[4][3].color = 1
    gc.can_go()
    assert len(gc.moves_list) == 4  # First move: 4 valids moves for player
예제 #20
0
    def update(self, dt):
        # 读入NUM_SAMPLES个取样
        string_audio_data = self.stream.read(self.NUM_SAMPLES)
        k = max(struct.unpack('1000h', string_audio_data))
        # 平均音量
        if self.sample_count < 50:
            self.average_volume = (self.average_volume * self.sample_count +
                                   k) / (self.sample_count + 1)
            self.sample_count += 1
        else:
            self.sample_count = 0
            self.average_volume = 0
            self.average_volume = (self.average_volume * self.sample_count +
                                   k) / (self.sample_count + 1)
            self.sample_count += 1

        # print voice
        self.voiceBar.scale_x = self.average_volume / 10000.0
        if self.role_run_to_right:
            self.role.x += 4
            # self.floor.x -= 5
        if self.role_run_to_left:
            self.role.x -= 4
            # self.floor.x += 5
        if self.role.can_shot:
            if self.sample_count == 50 and self.average_volume > 4000:
                pos = self.role.x + self.role.width * 0.8, self.role.y + self.role.height * 0.6
                stone = Stone((self.average_volume - 3000) / 1000.0 + 1, pos,
                              self.role.direction)
                self.stone = stone
                self.add(stone)
                self.role.can_shot = False
        # if k > 3000:
        # self.floor.x -= min((k / 20.0), 150) * dt
        #  k > 8000:
        # self.role.jump((k - 8000) / 1000.0)

        # destination
        if (self.role.x + self.role.width / 2) >= self.floor.flag.x:
            time.sleep(0.5)
            self.end_game()
            self.role.pause_scheduler()
            return

        # spider trigger
        if self.role.x > self.floor.spider.x - 50:
            self.floor.spider.passed = True
        # collision
        self.role_collide()
        self.monster_collide_on_role()
        if not self.role.can_shot:
            self.stone_collide()
            self.monster_collide_on_stone()
예제 #21
0
def load_map(file, move_keys, player_number):
    # Load map

    # Load background color
    f = open(path.join("levels", file + ".txt"), "r")
    data = f.read()
    f.close()
    data = data.split("\n")
    data[0] = data[0].split(",")
    color = data[0]
    tile_chars = {}
    data.pop(0)

    # Load tiles
    while "=" in data[0]:
        tile_chars[data[0][0]] = data[0].split("=")[1].split(",")
        data.pop(0)

    # Initialize objects
    tiles = []
    net = []
    walkers = []
    climbers = []
    stones = []
    players = []

    # Load objects
    y = 1
    for row in range(len(data)):
        x = -1
        for tile in range(len(data[row])):
            if data[row][tile] in tile_chars:
                tiles.append(
                    Tile(x, y, TILE_WIDTH, TILE_HEIGHT,
                         tile_chars[data[row][tile]]))
            elif data[row][tile] == "p" and len(players) < player_number:
                players.append(
                    Player(x, y, CHAR_WIDTH, CHAR_HEIGHT, 0,
                           move_keys[len(players)]))
            elif data[row][tile] == "w":
                walkers.append(Walker(x, y, CHAR_WIDTH, CHAR_HEIGHT, 0))
            elif data[row][tile] == "n":
                net.append(Net(x, y, TILE_WIDTH, TILE_HEIGHT, 6))
            elif data[row][tile] == "c":
                net.append(Net(x, y, TILE_WIDTH, TILE_HEIGHT, 6))
                climbers.append(Climber(x, y, CHAR_WIDTH, CHAR_HEIGHT, 0))
            elif data[row][tile] == "s":
                stones.append(Stone(x, y, TILE_WIDTH, TILE_HEIGHT, 7))
            x += TILE_WIDTH
        y -= TILE_HEIGHT

    # Return objects
    return tiles, net, stones, players, walkers, climbers, color
def test_is_corner():
    WIDTH = 600
    stone = Stone(WIDTH)
    gc = GameController(WIDTH, stone)
    assert gc.is_corner(0, 0) is True
    assert gc.is_corner(7, 7) is True
    assert gc.is_corner(0, 7) is True
    assert gc.is_corner(7, 0) is True
    assert gc.is_corner(1, 8) is None
    assert gc.is_corner(3, 4) is None
    assert gc.is_corner(2, 6) is None
    assert gc.is_corner(5, 5) is None
def test_is_edge():
    WIDTH = 600
    stone = Stone(WIDTH)
    gc = GameController(WIDTH, stone)
    assert gc.is_edge(0, 8) is True
    assert gc.is_edge(3, 0) is True
    assert gc.is_edge(4, 7) is True
    assert gc.is_edge(7, 4) is True
    assert gc.is_edge(1, 8) is None
    assert gc.is_edge(3, 4) is None
    assert gc.is_edge(2, 6) is None
    assert gc.is_edge(5, 5) is None
def test_is_third_away():
    WIDTH = 600
    stone = Stone(WIDTH)
    gc = GameController(WIDTH, stone)
    assert gc.is_third_away(2, 2) is True
    assert gc.is_third_away(5, 1) is True
    assert gc.is_third_away(1, 2) is True
    assert gc.is_third_away(2, 5) is True
    assert gc.is_third_away(1, 8) is None
    assert gc.is_third_away(6, 4) is None
    assert gc.is_third_away(3, 3) is None
    assert gc.is_third_away(4, 4) is None
예제 #25
0
    def __init__(self, color):
        self.xcoords = [800, 738, 676, 613, 550, 485, 373, 308, 247, 182, 121, 60, 60, 121, 182, 247, 308, 373, 485, 550, 613, 676, 738, 800]
        self.stones = []
        self.movableStones = set()
        self.color = color
        self.restrict = False
        self.victory = False
        #configuring initial positions of stones per game logic
        for i in range(2):
            newStone = Stone(self.color, 1)
            self.stones.append(newStone)

        for i in range(3):
            newStone = Stone(self.color, 17)
            self.stones.append(newStone)

        for i in range(5):
            newStone = Stone(self.color, 12)
            newStone2 = Stone(self.color, 19)
            self.stones.append(newStone)
            self.stones.append(newStone2)
예제 #26
0
    def move(self, position):
        reverse_stons = []
        # 石を打つ
        self.board[position.y][position.x] = Stone(self.turn.value)

        # 石をひっくり返す
        # 各方向に石をひっくり返せるか調べる
        for dx, dy in Board.DIRS:
            y = position.y + dy
            x = position.x + dx
            enemy = self.turn.invert()
            if self.in_board(x, y) \
                    and self.board[y][x] == enemy:
                # 隣が相手の石
                y += dy
                x += dx
                while self.in_board(x, y) \
                        and self.board[y][x] == enemy:
                    y += dy
                    x += dx
                if self.in_board(x, y) \
                        and self.board[y][x] == self.turn:
                    # この方向は返せる
                    # 1マス戻る
                    y -= dy
                    x -= dx
                    # 戻りながら返す
                    stons = []
                    while self.in_board(x, y) \
                            and self.board[y][x] == enemy:
                        self.board[y][x] = Stone(self.turn.value)
                        stons.append([x, y])
                        y -= dy
                        x -= dx

                    reverse_stons.append(stons)

        self.turn = self.turn.invert()  # 手番を変更
        self.move_num += 1              # 手数を増やす
        return reverse_stons
예제 #27
0
    def equip(self, weapon):  #TODO move to battlefield
        """
        A function that automagically equips items based on element.
        should be moved someplace else.
        """
        if weapon == None:
            if self.element == 'Earth':
                self.weapon = Sword(self.element, Stone())
            elif self.element == 'Fire':
                self.weapon = Bow(self.element, Stone())
            elif self.element == 'Ice':
                self.weapon = Wand(self.element, Stone())
            else:
                self.weapon = Glove(self.element, Stone())

        else:
            '''
            if weapon.value() > self.equip_limit[weapon.type]:
                raise Exception("This unit cannot equip this weapon")
            else:
                self.weapon = weapon
            '''
            self.weapon = weapon
예제 #28
0
    def start(self):
        while 1:
            serverResponse = self.s.recv(1024)
            data = serverResponse.split()

            # Check if the game has ended
            if int(data[0]) == 1:
                break

            self.noOfMoves = int(data[1]) - 1
            self.playersMovedTillNow = int(data[1])
            if (self.playersMovedTillNow < self.NUMBER_OF_PLAYERS):
                for i in range(0, self.playersMovedTillNow):
                    self.lastMoveOfOpponent_x = int(data[2 + i * 3])
                    self.lastMoveOfOpponent_y = int(data[2 + i * 3 + 1])
                    self.stones[1].append(
                        Stone(self.lastMoveOfOpponent_x,
                              self.lastMoveOfOpponent_y))
                    self.greedy.updatePull(self.stones, 1)
            else:
                startIndex = self.playersMovedTillNow - self.NUMBER_OF_PLAYERS + 1
                for i in range(startIndex, self.playersMovedTillNow):
                    self.lastMoveOfOpponent_x = int(data[2 + i * 3])
                    self.lastMoveOfOpponent_y = int(data[2 + i * 3 + 1])
                    self.stones[1].append(
                        Stone(self.lastMoveOfOpponent_x,
                              self.lastMoveOfOpponent_y))
                    self.greedy.updatePull(self.stones, 1)

            nextMove = self.greedy.move(self.stones)

            self.stones[0].append(Stone(nextMove.x, nextMove.y))
            self.greedy.updatePull(self.stones, 0)

            self.s.sendall(str(nextMove.x) + " " + str(nextMove.y))

        self.s.close()
예제 #29
0
def max_squad_by_value(value):
    """Takes an integer, ideally even because we round down, and returns a
    squad such that comp[element] == value, comp[orth] == value/2, comp[opp]
    == 0"""
    squad = Squad()
    value = value / 2  #more logical, really.
    half = value / 2
    for i in ELEMENTS:
        s = Stone()
        s[i] = value
        s[OPP[i]] = 0
        for o in ORTH[i]:
            s[o] = half
        squad.append(Scient(i, s))
    return squad
예제 #30
0
 def can_move_nescient(self, body, nescient):
     """checks if nescient can move to body."""
     for part in body:
         xdestp, ydestp = body[part].location
         if self.grid[xdestp][ydestp].contents != None:
             if self.grid[xdestp][
                     ydestp].contents not in nescient.body.values():
                 if type(self.grid[xdestp][ydestp].contents) != type(
                         Stone()):
                     return False
                 else:
                     pass
             else:
                 pass
         else:
             pass
     return True