예제 #1
0
        /// <summary>
        /// Uppdaterar NonPlayer objekt genom att sudda ut de, skriva ut de, och uppdatera koordinaterna.
        /// </summary>
        public void Update()
        {
            _updateTimer.Start();
            if (Map.SlowTime == true)
            {
                Map.MoveSpeed = Map.MoveSpeed + 200;
                Map.SlowTime  = false;
            }
            if (_updateTimer.ElapsedMilliseconds > Map.MoveSpeed)
            {
                for (int i = 0; i < GameContainer.NonPlayerList.Count; i++)
                {
                    var nonPlayer = GameContainer.NonPlayerList[i];
                    if (nonPlayer.CheckCollision(nonPlayer.FetchX(), nonPlayer.FetchY()))
                    {
                        nonPlayer.Remove(nonPlayer.FetchX(), nonPlayer.FetchY());
                        nonPlayer.Draw(nonPlayer.FetchX(), nonPlayer.FetchY());
                        _updateTimer.Reset();
                    }
                    else
                    {
                        if (nonPlayer.FetchX() == Player.X && nonPlayer.FetchY() == Player.Y)
                        {
                            switch (nonPlayer.FetchEntity())
                            {
                            case "enemy":
                                if (Map.GodMode == false)
                                {
                                    GameContainer.EndGame();
                                }
                                else
                                {
                                    GameContainer.NonPlayerList.RemoveAt(i);
                                }
                                break;

                            case "pu":
                                GameContainer.PU.GainPU();
                                GameContainer.NonPlayerList.RemoveAt(i);
                                break;

                            case "score":
                                Map.UpdateScore();
                                GameContainer.NonPlayerList.RemoveAt(i);
                                break;
                            }
                        }
                        else if (nonPlayer.FetchX() == 0)
                        {
                            GameContainer.NonPlayerList.RemoveAt(i);
                            nonPlayer.Remove(nonPlayer.FetchX(), nonPlayer.FetchY());
                            i--;
                        }
                    }
                }
            }
        }
예제 #2
0
파일: Program.cs 프로젝트: sifudiep/Dodge
        /// <summary>
        /// Main funktionen skapar objekt av klasser och använder en while loop för att konstant uppdatera programmet och ta emot data från t.ex tangentklick.
        /// </summary>
        /// <param name="args">
        /// Args argumentet används inte
        /// </param>
        static void Main(string[] args)
        {
            GameContainer    Gc      = new GameContainer(new Player());
            Spawner          Spawner = new Spawner();
            UpdateNonPlayers Updater = new UpdateNonPlayers();

            InitGame();

            while (GameContainer.Running)
            {
                Gc.HandleInput();
                Spawner.CheckSpawn();
                Updater.Update();
                Gc.CheckProgression();
                Map.UpdatePlayTime();
            }
        }
예제 #3
0
        /// <summary>
        /// CheckMove kollar om player objektet rör sig utanför kartan eller om den kolliderar med ett NonPlayer objekt.
        /// </summary>
        /// <param name="x">
        /// X koordinaten som player objektet står på.
        /// </param>
        /// <param name="y">
        /// Y koordinaten som player objektet står på.
        /// </param>
        /// <returns>
        /// Returnar true då player objektet inte kolliderar med NonPlayer objekt eller går utanför kartan, returnerar false då något om de tidigare kraven har hänt.
        /// </returns>
        public bool CheckMove(int x, int y)
        {
            if (x < 0 || x >= Console.WindowWidth - 1)
            {
                return(false);
            }

            if (y < 0 || y >= Console.WindowHeight - 2)
            {
                return(false);
            }

            for (int i = 0; i < GameContainer.NonPlayerList.Count; i++)
            {
                var nonPlayer = GameContainer.NonPlayerList[i];
                if (nonPlayer.FetchX() == Player.X && nonPlayer.FetchY() == Player.Y)
                {
                    switch (nonPlayer.FetchEntity())
                    {
                    case "enemy":
                        if (Map.GodMode == false)
                        {
                            GameContainer.EndGame();
                        }
                        else
                        {
                            GameContainer.NonPlayerList.RemoveAt(i);
                        }
                        break;

                    case "pu":
                        GameContainer.PU.GainPU();
                        GameContainer.NonPlayerList.RemoveAt(i);
                        return(true);

                    case "score":
                        Map.UpdateScore();
                        GameContainer.NonPlayerList.RemoveAt(i);
                        return(true);
                    }
                }
            }
            return(true);
        }