Example #1
0
    public void SetAugmentType(string newType)
    {
        type = newType;
        MeshFilter mesh = this.gameObject.GetComponentInChildren <MeshFilter>();

        if (mesh != null)
        {
            mesh.mesh = Towers.GetMesh(Towers.GetAugmentType(newType));
        }

        buildingOffset = -0.02f;
        buildingSpeed  = 10;

        Dictionary <string, float> values = Towers.instance.GetAugment(newType);

        LoadBuildingStats(values);
        LoadAugmentStats(values);

        buildingSpeed = Mathf.Abs(buildingOffset / buildingSpeed);
        if (building == Building.no)
        {
            modelObject.transform.Translate(new Vector3(0, buildingOffset, 0), Space.World);
            building = Building.yes;
        }
    }
Example #2
0
        public void ThrowsException_WhenFromNToAreSame()
        {
            int    discs = 3;
            Towers t1    = new Towers(discs);

            Assert.ThrowsException <InvalidMoveException>(() => t1.Move(1, 1));
        }
Example #3
0
 public static void GameComplete(Towers pMyTowers, int pFrom, int pTo, Stack <MoveRecord> pUndoStack, Stack <MoveRecord> pRedoStack)
 {
     if (pMyTowers.IsComplete)
     {
         WriteLine($"\nCongratulations, you completed the puzzle in {pMyTowers.NumberOfMoves} moves.");
         if (pMyTowers.MinimumPossibleMoves == pMyTowers.NumberOfMoves)
         {
             WriteLine($"\nThat's the fewest number of moves possible. I ANOINT YOU THE RULER OF HANOI!");
         }
         else
         {
             WriteLine($"\nYou completed the puzzle in {pMyTowers.NumberOfMoves} moves but the fewest possible is {pMyTowers.MinimumPossibleMoves}");
             WriteLine("\nLet's give it another shot. What do you say?");
         }
     }
     else if (pFrom == -2) // redo
     {
         MoveRecord redoMoveDetails = pUndoStack.Peek();
         WriteLine($"\nMove {pMyTowers.NumberOfMoves} complete by redo of move {pMyTowers.NumberOfMoves - 1}. Disc {redoMoveDetails.Disc} restored to tower {redoMoveDetails.To} from tower {redoMoveDetails.From}.");
     }
     else if (pFrom == -3) // undo
     {
         MoveRecord undoMoveDetails = pRedoStack.Peek();
         WriteLine($"\nMove {pMyTowers.NumberOfMoves} complete by undo of move {undoMoveDetails.MoveNumber}. Disc {undoMoveDetails.Disc} restored to tower {undoMoveDetails.From} from tower {undoMoveDetails.To}.");
     }
     else
     {
         WriteLine($"\nMove {pMyTowers.NumberOfMoves} complete. Successfully moved disc {pUndoStack.Peek().Disc} from tower {pFrom} to tower {pTo}.");
     }
 }
Example #4
0
        static void Main(string[] args)
        {
            /*
             *  Tower Defense
             * Towers/Torn
             * direktion
             * Fire Rate/"eldhastighet"
             * Kill Counter/Slaktar Räknare
             * Hp/Liv
             * Enemies/Fiender
             * mängd
             *
             * Pengar?
             */
            Towers  t = new Towers();
            Enemies E = new Enemies();

            t.name1 = "firetower";

            E.Alive = 3;

            Console.WriteLine(t);

            Console.ReadLine();
        }
Example #5
0
 public void AddTower(int id)
 {
     if (GetTower(id) == null)
     {
         Towers.Add(new Tower(this, id));
     }
 }
Example #6
0
        public ActionResult DeleteTower(Towers tower)
        {
            Data_access da      = new Data_access();
            int         towerId = da.DeleteTower(tower);

            TextWriter writer; //для записи в .json-файл
            JObject    parsed; //распаршенный json

            using (StreamReader r = new StreamReader(Server.MapPath("/Content/data.json")))
            {
                string json  = r.ReadToEnd();                                 //считываем и записываем в строку
                var    items = JsonConvert.DeserializeObject <JObject>(json); //десериализуем строку
                parsed = JObject.Parse(json);

                for (int i = 0; i < parsed["features"].Count(); i++)
                {
                    var idInJson = (int)parsed["features"][i]["id"];
                    if (idInJson == towerId)
                    {
                        parsed["features"][i].Remove();
                    }
                }
            }

            using (writer = new StreamWriter(Server.MapPath("/Content/data.json"), append: false))
            {
                writer.WriteLine(JsonConvert.SerializeObject(parsed, Formatting.Indented)); //перезаписываем файл data.json
            }

            return(Json("Опора успешно удалена!"));
        }
