Beispiel #1
0
        public void CheckWhoWonTest2()
        {
            TurnSystem.InitializeData();

            for (int i = 0; i < CheckerManager.BrownCheckers.Length; i++)
            {
                GameObject gameObj  = CheckerManager.BrownCheckers[i].GameObj;
                Vector3    finalPos = gameObj.transform.position;
                finalPos.y = 100;
                gameObj.transform.position = Vector3.Lerp(gameObj.transform.position, finalPos, 100);
            }
            string result = GameMechanics.CheckWhoWon();

            GameMechanics.ResetGame();

            Assert.AreEqual("Blue", result);
        }
Beispiel #2
0
        public void SelectCheckerTest2()
        {
            TurnSystem.InitializeData();

            CheckerManager.DeselectCheckers();
            Checker testObj = CheckerManager.BrownCheckers[0];

            CheckerManager.SelectChecker(testObj.GameObj);
            CheckerManager.SelectChecker(testObj.GameObj);

            float yPosition = testObj.GameObj.transform.position.y;


            GameMechanics.ResetGame();

            Assert.AreEqual(0.3f, yPosition);
        }
Beispiel #3
0
        public void SomeoneWinTest3()
        {
            TurnSystem.InitializeData();

            for (int i = 0; i < CheckerManager.BlueCheckers.Length; i++)
            {
                GameObject gameObj  = CheckerManager.BlueCheckers[i].GameObj;
                Vector3    finalPos = gameObj.transform.position;
                finalPos.y = 100;

                gameObj.transform.position = Vector3.Lerp(gameObj.transform.position, finalPos, 100);
            }
            bool result = GameMechanics.SomeoneWin();

            GameMechanics.ResetGame();

            Assert.AreEqual(true, result);
        }
Beispiel #4
0
        public void Test_HandleInput_WhenUpIsPressed()
        {
            Mock <IBlock> currentBlock = new Mock <IBlock>();

            Mock <IBlockFactory> factory = new Mock <IBlockFactory>();

            factory.Setup(f => f.MakeBlock()).Returns(currentBlock.Object);

            Mock <IField> field = new Mock <IField>();

            GameMechanics currentSubject = new GameMechanics(field.Object, factory.Object);

            currentSubject.NextBlock();

            List <Keys> input = new List <Keys> {
                Keys.Up
            };

            currentSubject.HandleInput(input);
            currentBlock.Verify(b => b.RotateRight());
        }
Beispiel #5
0
        public void IsAnyMovePossibleTest6()
        {
            TurnSystem.InitializeData();

            GameMechanics.Move(CheckerManager.BrownCheckers[0].GameObj, new Vector3(1, 0, 7));
            GameMechanics.Move(CheckerManager.BrownCheckers[1].GameObj, new Vector3(3, 0, 7));
            GameMechanics.Move(CheckerManager.BrownCheckers[2].GameObj, new Vector3(5, 0, 7));
            GameMechanics.Move(CheckerManager.BrownCheckers[3].GameObj, new Vector3(7, 0, 7));
            GameMechanics.Move(CheckerManager.BrownCheckers[4].GameObj, new Vector3(9, 0, 7));

            GameMechanics.Move(CheckerManager.BrownCheckers[5].GameObj, new Vector3(2, 0, 6));
            GameMechanics.Move(CheckerManager.BrownCheckers[6].GameObj, new Vector3(4, 0, 6));
            GameMechanics.Move(CheckerManager.BrownCheckers[7].GameObj, new Vector3(6, 0, 6));
            GameMechanics.Move(CheckerManager.BrownCheckers[8].GameObj, new Vector3(8, 0, 6));
            GameMechanics.Move(CheckerManager.BrownCheckers[9].GameObj, new Vector3(10, 0, 6));

            bool result = GameMechanics.IsAnyMovePossible("Blue");

            GameMechanics.ResetGame();

            Assert.AreEqual(false, result);
        }
