public void ExtractPieceFromMoveKing() { var test = "K"; var result = PieceParser.Parse(test); Assert.AreEqual(Piece.King, result); }
public void ExtractPieceFromMovePawnNoNotation() { var test = "e"; var result = PieceParser.Parse(test); Assert.AreEqual(Piece.Pawn, result); }
public void ExtractPieceFromMoveBishop() { var test = "B"; var result = PieceParser.Parse(test); Assert.AreEqual(Piece.Bishop, result); }
public void ExtractPieceFromMoveQueen() { var test = "Q"; var result = PieceParser.Parse(test); Assert.AreEqual(Piece.Queen, result); }
public void ExtractPieceFromMoveRook() { var test = "R"; var result = PieceParser.Parse(test); Assert.AreEqual(Piece.Rook, result); }
public void ExtractPieceFromMoveKnight() { var test = "N"; var result = PieceParser.Parse(test); Assert.AreEqual(Piece.Knight, result); }
internal static IMove ParseChessmanMove(string moveString, bool color, Board board) { var to = MoveParser.GetToPosition(moveString); var isPieceType = PieceParser.ParsePieceTypePredicate(moveString[0]); var pieces = PiecesThatCanBeMovedTo(to, isPieceType, board); if (moveString.Length > 3 && moveString[1] != 'x') { pieces = SelectPiecesByPosition(moveString, pieces, board); } if (pieces.Count() != 1) { throw new ArgumentException(); } var piece = pieces.First(); var move = new Move(piece, to, board); if (move.IsCapture == (moveString[1] == 'x') && piece.IsMovePossible(move)) { return(move); } throw new ArgumentException(); }
public PgnTurnMovePromotion(string moveText) { var parts = moveText.Split('='); if (parts.Length != 2) { throw new ArgumentException($"Expected a movetext that contained a single '=' sign. Found {moveText}"); } PromotedTo = PieceParser.Parse(parts[1]); }
public void SetValuesFromJSON(string filename) { //FileLoader fl = new FileLoader ("JSONData" + Path.DirectorySeparatorChar + "Towers",filename); FileLoader fl = new FileLoader(Application.persistentDataPath, "Towers", filename); string json = fl.Read(); Dictionary <string, System.Object> data = (Dictionary <string, System.Object>)Json.Deserialize(json); string imgfilename = data ["decalFilename"] as string; Image img = transform.Find("Label").gameObject.GetComponent <Image> (); //Debug.Log ("Sprites" + Path.DirectorySeparatorChar + imgfilename); Texture2D decal = Resources.Load <Texture2D> ("Sprites/" + imgfilename); if (decal == null) { Debug.Log("decal is null"); } img.sprite = UnityEngine.Sprite.Create( decal, new Rect(0, 0, decal.width, decal.height), new Vector2(0.5f, 0.5f), img.sprite.rect.width / img.sprite.bounds.size.x); decalSet = true; towerType = data ["towerType"] as string; //Debug.Log (filename + " tower type is " + towerType); //if(filename.Equals("piecetower")){ // PieceParser.FillController(this,filename); // return; //} PieceParser.FillController(this, filename); /* * cooldownFactor = (float)(double)data["cooldownFactor"]; * maxcool = DEF_COOLDOWN * cooldownFactor; * dmg = (float)(double)data ["dmg"]; * speed = (float)(double)data ["speed"]; * range = (float)(double)data ["range"]; * knockback = (float)(double)data ["knockback"]; * lifeDrain = (float)(double)data ["lifeDrain"]; * poison = (float)(double)data ["poison"]; * poisonDur = (float)(double)data ["poisonDur"]; * splash = (float)(double)data ["splash"]; * stun = (float)(double)data ["stun"]; * slowdown = (float)(double)data ["slowdown"]; * slowDur = (float)(double)data ["slowDur"]; * penetration = (float)(double)data ["penetration"]; * shieldShred = (float)(double)data ["shieldShred"]; * trapArmTime = (float)(double)data ["trapArmTime"]; * spread = (int)(long)data ["spread"]; * splitCount = (int)(double)data ["doesSplit"]; * homingStrength = (float)(double)data ["isHoming"]; * arcDmg = (float)(double)data ["doesArc"]; * shieldHP = (float)(double)data ["shieldHP"];*/ }
internal static Promotion ParsePromotion(string promotionString, bool color, Board board) { (Pawn pawn, Position to) = GetPawnAndToPosition(promotionString.Substring(0, promotionString.Length - 2), color, board); var promotedPawn = PieceParser.ParsePiece(promotionString[promotionString.Length - 1], color); var promotion = new Promotion(pawn, promotedPawn, to, board); if (pawn.IsMovePossible(promotion)) { return(promotion); } throw new ArgumentException(); }
public void UpdateReadout() { List <string> filenames = new List <string>(); foreach (PieceRecord pr in allPieces) { filenames.Add(pr.pc.GetFilename()); } Dictionary <string, float> updatedDict = PieceParser.GetStatsFromGrid(filenames); //fire off an update event GameEvent ge = new GameEvent("readout_update"); ge.addArgument(updatedDict); ge.addArgument(towerType); EventManager.Instance().RaiseEvent(ge); Debug.Log("we read the thing"); }
public PgnTurnMove(string moveText, Color color) { Result = PlayResult.InProgress; var endPosition = PgnMoveTextParser.ExtractSquareFromMove(moveText, color); Color = color; MoveType = PgnMoveTextParser.ExtractMoveTypeFromMove(moveText); if (MoveType == MoveType.GameEnd) { Result = PgnMoveTextParser.ExtractGameEndingResultFromMove(moveText); return; } if (MoveType == MoveType.Castling) { // HANDLE CASTLING Piece = Piece.King; CastlingInfo = new PgnTurnMoveCastle(endPosition); } Piece = PieceParser.Parse(moveText.Substring(0, 1)); EndPosition = endPosition; PieceTaken = moveText.Contains("x"); if (moveText.Contains("+")) { Result = PlayResult.Check; } if (moveText.Contains("=")) { MoveType = MoveType.Promotion; PromotionInfo = new PgnTurnMovePromotion(moveText); } DisambiguationFile = ExtractDisambiguationFile(moveText); DisambiguationRank = ExtractDisambiguationRank(moveText); }
static void GameToChessComment(ChessGame game) { ChessGame copy = game.Copy(); copy.UndoAll(); var color = copy.board.IsWhiteTurnBool ? "White" : "Black"; var fen = copy.FEN; Console.WriteLine( "/*\n" + $" * Starting position ({color} to play)"); Console.WriteLine($"{ChessOutput.AsciiBoard(game)}"); while (copy.CanRedo()) { var chessMove = copy.Redo(); var move = chessMove.move; var promotion = ""; if ((Piece)move.promotion != Piece.EMPTY) { promotion = $"(Promote to {PieceParser.ToReadable((Piece)move.promotion)})"; } Console.WriteLine($"{BoardPosition.ReadablePosition(move.fromPosition)} -> {BoardPosition.ReadablePosition(move.targetPosition)} {promotion}"); Console.WriteLine($"{ChessOutput.AsciiBoard(copy)}"); } Console.WriteLine(" */\n" + $"var board = BoardFactory.LoadBoardFromFen(\"{fen}\");\n\n" + $"var moves = board.GetMoves();"); copy.UndoAll(); while (copy.CanRedo()) { var move = copy.Redo().move; var promotion = "EMPTY"; switch ((Piece)move.promotion) { case Piece.QUEEN: promotion = "QUEEN"; break; case Piece.ROOK: promotion = "ROOK"; break; case Piece.BISHOP: promotion = "BISHOP"; break; case Piece.KNIGHT: promotion = "Knight"; break; } ; Console.WriteLine($"board.MakeMove(BoardStateOffset.{BoardPosition.ReadablePosition(move.fromPosition).ToUpper()},BoardStateOffset.{BoardPosition.ReadablePosition(move.targetPosition).ToUpper()}, Piece.{promotion});"); } }
public static void ParseMove_CorrectNotation_ReturnExpectedPromotion(string moveString, string expectedFromPositionString, string expectedToPositionString, char expectedPromotedPawn) { var pawn = _board[expectedFromPositionString]; Assert.That(pawn is Pawn); var expectedMove = new Promotion((Pawn)_board[expectedFromPositionString], PieceParser.ParsePiece(expectedPromotedPawn, pawn.Color), new Position(expectedToPositionString), _board); var move = MoveParser.ParseMove(moveString, _board); Assert.That(move is Promotion); var promotion = (Promotion)move; Assert.That(expectedMove.To == promotion.To); Assert.That(expectedMove.Piece == promotion.Piece); Assert.That(expectedMove.Board == promotion.Board); Assert.That(expectedMove.PromotedPawn.GetType() == promotion.PromotedPawn.GetType()); }