Example #7
0
    public void SetBuilding(string buildingType)
    {
        buildingOffset    = -0.02f;
        buildingSpeed     = 10;
        this.buildingType = buildingType;

        this.gameObject.name = buildingType;

        LoadBuildingStats(Towers.instance.GetBuilding(buildingType));

        MeshFilter buildingMesh = this.gameObject.GetComponentInChildren <MeshFilter>();

        if (buildingMesh != null)
        {
            buildingMesh.mesh = Towers.GetMesh(GetBuildingType(buildingType));
        }
        buildingSpeed = Mathf.Abs(buildingOffset / buildingSpeed);
        //modelObject.transform.Translate(new Vector3(0, buildingOffset, 0), Space.World);
        if (building == Building.no)
        {
            modelObject.transform.Translate(new Vector3(0, buildingOffset, 0), Space.World);
            building = Building.yes;
        }
        if (buildingType == "base")
        {
            GameObject goal = new GameObject("Goal");
            goal.transform.position = this.transform.position;
            TerrainGen.goal         = goal;
            GetComponentInChildren <MeshCollider>().sharedMesh = Towers.baseColl;
        }
        health = maxHealth;
    }
Example #8
0
        public void ThrowsException_WhenFromTowerHaveNoDiscs()
        {
            int    discs = 3;
            Towers t1    = new Towers(discs);

            Assert.ThrowsException <InvalidMoveException>(() => t1.Move(2, 1));
        }
    void Start()
    {
        platformController = PlatformController.Instance;

        towers      = Towers.Instance;
        playerStats = PlayerStats.Instance;
    }
Example #10
0
        public void ReturnsJaggedArrayCorrectly_WhenMoveSuccessfully()
        {
            // Arrange
            Towers sa = new Towers(5);

            int[][] towers;
            int[][] asExpected = new int[][]
            {
                new int[] { 2, 3, 4, 5 },
                new int[] { 1 },
                new int[] { }
            };
            bool result = true;

            sa.Move(0, 1);

            // Act
            towers = sa.ToArray();

            // Assert
            for (int i = 0; i < towers.Length; i++)
            {
                for (int j = 0; j < towers[i].Length; j++)
                {
                    if (towers[i][j] != asExpected[i][j])
                    {
                        result = false;
                    }
                }
            }
            Assert.IsTrue(result);
        }
Example #11
0
        private static int AutoPlay(Towers myTowers, string input)
        {
            int    from      = 1;
            int    to        = 3;
            int    other     = 2;
            string algorithm = input;

            if (algorithm == "A")
            {
                Recursive(myTowers, myTowers.NumberOfDiscs, from, to, other);
            }
            else
            {
                Iterative(myTowers, myTowers.NumberOfDiscs, from, to, other);
                WriteLine();
                WriteLine();
                if (myTowers.IsComplete == false)
                {
                    Write("Step-through aborted. ");
                }
                else
                {
                    Write("Step-through completed. ");
                }
            }
            WriteLine($"Number of moves: {myTowers.NumberOfMoves}");
            WriteLine();

            PostGameReview(myTowers);
            WriteLine();
            WriteLine();

            return(AskForPlayAgain());
        }
 public void Tear_RemovesDisksFromTowers()
 {
     var towers = new Towers();
     towers.Clear();
     towers.Tower1.Count.ShouldEqual(0);
     towers.Tower2.Count.ShouldEqual(0);
     towers.Tower3.Count.ShouldEqual(0);
 }
Example #13
0
        public Castle AddTower()
        {
            var tower = new Tower();

            Destructables.Add(tower);
            Towers.Add(tower);
            return(this);
        }
Example #14
0
    public Towers TowerState;    // A copy of the Towers object (all three stacks) as of the end of the move.

    public MoveRecord(int moveNumber, int disc, int from, int to, Towers towers)
    {
        this.MoveNumber = moveNumber;
        this.Disc       = disc;
        this.From       = from;
        this.To         = to;
        this.TowerState = towers;
    }
Example #15
0
    public static void CreateTowersAssetFile()
    {
        Towers asset = CustomAssetUtility.CreateAsset <Towers>();

        asset.SheetName     = "gogtowerdefence";
        asset.WorksheetName = "Towers";
        EditorUtility.SetDirty(asset);
    }
