public void TestRightDiagonalLine() { Field field = new Field(10, 10); int length; Cell[] lineElements; field[5, 1].Contain = BubbleSize.Big; field[5, 1].Color = BubbleColor.Red; field[4, 2].Contain = BubbleSize.Big; field[4, 2].Color = BubbleColor.Red; field[3, 3].Contain = BubbleSize.Big; field[3, 3].Color = BubbleColor.Red; field[2, 4].Contain = BubbleSize.Big; field[2, 4].Color = BubbleColor.Red; field[1, 5].Contain = BubbleSize.Big; field[1, 5].Color = BubbleColor.Red; LineChecker lineChecker = new LineChecker(field, field[2, 4]); Assert.IsTrue(lineChecker.RightDiagonalLine(out length, out lineElements)); Assert.AreEqual(length, 5); Assert.AreSame(lineElements[1], field[1, 5]); Assert.AreSame(lineElements[4], field[5, 1]); }
public NineSquareGridWinningLineChecker(LineChecker diagonal_winning_line_checker, LineChecker column_winning_line_checker, LineChecker row_winning_line_checker) { _diagonal_winning_line_checker = diagonal_winning_line_checker; _column_winning_line_checker = column_winning_line_checker; _row_winning_line_checker = row_winning_line_checker; }
public void MoveBubble(Cell currentCell) { _lineChecker = new LineChecker(Field, currentCell); _lineChecker.ScoreChangedEventHandler += OnScoreChange; _lineChecker.DestroyLinesEventHandler += OnDestroyLines; if (currentCell.Contain == null) { if (TryMoveBubble(SelectedCell, currentCell)) { SelectedCell = null; if (!_lineChecker.Check()) { NextTurn(true); } else { Field.EmptyCells += _lineChecker.LineLength; NextTurn(false); } } } else { if (currentCell.Contain == BubbleSize.Small) { Cell CurrentCellDuplicate = new Cell(currentCell); if (TryMoveBubble(SelectedCell, currentCell)) { SelectedCell = null; if (!_lineChecker.Check()) { Cell newBubble = _bubbleGenerationStrategy.GenerateBubble(Field, BubbleSize.Small, CurrentCellDuplicate.Color); Field[newBubble.Row, newBubble.Column].Contain = newBubble.Contain; Field[newBubble.Row, newBubble.Column].Color = newBubble.Color; NextTurn(true); } else { Field.EmptyCells += _lineChecker.LineLength; Field[currentCell.Row, currentCell.Column] = CurrentCellDuplicate; NextTurn(false); } } } else { SelectBubble(currentCell); } } }
public static void InitializeGenerators(SpeakingLineGenerator speakingLineGenerator, ExpressionLineGenerator expressionLineGenerator, ChoiceLineGenerator choiceLineGenerator, InstructionLineGenerator instructionLineGenerator, StallLineGenerator stallLineGenerator, LineChecker isLineValid) { GenerateSpeakingLine = speakingLineGenerator; GenerateExperssionLine = expressionLineGenerator; GenerateChoiceLine = choiceLineGenerator; GenerateInstructionLine = instructionLineGenerator; GenerateStallLine = stallLineGenerator; IsLineValid = isLineValid; initialized = true; }
public void TestCheckMethod_RightDiagonalLine() { Field field = new Field(10, 10); field[5, 1].Contain = BubbleSize.Big; field[5, 1].Color = BubbleColor.Red; field[4, 2].Contain = BubbleSize.Big; field[4, 2].Color = BubbleColor.Red; field[3, 3].Contain = BubbleSize.Big; field[3, 3].Color = BubbleColor.Red; field[2, 4].Contain = BubbleSize.Big; field[2, 4].Color = BubbleColor.Red; field[1, 5].Contain = BubbleSize.Big; field[1, 5].Color = BubbleColor.Red; LineChecker lineChecker = new LineChecker(field, field[2, 4]); Assert.IsTrue(lineChecker.Check()); }
public void TestCheckMethod_VerticalLine() { Field field = new Field(10, 10); field[1, 1].Contain = BubbleSize.Big; field[1, 1].Color = BubbleColor.Red; field[2, 1].Contain = BubbleSize.Big; field[2, 1].Color = BubbleColor.Red; field[3, 1].Contain = BubbleSize.Big; field[3, 1].Color = BubbleColor.Red; field[4, 1].Contain = BubbleSize.Big; field[4, 1].Color = BubbleColor.Red; field[5, 1].Contain = BubbleSize.Big; field[5, 1].Color = BubbleColor.Red; LineChecker lineChecker = new LineChecker(field, field[2, 1]); Assert.IsTrue(lineChecker.Check()); }
public void TestCheckMethod_HorizontalLine() { Field field = new Field(10, 10); field[1, 1].Contain = BubbleSize.Big; field[1, 1].Color = BubbleColor.Red; field[1, 2].Contain = BubbleSize.Big; field[1, 2].Color = BubbleColor.Red; field[1, 3].Contain = BubbleSize.Big; field[1, 3].Color = BubbleColor.Red; field[1, 4].Contain = BubbleSize.Big; field[1, 4].Color = BubbleColor.Red; field[1, 5].Contain = BubbleSize.Big; field[1, 5].Color = BubbleColor.Red; LineChecker lineChecker = new LineChecker(field, field[1, 3]); Assert.IsTrue(lineChecker.Check()); }
public void TestDoubleLine() { Field field = new Field(10, 10); int line1Length; Cell[] line1Elements; int line2Length; Cell[] line2Elements; //left diagonal line field[1, 1].Contain = BubbleSize.Big; field[1, 1].Color = BubbleColor.Red; field[2, 2].Contain = BubbleSize.Big; field[2, 2].Color = BubbleColor.Red; field[3, 3].Contain = BubbleSize.Big; field[3, 3].Color = BubbleColor.Red; field[4, 4].Contain = BubbleSize.Big; field[4, 4].Color = BubbleColor.Red; field[5, 5].Contain = BubbleSize.Big; field[5, 5].Color = BubbleColor.Red; //+ vertical line field[2, 1].Contain = BubbleSize.Big; field[2, 1].Color = BubbleColor.Red; field[3, 1].Contain = BubbleSize.Big; field[3, 1].Color = BubbleColor.Red; field[4, 1].Contain = BubbleSize.Big; field[4, 1].Color = BubbleColor.Red; field[5, 1].Contain = BubbleSize.Big; field[5, 1].Color = BubbleColor.Red; LineChecker lineChecker = new LineChecker(field, field[1, 1]); Assert.IsTrue(lineChecker.LeftDiagonalLine(out line1Length, out line1Elements)); Assert.AreEqual(line1Length, 5); Assert.AreSame(line1Elements[0], field[1, 1]); Assert.AreSame(line1Elements[4], field[5, 5]); Assert.IsTrue(lineChecker.VerticalLine(out line2Length, out line2Elements)); Assert.AreEqual(line2Length, 5); Assert.AreSame(line2Elements[0], field[1, 1]); Assert.AreSame(line2Elements[4], field[5, 1]); }
public void Line_Positive() { FileAsObject o = new FileAsObject(); LineChecker lineChecker = new LineChecker(); lineChecker.SetInternalCircuitNamesForTests(new string[] { "INPUT_HIGH", "INPUT_LOW", "PROBE", "NAND" }); o.Attach(new NodeLine("A: INPUT_HIGH;")); o.Attach(new NodeLine("B: INPUT_HIGH;")); o.Attach(new NodeLine("S: PROBE;")); o.Attach(new NodeLine("NODE1: NAND;")); o.Attach(new ConnectionLine("A: NODE1;")); o.Attach(new ConnectionLine("B: NODE1;")); o.Attach(new ConnectionLine("NODE1: S;")); (bool success, string validationError)res = o.Accept(lineChecker); Assert.AreEqual(true, res.success); }
private void RaizeSmallBubbles() { for (int i = 0; i < Field.Height; i++) { for (int j = 0; j < Field.Width; j++) { if (Field[i, j].Contain == BubbleSize.Small) { Field.EmptyCells--; Field[i, j].Contain = BubbleSize.Big; // Check if this bubble creates line _lineChecker = new LineChecker(Field, Field[i, j]); _lineChecker.ScoreChangedEventHandler += OnScoreChange; _lineChecker.DestroyLinesEventHandler += OnDestroyLines; _lineChecker.Check(); Field.EmptyCells += _lineChecker.LineLength; } } } }
/// <summary> /// проверяем на заполнение вертикальных и горизонтальных линий /// проверка сделана таким образом, что может проверять сетку лубой размерности /// </summary> /// <returns><c>true</c> если есть победитель, <c>false</c> нету</returns> bool ChekForWinner() { if (CheckForDraw()) { DrawGame(); return(false); } bool f = false; LineChecker lc = new LineChecker(ref _allCells); int i, j; for (i = 0; i < _grid; i++) { //горизонтальные lc.Reset(); for (j = _grid * i; lc.lineLength < _grid; j++) { lc.AddCell(j); } if (lc.isWinLine) { break; } //вертикальные lc.Reset(); for (j = i; lc.lineLength < _grid; j += _grid) { lc.AddCell(j); } if (lc.isWinLine) { break; } } if (lc.hasWinLine) { WinGame(lc.line); f = true; } else { lc.Reset(); //проверяем диагональные линии (слева на право) for (i = 0; i < _grid; i++) { lc.AddCell(_grid * i + i); } if (lc.isWinLine) { WinGame(lc.line); f = true; } else { lc.Reset(); for (i = 0; i < _grid; i++) { lc.AddCell(_grid - 1 + _grid * i - i); } if (lc.isWinLine) { WinGame(lc.line); f = true; } } } return(f); }
public static (bool success, string validationError) Validate(string content) { FileAsObject o = new FileAsObject(); using (StringReader reader = new StringReader(content)) { bool blockOne = true; string line; while ((line = reader.ReadLine()) != null) { if (line.StartsWith("#")) { continue; } if (line.Equals("")) { blockOne = false; continue; } if (blockOne) { o.Attach(new NodeLine(line)); } else { o.Attach(new ConnectionLine(line)); } } } FormatChecker formatChecker = new FormatChecker(content); LineChecker lineChecker = new LineChecker(); if (InternalCircuitNamesForTests != null) { lineChecker.SetInternalCircuitNamesForTests(InternalCircuitNamesForTests); } LoopChecker loopChecker = new LoopChecker(content); HangingConnectionChecker hangingConnectionChecker = new HangingConnectionChecker(content); (bool success, string validationError)res; if (!(res = o.Accept(formatChecker)).success) { return(res); } if (!(res = o.Accept(lineChecker)).success) { return(res); } if (!(res = o.Accept(hangingConnectionChecker)).success) { return(res); } if (!(res = o.Accept(loopChecker)).success) { return(res); } return( success : true, validationError : "" ); }
public TicTacToe(PlayerTracker player_tracker, Grid grid, LineChecker line_checker) { _player_tracker = player_tracker; _grid = grid; _line_checker = line_checker; }