예제 #1
0
        static void Main(string[] args)
        {
            ConsoleKeyInfo key;

            // int TrappedRabbitCount = 0; //счётчик пойманных зайцев

            Greetings();

            NewRegion region = new NewRegion(4, 4, 70, 20);                                            //создание игрового поля

            /*
             * //Для отладки!
             * GreenRabbit greenRabbit = new GreenRabbit(new Vector(10, 10), new Vector(1, 1), '*');   //зелёный заяц
             * RedRabbit redRabbit = new RedRabbit(new Vector(9, 6), new Vector(1, 1), 'O');           //красный заяц
             * BoxTrap Box = new BoxTrap(11, 11, 4);                                                   //коробочка будет стоять прямо на пути объектов
             */

            Random rDirect = new Random();

            GreenRabbit greenRabbit = new GreenRabbit(new Vector(10, 10), new Vector(rDirect.Next(-1, 2), rDirect.Next(-1, 2)), '*');   //зелёный заяц
            RedRabbit   redRabbit   = new RedRabbit(new Vector(9, 6), new Vector(rDirect.Next(-1, 2), rDirect.Next(-1, 2)), 'O');       //красный заяц

            BoxTrap Box = new BoxTrap(60, 10, 4);                                                                                       //установка коробки-ловушки

            Vector BoxDir = new Vector(0, 0);

            greenRabbit.SetRegion(region);              //запоминание зайцами границ поля
            redRabbit.SetRegion(region);

            Box.SetRegion(region);                      //запоминание ловушкой игрового поля

            while (true)
            {
                greenRabbit.Move();
                redRabbit.Move();
                greenRabbit.Show();
                redRabbit.Show();
                //greenRabbit.ShowXY(0, 0);

                #region BoxMoving
                //обработка движения ловушки
                if (Console.KeyAvailable)
                {
                    Console.ForegroundColor = ConsoleColor.Black;
                    key = Console.ReadKey();
                    Console.ResetColor();
                    switch (key.Key)
                    {
                    case ConsoleKey.LeftArrow:
                        BoxDir.X = -1;
                        Box.BoxMove(ref BoxDir);
                        break;

                    case ConsoleKey.RightArrow:
                        BoxDir.X = 1;
                        Box.BoxMove(ref BoxDir);
                        break;

                    case ConsoleKey.UpArrow:
                        BoxDir.Y = -1;
                        Box.BoxMove(ref BoxDir);
                        break;

                    case ConsoleKey.DownArrow:
                        BoxDir.Y = 1;
                        Box.BoxMove(ref BoxDir);
                        break;

                    case ConsoleKey.R:
                        Box.BoxRotate();
                        break;
                    }
                }

                #endregion

                //проверка на попадание зайца в ловушку
                #region CheckTrap
                if (Box.CheckTrapped(greenRabbit.GetPosition(), greenRabbit.GetDirection(), greenRabbit.GetSym, greenRabbit.GetrColor))
                {
                    greenRabbit.Destroy();
                    WriteTrappedrabbitsCount(Box.GetTrappedRabbitCount);
                }
                if (Box.CheckTrapped(redRabbit.GetPosition(), redRabbit.GetDirection(), redRabbit.GetSym, redRabbit.GetrColor))
                {
                    redRabbit.Destroy();
                    WriteTrappedrabbitsCount(Box.GetTrappedRabbitCount);
                }
                #endregion

                //если пойманы оба зайца
                if (Box.GetTrappedRabbitCount == 2)
                {
                    Box.BoxDraw();
                    RabbitsAreTrapped();

                    while (true)
                    {
                        key = Console.ReadKey();
                        if (key.Key == ConsoleKey.Enter)                          //освобождение зайцев
                        {
                            Box.FreeRabbits();                                    //выпускаем их из коробки
                            WriteTrappedrabbitsCount(Box.GetTrappedRabbitCount);  //пишем об этом

                            greenRabbit.Free();                                   //даём каждому зайцу свободу
                            redRabbit.Free();

                            ClearRegion(region.Reg_X1, region.Reg_X2, region.Reg_Y1, region.Reg_Y2); //чистим рабочую область
                            Box.BoxDraw();
                            break;
                        }
                        else if (key.Key == ConsoleKey.Escape)                    //окончание игры
                        {
                            return;
                        }
                    }
                }

                System.Threading.Thread.Sleep(100);
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            ConsoleKeyInfo key;
               // int TrappedRabbitCount = 0; //счётчик пойманных зайцев

            Greetings();

            NewRegion region = new NewRegion(4,4,70,20);                                            //создание игрового поля

            /*
            //Для отладки!
            GreenRabbit greenRabbit = new GreenRabbit(new Vector(10, 10), new Vector(1, 1), '*');   //зелёный заяц
            RedRabbit redRabbit = new RedRabbit(new Vector(9, 6), new Vector(1, 1), 'O');           //красный заяц
            BoxTrap Box = new BoxTrap(11, 11, 4);                                                   //коробочка будет стоять прямо на пути объектов
            */

            Random rDirect = new Random();

            GreenRabbit greenRabbit = new GreenRabbit(new Vector(10, 10), new Vector(rDirect.Next(-1, 2), rDirect.Next(-1, 2)), '*');   //зелёный заяц
            RedRabbit redRabbit = new RedRabbit(new Vector(9, 6), new Vector(rDirect.Next(-1, 2), rDirect.Next(-1, 2)), 'O');           //красный заяц

            BoxTrap Box = new BoxTrap(60,10,4);                                                                                         //установка коробки-ловушки

            Vector BoxDir = new Vector(0,0);

            greenRabbit.SetRegion(region);              //запоминание зайцами границ поля
            redRabbit.SetRegion(region);

            Box.SetRegion(region);                      //запоминание ловушкой игрового поля

            while (true)
            {
                greenRabbit.Move();
                redRabbit.Move();
                greenRabbit.Show();
                redRabbit.Show();
                //greenRabbit.ShowXY(0, 0);

                #region BoxMoving
                //обработка движения ловушки
                if (Console.KeyAvailable)
                {
                    Console.ForegroundColor = ConsoleColor.Black;
                    key = Console.ReadKey();
                    Console.ResetColor();
                    switch (key.Key)
                    {
                        case ConsoleKey.LeftArrow:
                            BoxDir.X = -1;
                            Box.BoxMove(ref BoxDir);
                            break;
                        case ConsoleKey.RightArrow:
                            BoxDir.X = 1;
                            Box.BoxMove(ref BoxDir);
                            break;
                        case ConsoleKey.UpArrow:
                            BoxDir.Y = -1;
                            Box.BoxMove(ref BoxDir);
                            break;
                        case ConsoleKey.DownArrow:
                            BoxDir.Y = 1;
                            Box.BoxMove(ref BoxDir);
                            break;
                        case ConsoleKey.R:
                            Box.BoxRotate();
                            break;
                    }
                }

                #endregion

                //проверка на попадание зайца в ловушку
                #region CheckTrap
                if (Box.CheckTrapped(greenRabbit.GetPosition(), greenRabbit.GetDirection(), greenRabbit.GetSym, greenRabbit.GetrColor))
                {
                    greenRabbit.Destroy();
                    WriteTrappedrabbitsCount(Box.GetTrappedRabbitCount);
                }
                if (Box.CheckTrapped(redRabbit.GetPosition(), redRabbit.GetDirection(), redRabbit.GetSym, redRabbit.GetrColor))
                {
                    redRabbit.Destroy();
                    WriteTrappedrabbitsCount(Box.GetTrappedRabbitCount);
                }
                #endregion

                //если пойманы оба зайца
                if (Box.GetTrappedRabbitCount == 2)
                {
                    Box.BoxDraw();
                    RabbitsAreTrapped();

                    while(true)
                    {
                        key = Console.ReadKey();
                        if (key.Key == ConsoleKey.Enter)                          //освобождение зайцев
                        {
                            Box.FreeRabbits();                                    //выпускаем их из коробки
                            WriteTrappedrabbitsCount(Box.GetTrappedRabbitCount);  //пишем об этом

                            greenRabbit.Free();                                   //даём каждому зайцу свободу
                            redRabbit.Free();

                            ClearRegion(region.Reg_X1, region.Reg_X2, region.Reg_Y1, region.Reg_Y2); //чистим рабочую область
                            Box.BoxDraw();
                            break;
                        }
                        else if (key.Key == ConsoleKey.Escape)                    //окончание игры
                            return;
                    }
                }

                System.Threading.Thread.Sleep(100);
            }
        }