示例#1
0
        static void Main(string[] args)
        {
            Settings.ConsoleSetings();

            ModelViev.PrintBracket();

            GameRoom   level_1    = new GameRoomConstructor().Init();
            Controller controller = new Controller();

            UI.Show(level_1);

            int           frameTime = 0;
            FpsCalculator fps       = new FpsCalculator();

            fps.CreateFpsCalculator();
            do
            {
                if (Console.KeyAvailable) // проверка на то, была ли нажата кнопка
                {
                    // берем нажатую клавишу и передаем ее "Мозгу", который даст Player-у задачу, идти, стрелять и тд.
                    new Brain().SetPlayerDecision(level_1, controller.GetActionFromKey(Console.ReadKey(true).Key));
                }

                // берем все обьекты и выполняем все их действия
                new ActionMaker().MakeВeliberateAction(ref level_1, frameTime); // передаем frameTime для учета скорости

                // проверка на выход за рамки консоли
                PositionCl.CheckOverflow(ref level_1, Settings.GetGameArea());

                new CollisionPolice().Review(ref level_1);

                // затирание старой позиции и рисование новой, если позиция поменялась
                UI.Refresh(level_1);

                // помещение новых координат в старые
                PositionCl.NewToOld(ref level_1);

                Thread.Sleep(15);
#if DEBUG
                if (frameTime % 5 == 0)
                {
                    UI.PrintLog(Program.log);
                }
#endif
                int countOfFrames;
                UI.ShowFPS(fps.EndOfFrame(out countOfFrames), countOfFrames);

                Console.SetCursorPosition(Settings.GetGameArea().To.newPos.x + 5, 6);
                Console.Write("HP = {0}   ", level_1.gameObj[0].HP);

                ++frameTime;
            } while (true);
        }
 public void Review(ref GameRoom room)
 {
     for (int i = 0; i <= room.lastObjectIndex; i++)
     {
         int collisionObgIndex;
         if (new CollisionChecker().CheckCollision(room, room.gameObj[i], out collisionObgIndex))
         {
             //PositionCl.GetBackPos(ref room.gameObj[i]); // если столкнулись, то движущияся обьект должен упереться в него
             new CollisionJudge().MakeDecision(ref room, ref room.gameObj[i], ref room.gameObj[collisionObgIndex]);
             new ActionMaker().MakeAction(ref room, ref room.gameObj[i]);
             new ActionMaker().MakeAction(ref room, ref room.gameObj[collisionObgIndex]);
             PositionCl.GetBackPos(ref room.gameObj[i]); // если столкнулись, то движущияся обьект должен упереться в него
         }
         else
         {
             //room.gameObj[i].Action = UnitActions.None;
         }
     }
 }
示例#3
0
        public void MakeAction(ref GameRoom level, ref GameObject gameObject)
        {
            if (gameObject.IsActive)
            {
                switch (gameObject.Action)
                {
                case UnitActions.MoveRight:
                    PositionCl.Move(ref level, ref gameObject, Direction.Right);
                    break;

                case UnitActions.MoveLeft:
                    PositionCl.Move(ref level, ref gameObject, Direction.Left);
                    break;

                case UnitActions.MoveDown:
                    PositionCl.Move(ref level, ref gameObject, Direction.Down);
                    break;

                case UnitActions.MoveTop:
                    PositionCl.Move(ref level, ref gameObject, Direction.Top);
                    break;

                case UnitActions.Stop:
                    break;

                case UnitActions.ShootLeft:
                    Console.Beep(800, 50);
                    gameObject.Shoot(ref level, Direction.Left);
                    break;

                case UnitActions.ShootRight:
                    gameObject.Shoot(ref level, Direction.Right);
                    Console.Beep(800, 50);
                    break;

                case UnitActions.ShootDown:
                    gameObject.Shoot(ref level, Direction.Down);
                    Console.Beep(800, 50);
                    break;

                case UnitActions.ShootUp:
                    gameObject.Shoot(ref level, Direction.Top);
                    Console.Beep(800, 50);
                    break;

                case UnitActions.Die:
                    Die(ref level, gameObject);
                    break;

                case UnitActions.GetDamage:
                    break;

                case UnitActions.Attack:
                    break;

                default:
                case UnitActions.None:

                    break;
                }
            }
        }