Example #16
0
        public string[] GetAllMoves(int disks)
        {
            // cunoscand A, B, C turnuri: 1 disc = AB; 2 discuri = AC, AB, CB; 3 discuri = AB, AC, BC, AB, CA, CB si AB; 4 discuri ..., mutari = (AC discuri - 1) + AB + (CB discuri - 1) => (2 ^ n) - 1
            Towers towers = new Towers( "A", "B", "C");
            string[] moves = new string[0];

            return DoAllSteps(towers, disks, moves);
        }
Example #17
0
 public void DeactivateTower()
 {
     type       = null;
     damage     = 0;
     currentlvl = 1;
     range      = 0;
     price      = 0;
 }
Example #18
0
        public void ThrowsException_WhenFrom_To_RangeInvalid()
        {
            int    discs = 3;
            Towers t1    = new Towers(discs);

            Assert.ThrowsException <InvalidMoveException>(() => t1.Move(4, 1));
            Assert.ThrowsException <InvalidMoveException>(() => t1.Move(0, 3));
        }
Example #19
0
        public void ThrowException_WhenInputsAreInvalid()
        {
            // Arrange
            Towers sa = new Towers(5);

            // Act-Assert
            Assert.ThrowsException <InvalidMoveException>(() => sa.Move(2, 1));
        }
Example #20
0
        public static void DisplayTowers(Towers towers)
        {
            //Calculate tower width.  We'll make each disc twice as wide as its number, plus 1 so the pole can go up the middle
            int[][]    poles;
            string[][] poleDiscs = new string[NumberOfPoles][];
            string     rowToPrint;
            int        posX, posY;

            int    towerWidth  = (towers.NumberOfDiscs * 2 + 1);
            string towerBase   = new string('=', towerWidth * 3);
            int    towerHeight = towers.NumberOfDiscs + 2;

            DisplayTowerTop(towerWidth);

            poles = towers.ToArray();       //Returns a jagged array - Dim 1 - 3 poles, Dim 2 - n discs on each pole

            //
            //Load one array per pole with the visualization of the discs on each pole
            //

            for (int i = 0; i < NumberOfPoles; i++)
            {
                poleDiscs[i] = new string[towers.NumberOfDiscs];
                posY         = poleDiscs[i].Length - 1;

                int stackIndex = poles[i] == null ? -1 : poles[i].Length - 1;
                while (stackIndex >= 0)
                {
                    poleDiscs[i][posY] = new string('X', poles[i][stackIndex] * 2 + 1);
                    posY--;
                    stackIndex--;
                }
            }


            //Now to print the contents of the three pole arrays one line at a time.

            for (posY = 0; posY < towers.NumberOfDiscs; posY++)   //Iterate from the top of the poles to the base, by column then by row.
            {
                rowToPrint = "";

                for (posX = 0; posX < NumberOfPoles; posX++)
                {
                    if (poleDiscs[posX][posY] == null)
                    {
                        rowToPrint = FormatRow(rowToPrint, TowerPole, towerWidth);
                    }
                    else
                    {
                        rowToPrint = FormatRow(rowToPrint, poleDiscs[posX][posY], towerWidth);
                    }
                }
                WriteLine(rowToPrint);
            }
            WriteLine(towerBase);
            InitializeTextArea();
            WriteLine();
        }
Example #21
0
    /// <summary>
    /// Places towers on the field
    /// </summary>
    /// <param name="tower">Which tower</param>
    public void CreateTower(Towers tower)
    {
        //Load from resources then instantiate copy - KC
        GameObject prefab = Resources.Load <GameObject>(tower.name);

        GameObject.Instantiate(prefab, new Vector3(0, 1, 0), Quaternion.identity);
        GameEngine.User.UpdateCoins(-tower.Cost);
        GameEngine.UI.UpdateDefensesButton(tower.Cost);
    }
