コード例 #1
0
        private void CrushFiveCandiesHorizontal(Node currentNode, DLinked candiesLinkedList)
        {
            Node currentNodeRight      = currentNode.right;
            Node currentNodeRightRight = currentNodeRight.right;
            Node currentNodeLeft       = currentNode.left;
            Node currentNodeLeftLeft   = currentNodeLeft.left;

            currentNode.data.Name           = ".";
            currentNodeRight.data.Name      = ".";
            currentNodeRightRight.data.Name = ".";
            currentNodeLeft.data.Name       = ".";
            currentNodeLeftLeft.data.Name   = ".";

            Console.WriteLine("finish ");
            candiesLinkedList.Print();
            Console.WriteLine("Generating New Nodes ...: ");
            //generate Random
            GenerateNewRandom(currentNode);
            GenerateNewRandom(currentNodeRight);
            GenerateNewRandom(currentNodeRightRight);
            GenerateNewRandom(currentNodeLeft);
            GenerateNewRandom(currentNodeLeftLeft);

            CheckGrid(candiesLinkedList);
            candiesLinkedList.Print();
        }
コード例 #2
0
        private void CrushFourCandiesVertical(Node startNode, DLinked candiesLinkedList)
        {
            Node upNode                = startNode.GetUpNode(startNode);
            Node startNodeDown         = startNode.GetDownNode(startNode);
            Node startNodeDownDown     = startNodeDown.GetDownNode(startNodeDown);
            Node startNodeDownDownDown = startNodeDownDown.GetDownNode(startNodeDownDown);

            if (upNode == null)
            {
                startNode.data.Name             = ".";
                startNodeDown.data.Name         = ".";
                startNodeDownDown.data.Name     = ".";
                startNodeDownDownDown.data.Name = ".";
            }
            else
            {
                startNodeDownDownDown           = SwapNodes(startNodeDownDownDown, upNode);
                startNode.data.Name             = ".";
                startNodeDown.data.Name         = ".";
                startNodeDownDown.data.Name     = ".";
                startNodeDownDownDown.data.Name = ".";
            }

            Console.WriteLine("finish ");
            candiesLinkedList.Print();
            Console.WriteLine("Generating New Nodes ...: ");
            //generate Random
            GenerateNewRandom(startNode);
            GenerateNewRandom(startNodeDown);
            GenerateNewRandom(startNodeDownDown);
            GenerateNewRandom(startNodeDownDownDown);

            CheckGrid(candiesLinkedList);
            candiesLinkedList.Print();
        }
コード例 #3
0
        private void CrushFiveCandiesVertical(Node currentNode, DLinked candiesLinkedList)
        {
            Node currentNodeUp       = currentNode.GetUpNode(currentNode);
            Node currentNodeUpUp     = currentNodeUp.GetUpNode(currentNodeUp);
            Node currentNodeDown     = currentNode.GetDownNode(currentNode);
            Node currentNodeDownDown = currentNodeDown.GetDownNode(currentNodeDown);

            currentNode.data.Name         = ".";
            currentNodeUp.data.Name       = ".";
            currentNodeUpUp.data.Name     = ".";
            currentNodeDown.data.Name     = ".";
            currentNodeDownDown.data.Name = ".";

            Console.WriteLine("finish ");
            candiesLinkedList.Print();
            Console.WriteLine("Generating New Nodes ...: ");
            //generate Random
            GenerateNewRandom(currentNode);
            GenerateNewRandom(currentNodeUp);
            GenerateNewRandom(currentNodeUpUp);
            GenerateNewRandom(currentNodeDown);
            GenerateNewRandom(currentNodeDownDown);

            CheckGrid(candiesLinkedList);
            candiesLinkedList.Print();
        }
