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; } } }
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; } } }