Beispiel #6
0
        public void EndTurnTest2()
        {
            TurnSystem.InitializeData();

            GameMechanics.Move(CheckerManager.BrownCheckers[0].GameObj, new Vector3(1, 0, 7));
            GameMechanics.Move(CheckerManager.BrownCheckers[1].GameObj, new Vector3(3, 0, 7));
            GameMechanics.Move(CheckerManager.BrownCheckers[2].GameObj, new Vector3(5, 0, 7));
            GameMechanics.Move(CheckerManager.BrownCheckers[3].GameObj, new Vector3(7, 0, 7));
            GameMechanics.Move(CheckerManager.BrownCheckers[4].GameObj, new Vector3(9, 0, 7));

            GameMechanics.Move(CheckerManager.BrownCheckers[5].GameObj, new Vector3(2, 0, 6));
            GameMechanics.Move(CheckerManager.BrownCheckers[6].GameObj, new Vector3(4, 0, 6));
            GameMechanics.Move(CheckerManager.BrownCheckers[7].GameObj, new Vector3(6, 0, 6));
            GameMechanics.Move(CheckerManager.BrownCheckers[8].GameObj, new Vector3(8, 0, 6));
            GameMechanics.Move(CheckerManager.BrownCheckers[9].GameObj, new Vector3(10, 0, 6));

            TurnSystem.EndTurn();
            string result = GameObject.Find("PlayerWinsText").GetComponent <TMPro.TextMeshPro>().text;

            GameMechanics.ResetGame();

            Assert.AreEqual("Brown player wins", result);
        }
Beispiel #7
0
 public void Awake()
 {
     Instance = this;
 }
Beispiel #8
0
 void Awake()
 {
     GM  = Camera.main.GetComponent <GameManager> ();
     GMX = Camera.main.GetComponent <GameMechanics> ();
 }
Beispiel #9
0
        public static void InitializeGame()
        {
            Console.Clear();

            IDifficulty difficulty;

            if (GameData.Difficulty == "Hard")
            {
                difficulty = new HardDifficulty();
            }
            else if (GameData.Difficulty == "Medium")
            {
                difficulty = new MediumDifficulty();
            }
            else
            {
                GameData.Difficulty = "Easy";
                difficulty          = new EasyDifficulty();
            }

            IInterfaceBuilder interfaceBuilder;

            if (GameData.InterfaceBuilder == "Mathemathics")
            {
                interfaceBuilder = new MathemathicsInterfaceBuilder();
            }
            else if (GameData.InterfaceBuilder == "Rainbow")
            {
                interfaceBuilder = new RainbowInterfaceBuilder();
            }
            else
            {
                interfaceBuilder = new DefaultInterfaceBuilder();
            }

            GameData.pause = new Pause();

            GameData.GameMechanics = new Mechanics(GameData.pause);

            PlayerStatusTracker playerStatusTracker = new PlayerStatusTracker(GameData.pause);

            GameData.SetGraphics(interfaceBuilder);
            Console.SetCursorPosition(105, 22);
            Console.Write("Difficulty: " + difficulty.ToString());
            Console.CursorVisible = false;

            GameData.gameMap = new char[50, 130];
            for (int i = 0; i < 50; i++)
            {
                for (int j = 0; j < 130; j++)
                {
                    GameData.gameMap[i, j] = ' ';
                }
            }

            GameData.TankZombieModel = new TankZombieModel(new char[4] {
                '¥', '¥', '¥', '¥'
            }, ConsoleColor.Green, GameData.BackgroundColor);
            GameData.NormalZombieModel = new NormalZombieModel(new char[4] {
                '@', '@', '@', '@'
            }, ConsoleColor.Green, GameData.BackgroundColor);
            GameData.HunterZombieModel = new HunterZombieModel(new char[4] {
                'x', 'x', 'x', 'x'
            }, ConsoleColor.Green, GameData.BackgroundColor);
            GameData.HealthPackModel = new HealthPackModel(new char[4] {
                '+', '+', '+', '+'
            }, ConsoleColor.Red, GameData.BackgroundColor);
            GameData.AmmoPackModel = new AmmoPackModel(new char[4] {
                '#', '#', '#', '#'
            }, ConsoleColor.Red, GameData.BackgroundColor);
            GameData.Ak47Model = new AK47Model(new char[4] {
                'A', 'A', 'A', 'A'
            }, ConsoleColor.Red, GameData.BackgroundColor);
            GameData.SniperRifleModel = new SniperRifleModel(new char[4] {
                'S', 'S', 'S', 'S'
            }, ConsoleColor.Red, GameData.BackgroundColor);
            GameData.PistolBulletModel = new PistolBulletModel(new char[4] {
                '.', '.', '.', '.'
            }, ConsoleColor.White, GameData.BackgroundColor);
            GameData.AK47BulletModel = new AK47BulletModel(new char[4] {
                '°', '°', '°', '°'
            }, ConsoleColor.White, GameData.BackgroundColor);
            GameData.SniperRifleBulletModel = new SniperRifleBulletModel(new char[4] {
                '│', '─', '│', '─'
            }, ConsoleColor.White, GameData.BackgroundColor);
            GameData.PlayerModel = new PlayerModel(new char[4] {
                '^', '>', 'v', '<'
            }, ConsoleColor.Green, GameData.BackgroundColor);

            GameData.ZombieAtPosition = new Dictionary <Position, Zombie>();
            GameData.DropAtPosition   = new Dictionary <Position, Drop>();

            GameData.Player = Player.GetPlayer();

            Player.Name        = GameData.PlayerName;
            Player.PlayerModel = new PlayerModel(new char[4] {
                '^', '>', 'v', '<'
            }, ConsoleColor.Green, GameData.BackgroundColor);
            Player.Score     = 0;
            Player.Position  = new Position(65, 25);
            Player.Health    = 100;
            Player.Direction = Direction.DOWN;
            Player.Weapons   = new List <Weapon>()
            {
                new Pistol()
            };
            Player.CurrentWeapon = Player.Weapons.ElementAt(0);
            GameData.DisplayModelAtPosition(Player.Position, Player.Position, Player.PlayerModel, Direction.DOWN, true);

            GameData.ReloadEvent                    = new ManualResetEvent(false);
            GameData.JumpWait                       = new ManualResetEvent(false);
            GameData.PauseGameEvent                 = new ManualResetEvent(false);
            GameData.PlayerHealthStatusEvent        = new ManualResetEvent(false);
            GameData.KeyInfoWaitEvent               = new ManualResetEvent(false);
            GameData.PlayerAmmoStatusEvent          = new ManualResetEvent(false);
            GameData.PlayerCurrentWeaponStatusEvent = new ManualResetEvent(false);
            GameData.PlayerScoreStatusEvent         = new ManualResetEvent(false);

            Player.IsReloaded   = true;
            GameData.threadList = new List <Thread>();

            Thread playerScoreStatusThread         = new Thread(() => playerStatusTracker.TrackPlayerScoreStatus());
            Thread playerCurrentWeaponStatusThread = new Thread(() => playerStatusTracker.TrackPlayerCurrentWeaponStatus());
            Thread playerAmmoStatusThread          = new Thread(() => playerStatusTracker.TrackPlayerAmmoStatus());
            Thread playerHealthStatusThread        = new Thread(() => playerStatusTracker.TrackPlayerHealthStatus());
            Thread reloadWeaponThread = new Thread(() => GameMechanics.ReloadWeapon());
            Thread zombieMaker        = new Thread(() => new ZombieMaker(difficulty, GameData.pause).MakeZombies());
            Thread start = new Thread(() => GameData.GameMechanics.StartGame());

            GameData.AddThread(playerScoreStatusThread);
            GameData.AddThread(playerCurrentWeaponStatusThread);
            GameData.AddThread(playerAmmoStatusThread);
            GameData.AddThread(playerHealthStatusThread);
            GameData.AddThread(reloadWeaponThread);
            GameData.AddThread(zombieMaker);

            playerScoreStatusThread.Start();
            playerCurrentWeaponStatusThread.Start();
            playerAmmoStatusThread.Start();
            playerHealthStatusThread.Start();
            reloadWeaponThread.Start();
            zombieMaker.Start();
            start.Start();
        }