コード例 #4
0
        private void CrushCandyWithTwoUpCandies(Node currentNodeAfterSwap, DLinked candiesLinkedList)
        {
            Node newCurrentUp   = new Node();
            Node newCurrentUpUp = new Node();
            Node TopNode        = new Node();

            while (TopNode != null)
            {
                //swap current Up
                newCurrentUp   = currentNodeAfterSwap.GetUpNode(currentNodeAfterSwap);
                newCurrentUpUp = newCurrentUp.GetUpNode(newCurrentUp);

                TopNode = newCurrentUpUp.GetUpNode(newCurrentUpUp);

                if (TopNode == null)
                {
                    currentNodeAfterSwap.data.Name = ".";
                    newCurrentUp.data.Name         = ".";
                    newCurrentUpUp.data.Name       = ".";
                    break;
                }
                else
                {
                    currentNodeAfterSwap = SwapNodes(currentNodeAfterSwap, TopNode);
                    Node currentNodeAfterSwapUp = currentNodeAfterSwap.GetUpNode(currentNodeAfterSwap);
                    if (currentNodeAfterSwapUp == null)
                    {
                        currentNodeAfterSwap.data.Name = ".";
                        newCurrentUp.data.Name         = ".";
                        newCurrentUpUp.data.Name       = ".";
                        break;
                    }
                    else
                    {
                        Node currentNodeAfterSwapDown     = currentNodeAfterSwap.GetDownNode(currentNodeAfterSwap);
                        Node currentNodeAfterSwapDownDown = currentNodeAfterSwapDown.GetDownNode(currentNodeAfterSwapDown);
                        currentNodeAfterSwapUp = SwapNodes(currentNodeAfterSwapUp, currentNodeAfterSwapDownDown);
                    }
                }
            }
            Console.WriteLine("finish ");
            candiesLinkedList.Print();
            Console.WriteLine("Generating New Nodes ...: ");
            //generate Random
            GenerateNewRandom(currentNodeAfterSwap);
            GenerateNewRandom(newCurrentUp);
            GenerateNewRandom(newCurrentUpUp);
            CheckGrid(candiesLinkedList);

            candiesLinkedList.Print();
        }
