protected Figure ExecuteCommand(Commander.CommandType command, Figure figure, PlayingField playingField) { switch (command) { case Commander.CommandType.A: figure = figure.ShiftXLeft(); break; case Commander.CommandType.D: figure = figure.ShiftXRight(); break; case Commander.CommandType.S: figure = figure.ShiftYDown(); break; case Commander.CommandType.Q: figure = figure.RotateCounterClockwise(); break; case Commander.CommandType.E: figure = figure.RotateClockwise(); break; case Commander.CommandType.P: var fieldOut = playingField.Field.Select(row => row.ToArray()).ToArray(); foreach (var cell in figure.Cells) fieldOut[cell.ProjectionY][cell.ProjectionX] = PlayingField.StateCoord.CurrentFigure; foreach (var row in fieldOut) { foreach (var cell in row) Console.Write ( cell == PlayingField.StateCoord.Free ? '.' : cell == PlayingField.StateCoord.Busy ? '#' : '*' ); Console.Write(Environment.NewLine); } break; } if (СheckCollision(figure, playingField)) throw new CollisionException(); return figure; }
public PlayingEngine(PlayingField playingField, Figure[] figurs, Commander commander) { _playingField = playingField; _commander = commander; _figurs = figurs.ToImmutableArray(); }