示例#1
0
        public static IFieldsGraph ShouldHaveWhiteFieldAt(this IFieldsGraph graph, int row, int column)
        {
            var whiteField = graph.GetWhiteField();

            whiteField.RowIndex.ShouldEqual(row, "Row should be {0} but was {1}");
            whiteField.ColumnIndex.ShouldEqual(column, "Column should be {0} but was {1}");
            return(graph);
        }
示例#2
0
        private void InitliazeBlackBuckets(IFieldsGraph fieldsGraph)
        {
            _bestWhiteStonePostion = fieldsGraph.GetWhiteField().RowIndex;
            var blackFields = fieldsGraph.GetBlackFields();

            _blackFields           = blackFields.ToHashSet();
            _blackFieldsByRowIndex = _fieldsGraph.RowCount.Times((row) => new { row, fields = new HashSet <Field>() })
                                     .ToDictionary(item => item.row, item => item.fields);
            blackFields.Each(field => _blackFieldsByRowIndex[field.RowIndex].Add(field));
        }
示例#3
0
        private BoardJumpTree SelectWhiteFieldNode()
        {
            var whiteField = _fieldsGraph.GetWhiteField();

            if (whiteField.Selected == false)
            {
                return(new BoardJumpTree(_fieldsGraph, new SelectWhiteFieldMove(whiteField), null));
            }
            return(new BoardJumpTree(_fieldsGraph, new EmptyPhutballMove(), null));
        }
 public int GetValue(IFieldsGraph valueSubject)
 {
     var whiteField = valueSubject.GetWhiteField();
     var rawDistance = _winingBorder.GetDistanceFrom(whiteField);
     if(rawDistance == 0)
     {
         return _winingBorder.WinValue;
     }
     var distanceBetweenBorders = DistanceBetweenBorders();
     if(rawDistance >= distanceBetweenBorders)
     {
         return _winingBorder.LooseValue;
     }
     return distanceBetweenBorders - rawDistance;
 }
示例#5
0
        public int GetValue(IFieldsGraph valueSubject)
        {
            var whiteField  = valueSubject.GetWhiteField();
            var rawDistance = _winingBorder.GetDistanceFrom(whiteField);

            if (rawDistance == 0)
            {
                return(_winingBorder.WinValue);
            }
            var distanceBetweenBorders = DistanceBetweenBorders();

            if (rawDistance >= distanceBetweenBorders)
            {
                return(_winingBorder.LooseValue);
            }
            return(distanceBetweenBorders - rawDistance);
        }
示例#6
0
 public Field GetWhiteField()
 {
     return(_fieldsGraph.GetWhiteField());
 }
示例#7
0
 public AverageBlackStoneToTargetBorderDistance(IPlayersState playersState, IFieldsGraph actualGraph, int averageDistanceWeight)
 {
     _targetBorder          = playersState.CurrentPlayer.GetTargetBorder(actualGraph);
     _originalDistance      = _targetBorder.GetDistanceFrom(actualGraph.GetWhiteField());
     _averageDistanceWeight = averageDistanceWeight;
 }
示例#8
0
 public BlackStoneToTargetBorderCount(IPlayersState playersState, IFieldsGraph actualGraph, int goodBlackFieldsWeight)
 {
     _targetBorder          = playersState.CurrentPlayer.GetTargetBorder(actualGraph);
     _originalDistance      = _targetBorder.GetDistanceFrom(actualGraph.GetWhiteField());
     _goodBlackFieldsWeight = goodBlackFieldsWeight;
 }
示例#9
0
 public void should_have_white_field_on_the_same_index_as_original()
 {
     _clonedGraph.GetWhiteField().Id.ShouldEqual(Sut.GetWhiteField().Id);
 }