예제 #1
0
    def canMove(self, unit, destination):
        if not Board.allied(destination.country, unit.country):
            return False

        if unit not in self.board.attackMoveList:
            return super(self).canMove(unit, destination)
        elif unit.isFlying():
            previousMove = self.board.getPath(unit.previousTerritory, unit.territory, unit)
            newMove = self.board.getPath(unit.territory, destination, unit)
            return previousMove + newMove < self.board.unitInfo(unit.type).movement
예제 #2
0
    def nextPhase(self, board):
        conflicts = {}  # list of territories being attacked, and the attacking units
        for (unit, start, dest) in self.moveList:
            if not Board.allied(dest.country, unit.country):
                if dest not in conflicts:
                    conflicts[dest] = [unit]
                else:
                    conflicts[dest].append(unit)
            else:
                # not in conflict
                unit.previousTerritory = unit.territory
                unit.territory = dest

        board.attackMoveList = self.moveList
        board.currentPhase = ResolvePhase(conflicts, self.board)
        return board.currentPhase