public bool IsMovePossible(SuperFieldModel superField, SquarePosition pos) { if (superField.Winner != FieldState.None) { return(false); } if (superField.Fields[pos.Field.Y][pos.Field.X].Winner != FieldState.None) { return(false); } if (superField.Fields[pos.Field.Y][pos.Field.X].Squares[pos.Square.Y][pos.Square.X] != SquareState.Empty) { return(false); } if (_superField.TurnRestrictedToField) { if (_superField.RestrictedToFieldPosition != pos.Field) { return(false); } } return(true); }
private bool HasSuperFieldThreeInARow(SuperFieldModel superField) { foreach (var fieldRow in superField.Fields) { if (AreThreeInARowField(fieldRow[0], fieldRow[1], fieldRow[2])) { return(true); } } for (int i = 0; i < 3; i++) { if (AreThreeInARowField(superField.Fields[0][i], superField.Fields[1][i], superField.Fields[2][i])) { return(true); } } if (AreThreeInARowField(superField.Fields[0][0], superField.Fields[1][1], superField.Fields[2][2])) { return(true); } if (AreThreeInARowField(superField.Fields[2][0], superField.Fields[1][1], superField.Fields[0][2])) { return(true); } return(false); }
private bool IsSuperFieldFull(SuperFieldModel superField) { foreach (var fieldRow in superField.Fields) { foreach (var field in fieldRow) { if (field.Winner == FieldState.None) { return(false); } } } return(true); }
protected override void OnInitialized() { SuperFieldModel = SuperFieldState.GetSuperField(); SuperFieldState.StateChanged += OnStateChanged; }
public void ResetSuperField() { _superField = new SuperFieldModel(); StateHasChanged(); }