예제 #1
0
 protected GameObject(MinerGame game)
     : base(game)
 {
     Game    = game;
     Drawing = new DrawingComponent(this, game.SpriteBatch);
     Physics = new PhysicsComponent(this);
 }
예제 #2
0
 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 static void Main(string[] args)
 {
     using (var game = new MinerGame())
     {
         game.Run();
     }
 }
예제 #3
0
파일: StageCreator.cs 프로젝트: pecea/Miner
        private IEnumerable <GameObject> LoadGameObjects(MinerGame game, StageLevel level)
        {
            var gameObjectsList = new List <GameObject>();

            gameObjectsList.Add(new Player(game, Player));
            gameObjectsList.AddRange(Terrain.Select(t => new Terrain(game, t)));

            return(gameObjectsList);
        }
예제 #4
0
파일: Program.cs 프로젝트: Bajena/Miner
 static void Main(string[] args)
 {
     try
     {
         using (var game = new MinerGame())
             game.Run();
     }
     catch (Exception xcp)
     {
         MessageBox.Show(xcp.Message);
         throw;
     }
 }
예제 #5
0
파일: StageCreator.cs 프로젝트: pecea/Miner
        public static Stage Create(MinerGame game, StageLevel level)
        {
            Stage         stage;
            XmlSerializer serializer = new XmlSerializer(typeof(StageCreator));

            using (var reader = new StreamReader(GetStageFilePath(level)))
            {
                var creator = (StageCreator)serializer.Deserialize(reader);
                var objects = creator.LoadGameObjects(game, level);
                stage = new Stage(game, level, creator.Size, objects);
            }

            return(stage);
        }
예제 #6
0
 protected GameObject(MinerGame game, GameObjectInitializer initializer)
     : this(game)
 {
     Initializer = initializer;
 }
예제 #7
0
 protected MovableGameObject(MinerGame game, GameObjectInitializer initializer)
     : base(game, initializer)
 {
     Physics = new MovablePhysicsComponent(this);
 }
예제 #8
0
 public Player(MinerGame game, GameObjectInitializer initializer)
     : base(game, initializer)
 {
     Input    = new PlayerInputComponent(this, 700f);
     Airborne = true;
 }
예제 #9
0
        static void Main(string[] args)
        {
            //количество полей
            int numberOfFields = 0;

            numberOfFields = CheckInput("Введите количество полей: ");
            IMinerGame[] field = new MinerGame[numberOfFields];
            for (int i = 0; i < numberOfFields; i++)
            {
                int n = 0;
                int m = 0;
                n        = CheckInput(String.Format("Введите количество строк поля {0}: ", i + 1));
                m        = CheckInput(String.Format("Введите количество столбцов поля {0} : ", i + 1));
                field[i] = new MinerGame(n, m);
            }
            //инициализация полей числом 0 - бомбы нету
            for (int i = 0; i < numberOfFields; i++)
            {
                field[i].InitField();
            }
            //инициализация полей псевдослучайными числами - генератор определит где будет бомба
            //размещение бомб
            Random rand = new Random();

            for (int i = 0; i < numberOfFields; i++)
            {
                field[i].BombsRandomGeneration(rand);
            }
            //распечатаем, что вышло в результате рандомизации
            Console.WriteLine("=======================");
            for (int i = 0; i < numberOfFields; i++)
            {
                Console.WriteLine(String.Format("Поле {0} :", i + 1));
                PrintField(field[i]);
                Console.WriteLine("_______________________");
            }
            /*********************/
            /***игровой процесс***/
            //пока работа над всеми полями не завершится цикл будет выполняться
            //counterOfProcess увеличивается на 1 если работа над полем закончится
            for (int counterOfProcess = 0; counterOfProcess != numberOfFields;)
            {
                //вводим и проверяем данные для каждого поля
                for (int i = 0; i < numberOfFields; i++)
                {
                    //если работа с полем закончена (неважно какой был результат), то выполняем следующую итерацию
                    if (field[i].IsWorkCompleted)
                    {
                        continue;
                    }
                    else
                    {
                        Console.WriteLine("Введите координаты клетки, которую хотите открыть для поля {0}:", i + 1);
                        int j = 0;
                        int k = 0;
                        j = CheckInput("Номер строки: ") - 1;
                        k = CheckInput("Номер столбца: ") - 1;
                        if (field[i].CheckCell(j, k) == 1)
                        {
                            //работа закончена неудачно
                            Console.WriteLine("Вы наткнулись на бомбу! Поле было взорвано :(");
                            ++counterOfProcess;
                        }
                        else if (field[i].CheckCell(j, k) == 0)
                        {
                            //работа закончена удачно
                            Console.WriteLine(String.Format("Поле {0} обезврежено. Хорошая работа! :)", i + 1));
                            counterOfProcess++;
                        }
                        else
                        {
                            //вариант 2 - клетка помечается как просмотренная знаком "+", после этого поле выводится на экран
                            Console.WriteLine(String.Format("Поле {0} :", i + 1));
                            PrintField(field[i]);
                            Console.WriteLine("_______________________");
                        }
                    }
                }
            }
            Console.WriteLine("Статистика игры:");
            for (int i = 0; i < numberOfFields; i++)
            {
                if (field[i].IsGoodWork)
                {
                    Console.WriteLine(String.Format("Поле {0} было успешно обезврежено. Поздравляю :)", i + 1));
                }
                else
                {
                    Console.WriteLine(String.Format("Поле {0} не было обезврежено. Сожалею... :(", i + 1));
                }
                Console.WriteLine();
            }
            Console.ReadKey(true);
        }
예제 #10
0
 public CollisionSolver(Stage stage, MinerGame game)
     : base(game)
 {
     Stage = stage;
 }
예제 #11
0
파일: Terrain.cs 프로젝트: pecea/Miner
 public Terrain(MinerGame game, GameObjectInitializer initializer)
     : base(game, initializer)
 {
 }