コード例 #5
0
        private void MoveCandyDown(Node currentNode, Node nodeToSwap, DLinked candiesLinkedList, int index, string direction)
        {
            Node currentNodeAfterSwap = new Node();

            if (MatchTwoRightTwoLeft(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 5 * currentNodeAfterSwap.data.Score;
                CrushFiveCandiesHorizontal(currentNodeAfterSwap, candiesLinkedList);
            }
            else if (MatchTwoRightOneLeft(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
            }
            else if (MatchTwoLeftOneRight(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
            }
            else if (MatchTwoDown(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 3 * currentNode.data.Score;
                CrushCandyWithTwoDownCandies(currentNodeAfterSwap, candiesLinkedList);
            }
            else if (MatchTwoRight(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 3 * currentNode.data.Score;
                CrushCandyWithTwoRightCandies(currentNodeAfterSwap, candiesLinkedList);
            }
            else if (MatchTwoLeft(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 3 * currentNode.data.Score;
                CrushCandyWithTwoLeftCandies(currentNodeAfterSwap, candiesLinkedList);
            }
            else if (MatchOneRightOneLeft(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
            }
            else
            {
                DisplayUnmatchedDirection(index, direction, candiesLinkedList);
            }
        }
コード例 #6
0
        public void CandiesGrid()
        {
            DLinked candiesLinkedList = new DLinked();
            Random  rnd = new Random();

            for (int i = 0; i < size; i++)
            {
                Node newNode = new Node();
                newNode.data.Score = rnd.Next(1, 5);
                newNode            = SetNodeName(newNode);

                //int nod = rnd.Next(1, 5);
                //obj.add(nod);
                candiesLinkedList.add(newNode);
                if (i == 0)
                {
                    TopL = candiesLinkedList.head;
                }
                if (i == 24)
                {
                    RDown = candiesLinkedList.tail;
                }
            }

            CheckGrid(candiesLinkedList);
            candiesLinkedList.Print();
            Play(candiesLinkedList);
        }
コード例 #7
0
        private void CrushCandyWithTwoLeftCandies(Node currentNodeAfterSwap, DLinked candiesLinkedList)
        {
            Node newCurrentUp = new Node();

            while (newCurrentUp != null)
            {
                //swap current Up
                newCurrentUp = currentNodeAfterSwap.GetUpNode(currentNodeAfterSwap);
                if (newCurrentUp == null)
                {
                    currentNodeAfterSwap.data.Name           = ".";
                    currentNodeAfterSwap.left.data.Name      = ".";
                    currentNodeAfterSwap.left.left.data.Name = ".";

                    break;
                }
                else
                {
                    currentNodeAfterSwap = SwapNodes(currentNodeAfterSwap, newCurrentUp);

                    //swap current.right up
                    Node currentNodeAfterSwapLeft = currentNodeAfterSwap.left;
                    Node newCurrentRightDown      = currentNodeAfterSwapLeft.GetDownNode(currentNodeAfterSwapLeft);
                    currentNodeAfterSwapLeft = SwapNodes(currentNodeAfterSwapLeft, newCurrentRightDown);


                    //swap current right right up
                    Node currentNodeAfterSwapLeftLeft = currentNodeAfterSwapLeft.left;
                    Node newCurrentRightRightUp       = currentNodeAfterSwapLeftLeft.GetUpNode(currentNodeAfterSwapLeftLeft);
                    currentNodeAfterSwapLeftLeft = SwapNodes(currentNodeAfterSwapLeftLeft, newCurrentRightRightUp);
                }
            }
            Console.WriteLine("finish ");
            candiesLinkedList.Print();
            Console.WriteLine("Generating New Nodes ...: ");
            //generate Random
            GenerateNewRandom(currentNodeAfterSwap);
            GenerateNewRandom(currentNodeAfterSwap.left);
            GenerateNewRandom(currentNodeAfterSwap.left.left);
            CheckGrid(candiesLinkedList);

            candiesLinkedList.Print();
        }
コード例 #8
0
        private void MoveCandyLeft(Node currentNode, Node nodeToSwap, DLinked candiesLinkedList, int index, string direction)
        {
            Node currentNodeAfterSwap = new Node();

            if (MatchTwoUpTwoDown(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 5 * currentNodeAfterSwap.data.Score;
                CrushFiveCandiesVertical(currentNodeAfterSwap, candiesLinkedList);
            }
            else if (MatchTwoLeft(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 3 * currentNodeAfterSwap.data.Score;
                CrushCandyWithTwoLeftCandies(currentNodeAfterSwap, candiesLinkedList);
            }
            else if (MatchTwoUpOneDown(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 4 * currentNodeAfterSwap.data.Score;
                Node currentUp = currentNodeAfterSwap.GetUpNode(currentNodeAfterSwap);
                Node startNode = currentUp.GetUpNode(currentUp);
                CrushFourCandiesVertical(startNode, candiesLinkedList);
            }
            else if (MatchTwoDownOneUp(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 4 * currentNodeAfterSwap.data.Score;
                Node startNode = currentNodeAfterSwap.GetUpNode(currentNodeAfterSwap);
                CrushFourCandiesVertical(startNode, candiesLinkedList);
            }
            else if (MatchTwoUp(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 3 * currentNodeAfterSwap.data.Score;
                CrushCandyWithTwoUpCandies(currentNodeAfterSwap, candiesLinkedList);
            }
            else if (MatchTwoDown(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                candiesLinkedList.Print();
                TotalScore += 3 * currentNodeAfterSwap.data.Score;
                CrushCandyWithTwoDownCandies(currentNodeAfterSwap, candiesLinkedList);
            }
            else if (MatchOneUpOneDown(currentNode, nodeToSwap))
            {
                currentNodeAfterSwap = SwapNodes(currentNode, nodeToSwap);
                TotalScore          += 3 * currentNodeAfterSwap.data.Score;
                Node currentUp = currentNodeAfterSwap.GetUpNode(currentNodeAfterSwap);
                CrushCandyWithTwoDownCandies(currentUp, candiesLinkedList);
            }

            else
            {
                DisplayUnmatchedDirection(index, direction, candiesLinkedList);
            }
        }