Example #22
0
        public void ThrowException_WhenInputIsInvalid()
        {
            // Arrange
            Towers sa;
            int    input = 10;

            // Act-Assert
            Assert.ThrowsException <InvalidHeightException>(() => sa = new Towers(input));
        }
        public void StartGame()
        {
            CurrentLevel = 1;
            CurrentScore = 0;
            Towers.Clear();
            Levels.Clear();

            PrintWelcome();                 // Print Welcome-Screen and Highscore
            SetDifficulty();                // Set difficulty and generate map & path
            AskToPlaceTowers();             // Ask player to place tower
            GenerateInvaderAndLevels();     // Generate all levels with their relative invaders

            try
            {
                // Run all levels, calculate score and increase towerpoints
                // After each level player can place more towers
                foreach (var level in Levels)
                {
                    level.Towers = Towers.ToArray();
                    if (level.Play())
                    {
                        foreach (var invader in level._invaders)
                        {
                            CurrentScore += invader.Score;
                        }
                        CurrentScore += 5;
                        Console.WriteLine("Level {0} completed, you earned {1} points!", CurrentLevel, CurrentScore);
                        CurrentLevel++;
                        continue;
                    }
                    else
                    {
                        Console.WriteLine();
                        Console.WriteLine("Game Over - You have lost!");
                        Console.WriteLine("You have reached level {0}", CurrentLevel);
                        Console.Write("Play again? (y/n): ");
                        if (Console.ReadKey().Key == ConsoleKey.Y)
                        {
                            StartGame();
                        }
                        else
                        {
                            throw new Exception("Game Over!");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // GameOver();
                // CheckForHighscore();
                Console.WriteLine(ex);
                SaveHighscore();
            }

        }
        /// <summary>
        /// Buys given tower and places it on the map. Buying a tower resets the SelectedShopTower.
        /// If the player does not have enough money, no tower will be placed and SelectedShopTower
        /// will still be reset.
        /// </summary>
        /// <param name="tower">Instance of a tower to be placed</param>
        public void BuyTower(ITower tower)
        {
            if (Money >= tower.Price)
            {
                Towers.Add(tower);
                Money -= tower.Price;
            }

            DeselectShopTower();
        }
Example #25
0
        public void HaveAllDiscsInTowerOne_WhenCreatedSuccessfully()
        {
            int    discs = 5;
            Towers t1    = new Towers(discs);

            int[][] towers = t1.ToArray();

            Assert.AreEqual(towers.Length, 3);        // # of towers
            Assert.AreEqual(towers[0].Length, discs); // 1st tower has all discs
        }
Example #26
0
 public void UpgradeTower()
 {
     towers = towerSpawner.PickableGameObject.gameObject.GetComponent <TowerArack>().towers;
     if (statistics.Gold >= towers.NextUpgrate.BuildPrice && towers.NextUpgrate != null)
     {
         upgradePanel.SetActive(false);
         towerSpawner.PickableGameObject.GetComponent <TowerArack>().Upgrade();
         statistics.Gold -= towerSpawner.PickableGameObject.GetComponent <TowerArack>().towers.BuildPrice;
     }
 }
Example #27
0
        public void ThrowsException_WhenFromDiscIsGreaterThanToTopDisc()
        {
            int    discs = 3;
            Towers t1    = new Towers(discs);

            t1.Move(1, 3);

            // Trying to move 2 on top of 1
            Assert.ThrowsException <InvalidMoveException>(() => t1.Move(1, 3));
        }
Example #28
0
 // END CUT HERE
 // BEGIN CUT HERE
 public static void Main()
 {
     try {
     Towers ___test = new Towers();
     ___test.run_test(-1);
     } catch(Exception e) {
     //Console.WriteLine(e.StackTrace);
     Console.WriteLine(e.ToString());
     }
 }
Example #29
0
// END CUT HERE
// BEGIN CUT HERE
    public static void Main()
    {
        try {
            Towers ___test = new Towers();
            ___test.run_test(-1);
        } catch (Exception e) {
//Console.WriteLine(e.StackTrace);
            Console.WriteLine(e.ToString());
        }
    }
Example #30
0
        public static void IterativeAutoSolve(Towers poles, int discs, Queue <MoveRecord> moveLog, int pTower1, int pTower2, int pTower3)
        {
            MoveRecord tempMoveRecord;
            string     userInput;
            bool       done = false;

            if (discs % 2 == 0)
            {
                int temp = pTower3;
                pTower3 = pTower2;
                pTower2 = temp;
            }


            do
            {
                for (int i = 1; i <= poles.MinimumPossibleMoves; i++)
                {
                    if (i % 3 == 1)
                    {
                        tempMoveRecord = MoveBetweenPoles(poles, pTower1, pTower3);
                        moveLog.Enqueue(tempMoveRecord);
                        TowerUtilities.DisplayTowers(poles);
                        Console.WriteLine($"\nMove {poles.NumberOfMoves}. Successfully moved disc from pole {pTower1} to pole {pTower3}.");
                    }
                    else if (i % 3 == 2)
                    {
                        tempMoveRecord = MoveBetweenPoles(poles, pTower1, pTower2);
                        moveLog.Enqueue(tempMoveRecord);
                        TowerUtilities.DisplayTowers(poles);
                        Console.WriteLine($"\nMove {poles.NumberOfMoves}. Successfully moved disc from pole {pTower1} to pole {pTower3}.");
                    }
                    else if (i % 3 == 0)
                    {
                        tempMoveRecord = MoveBetweenPoles(poles, pTower2, pTower3);
                        moveLog.Enqueue(tempMoveRecord);
                        TowerUtilities.DisplayTowers(poles);
                        Console.WriteLine($"\nMove {poles.NumberOfMoves}. Successfully moved disc from pole {pTower1} to pole {pTower3}.");
                    }



                    Console.WriteLine("\nPress Enter to move to the next step or \"X\" to quit.");
                    userInput = Console.ReadKey().Key.ToString().ToUpper();


                    if (userInput.ToUpper() == "X")
                    {
                        done = true;
                        break;
                    }
                }
                done = true;
            } while (!done);
        }
 Stack<int> GetTower(Towers Tower)
 {
     switch (Tower)
     {
         case Towers.Left:
             return _tower1;
         case Towers.Middle:
             return _tower2;
     }
     return _tower3;
 }
Example #32
0
        public Tower GetTower(int id)
        {
            List <Tower> towers = Towers.Where(tower1 => tower1.Number == id).ToList();

            if (towers.Any())
            {
                return(towers.First());
            }

            return(null);
        }
Example #33
0
    void SetButtonInfo(TextMeshProUGUI costText, GameObject button, Towers tower)
    {
        var newSpriteState = new SpriteState();

        costText.text = "$" + TowerManager.Instance.GetTowerInfo(tower).price.ToString();
        button.GetComponent <Image>().sprite       = TowerManager.Instance.GetTowerInfo(tower).buttonBaseSprite;
        newSpriteState.disabledSprite              = TowerManager.Instance.GetTowerInfo(tower).buttonDisabledSprite;
        newSpriteState.highlightedSprite           = TowerManager.Instance.GetTowerInfo(tower).buttonHighlightSprite;
        newSpriteState.pressedSprite               = TowerManager.Instance.GetTowerInfo(tower).buttonPressedSprite;
        button.GetComponent <Button>().spriteState = newSpriteState;
    }
Example #34
0
            public DrillTower GetDrillTower(string designation)
            {
                if (designation?.Length != 1)
                {
                    return(null);
                }
                DrillTower tower;

                Towers.TryGetValue(designation, out tower);
                return(tower);
            }
Example #35
0
        private string[] DoAllSteps(Towers towers, int disks, string[] moves)
        {
            if(disks == 1)
                moves = AddNewMove(moves, towers.From +""+ towers.To);
            else
            {
                // A > C
                Towers fromAtoC = new Towers(towers.From, towers.Helper, towers.To);// new Towers("A", "C", "B");
                moves = DoAllSteps(fromAtoC, disks - 1, moves);
                moves = AddNewMove(moves, towers.From + "" + towers.To);
                // C > B
                Towers fromCtoB = new Towers(towers.Helper, towers.To, towers.From);// new Towers("C", "B", "A");
                moves = DoAllSteps(fromCtoB, disks - 1, moves);
            }

            return moves;
        }
        public bool Move(Towers From, Towers To)
        {
            var fromTower = GetTower(From);
            var toTower = GetTower(To);

            if (fromTower.Count < 1)
                return false;

            var fromStep = fromTower.Peek();

            var toStep = toTower.Count < 1 ? 10 : toTower.Peek();

            if (fromStep >= toStep)
                return fromStep == toStep;

            toTower.Push(fromTower.Pop());

            return true;
        }
        public IReadOnlyList<int> this[Towers Tower]
        {
            get
            {
                switch (Tower)
                {
                    case Towers.Left:
                        return _tower1.ToList();

                    case Towers.Middle:
                        return _tower2.ToList();

                    case Towers.Right:
                        return _tower3.ToList();

                    default:
                        return null;
                }
            }
        }
 public int GetStep(Towers From)
 {
     var fromTower = GetTower(From);
     return fromTower.Count < 1 ? 0 : fromTower.Peek();
 }
 void Awake()
 {
     instance = this;
 }
Example #40
0
            public Tower(Towers tower, MainEncounterLogic caller, TriggeredAbility ability)
            {
                whichTower = tower;
                parent = caller;
                warningAbility = ability;
                nextTick = new TriggeredAbility();

                nextTick.warningTime = TimeSpan.Zero;
                nextTick.warningCallback = this.tick;

                parent.timedAbilities.Add(warningAbility);
                parent.timedAbilities.Add(nextTick);
            }
 public override void step(Towers.Tower tower)
 {
     tower.stats.stunned = true;
 }