Пример #1
0
        public void ExtractPieceFromMoveKing()
        {
            var test   = "K";
            var result = PieceParser.Parse(test);

            Assert.AreEqual(Piece.King, result);
        }
Пример #2
0
        public void ExtractPieceFromMovePawnNoNotation()
        {
            var test   = "e";
            var result = PieceParser.Parse(test);

            Assert.AreEqual(Piece.Pawn, result);
        }
Пример #3
0
        public void ExtractPieceFromMoveBishop()
        {
            var test   = "B";
            var result = PieceParser.Parse(test);

            Assert.AreEqual(Piece.Bishop, result);
        }
Пример #4
0
        public void ExtractPieceFromMoveQueen()
        {
            var test   = "Q";
            var result = PieceParser.Parse(test);

            Assert.AreEqual(Piece.Queen, result);
        }
Пример #5
0
        public void ExtractPieceFromMoveRook()
        {
            var test   = "R";
            var result = PieceParser.Parse(test);

            Assert.AreEqual(Piece.Rook, result);
        }
Пример #6
0
        public void ExtractPieceFromMoveKnight()
        {
            var test   = "N";
            var result = PieceParser.Parse(test);

            Assert.AreEqual(Piece.Knight, result);
        }
Пример #7
0
        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();
        }
Пример #8
0
        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]);
        }
Пример #9
0
    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"];*/
    }
Пример #10
0
        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();
        }
Пример #11
0
    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");
    }
Пример #12
0
        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);
        }
Пример #13
0
        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});");
            }
        }
Пример #14
0
        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());
        }