Beispiel #10
0
 private async Task SendNewTagPositionToAllClients()
 {
     PersistingValues.TagItem = GameMechanics.GetNewTagItem();
     await _hub.Clients.All.SendAsync("newTag", PersistingValues.TagItem);
 }
Beispiel #11
0
 public async Task BroadcastDigMessage(int positionX, int positionY) => await Clients.All.SendAsync("broadcastDigMessage", GameMechanics.GetDigResponse(positionX, positionY));
Beispiel #12
0
 private void SelectTarget()
 {
     target = GameMechanics.SelectPlayerAsTarget();
 }
    //Update is called once per frame
    void Update()
    {
        //Set checkers color depending on their state
        MaterialsManager.SetMaterialsToDefault(this);

        //If player cursor points on clickable object
        RaycastHit hit;

        if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100, clickableLayer.value))
        {
            //Assign pointed object to variable
            GameObject selectedObject = hit.collider.gameObject;

            //Change cursor texture to "clickable" and change pointed checker color to white
            CursorManager.SetCursorToClickablePointer(this);
            MaterialsManager.ChangeObjectMaterialTo(this, selectedObject, 4);

            //If left mouse button was clicked
            if (Input.GetMouseButtonDown(0))
            {
                if (selectedObject.tag == "Exit")
                {
                    GameMechanics.Exit();
                }

                if (selectedObject.tag == "Restart")
                {
                    TurnSystem.StartGame();
                }

                //If player tries to move or jump
                if (selectedObject.tag == "Field" && GameMechanics.AnyCheckerIsSelected())
                {
                    //Distance variable measures distance between selected checker, and field on which player wants to move
                    //Basing on that distance, you can check if player tries to move or jump
                    double distance = Vector3.Distance(CheckerManager.SelectedChecker().GameObj.transform.position, selectedObject.transform.position);

                    //If player tries to move
                    if (distance < 1.65f)
                    {
                        //If its players first move allow to move, otherwise if player already jumped, allow only next jumps(if they are possible)
                        if (TurnSystem.FirstMove)
                        {
                            //Player have to always jump if its possible
                            if (GameMechanics.IsAnyJumpPossible(CheckerManager.SelectedChecker().PlayerColor))
                            {
                                Debug.Log("You have to jump.");
                            }

                            //If its first move and move is allowed, move player
                            else
                            if (GameMechanics.IsMovePossible(CheckerManager.SelectedChecker().GameObj, selectedObject))
                            {
                                GameMechanics.Move(CheckerManager.SelectedChecker().GameObj, selectedObject.transform.position);
                                TurnSystem.EndTurn();
                            }
                        }

                        //If player already jumped and tries to move instead of jumping
                        else
                        {
                            Debug.Log("You have to jump.");
                        }
                    }

                    //If player tries to jump
                    if (distance > 1.65f && distance < 2.95f)
                    {
                        if (GameMechanics.IsJumpPossible(CheckerManager.SelectedChecker().GameObj, selectedObject))
                        {
                            CheckerManager.RemoveEnemyBetween(CheckerManager.SelectedChecker().GameObj, selectedObject);
                            GameMechanics.Move(CheckerManager.SelectedChecker().GameObj, selectedObject.transform.position);
                            TurnSystem.FirstMove = false;

                            //If selected checker after previous jump can do another jump, dont end turn and let user know that next move is possible
                            if (GameMechanics.CanCheckerJump(CheckerManager.SelectedChecker()))
                            {
                                Debug.Log("Next move is possible");
                            }

                            else
                            {
                                TurnSystem.EndTurn();
                            }
                        }
                    }
                }

                //If player didn't click on selected checker, deselect previous selected checker
                if (GameMechanics.AnyCheckerIsSelected() && CheckerManager.SelectedChecker().GameObj != selectedObject)
                {
                    CheckerManager.DeselectCheckers();
                }

                CheckerManager.SelectChecker(selectedObject);
            }
        }

        //If cursor doesn't point on anything clickable
        else
        {
            CursorManager.SetCursorToNormalPointer(this);

            if (Input.GetMouseButtonDown(0))
            {
                CheckerManager.DeselectCheckers();
            }
        }
    }
