public static void ProcessRequest(HttpContextBase context, IPlayer player) { string boardCode = context.Request.Form["board"];//".......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... zzzzzzzz.."; string pieceCode = context.Request["piece"]; //"l"; IBoard board = Board.Parse(boardCode); Piece piece = (Piece) Enum.Parse(typeof(Piece), new string(char.ToUpper(pieceCode[0]), 1)); TetrisMove move = player.MovePiece(board, piece); context.Response.ContentType = "text/plain"; context.Response.Write(string.Format("position={0}°rees={1}", move.Position, move.Degrees)); }
private static void Test(IPlayer player, int count) { Random random = new Random(); for (int game = 0; game < count; game++) { IBoard board = Board.Empty; Piece pieceCode; int[,] rotatedPieceData; TetrisMove move; do { int score; board = board.Collapse(out score); Console.WriteLine(board); Console.WriteLine("---------- {0}", score); int pieceIndex = random.Next(Pieces.Length); pieceCode = Pieces[pieceIndex]; try { move = player.MovePiece(board, pieceCode); CollectionAssert.Contains(Board.DegreesOptions, move.Degrees, "Degrees"); Assert.GreaterOrEqual(move.Position, 0, "Position"); int[,] pieceData = PieceData.All[pieceCode]; rotatedPieceData = Board.Rotate(pieceData, move.Degrees); Assert.LessOrEqual(move.Position, 10 - rotatedPieceData.GetLength(1), "Position"); } catch (Exception ex) { throw new AssertionException(ex.Message + " Piece is " + pieceCode + ".", ex); } } while (Board.TryUpdateBoard(rotatedPieceData, ref board, move.Position, char.ToLower(pieceCode.ToString()[0]))); } }