Beispiel #14
0
 void Start()
 {
     GameMechanics.generateLevel(maxSize, spherePrefab);
 }
Beispiel #15
0
 public async Task BroadcastMapInfo(bool generateNewMap, int?mapSizeX = null, int?mapSizeY = null, int?obstacleAmountMin = null, int?obstacleAmountMax = null, int?soilAmountMin = null, int?soilAmountMax = null)
 => await Clients.All.SendAsync("broadcastMapInfo", GameMechanics.GetMapInfo(generateNewMap, mapSizeX, mapSizeY, obstacleAmountMin, obstacleAmountMax, soilAmountMin, soilAmountMax));
Beispiel #16
0
 // Use this for initialization
 void Start()
 {
     gm = GameObject.FindWithTag ("Mechanics").GetComponent<GameMechanics> ();
 }
Beispiel #17
0
 private void Awake()
 {
     Mechanics = this;
 }
Beispiel #18
0
 void OnDisable()
 {
     instance = null;
 }
Beispiel #19
0
 public void GetObstaclesShouldGenerateNewObstacles()
 {
     GameMechanics.GetObstacles(true);
     PersistingValues.Obstacles.Count.Should().BeGreaterOrEqualTo(Constants.OBSTACLE_AMOUNT_MIN);
 }
 private void ChooseATarget()
 {
     playerShip = GameMechanics.SelectPlayerAsTarget();
 }
Beispiel #21
0
 public async Task BroadcastGetObstacles(bool generateNewObstacles) => await Clients.All.SendAsync("broadcastGetObstacles", GameMechanics.GetObstacles(generateNewObstacles));
Beispiel #22
0
 private async Task SendFruitInfoToAllClients()
 {
     var tilesWithNewFruits = GameMechanics.GenerateNewFruits();
     await _hub.Clients.All.SendAsync("fruitInfo", tilesWithNewFruits);
 }
Beispiel #23
0
 // Use this for initialization
 void Start()
 {
     gm = GameObject.FindWithTag("Mechanics").GetComponent <GameMechanics> ();
 }