Exemplo n.º 1
0
        public BindingList <LogView> UpdateLog()
        {
            BindingList <LogView> logList = new BindingList <LogView>();
            //BindingList<Entity> entities = new BindingList<Entity>();
            //BindingList<Bullet> bullets = (BindingList<Bullet>)Game.GetBullets();


            Kolobok kolobok    = GetKolobok();
            LogView kolobokLog = new LogView(kolobok);

            logList.Add(kolobokLog);

            List <Tank> tanks = (List <Tank>)Game.GetTanks();

            foreach (Tank tank in tanks)
            {
                LogView tankView = new LogView(tank);
                logList.Add(tankView);
            }

            List <Apple> apples = (List <Apple>)Game.GetApples();

            foreach (Apple apple in apples)
            {
                LogView appleView = new LogView(apple);
                logList.Add(appleView);
            }


            return(logList);
        }
Exemplo n.º 2
0
        public Game(int width, int height, int entitySize, int tankCount, int appleCount, int speed)
        {
            this.width      = width;
            this.height     = height;
            this.entitySize = entitySize;
            this.speed      = speed;

            kolobok = new Kolobok(new Point(entitySize, entitySize), speed);

            map = new Map(width, height, entitySize);

            walls = Generator.GenerateMap(width, height, entitySize, height * width / 10000);
            foreach (var wall in walls)
            {
                map.AddBarier(wall);
            }
            waters = Generator.GenerateWater(width, height, entitySize, ref walls);
            foreach (var water in waters)
            {
                map.AddBarier(water);
            }

            List <Entity> borders = walls.Cast <Entity>().ToList();

            borders.AddRange(waters);
            borders.Add(kolobok);
            tanks = Generator.GenerateEntity <Tank, Entity>(width, height, entitySize, tankCount, borders);
            foreach (Tank tank in tanks)
            {
                tank.ChangeDirection(RandomDirection(tank.Pos));
                tank.ChangeSpeed(speed);
            }

            apples = Generator.GenerateEntity <Apple, Entity>(width, height, entitySize, appleCount, borders);

            bullets    = new List <Bullet>();
            explosions = new List <Explosion>();
        }
Exemplo n.º 3
0
 public void CreateKolobok(Kolobok _kolobok)
 {
     kolobok = _kolobok;
 }
Exemplo n.º 4
0
 public void UpdateKolobok(Kolobok _kolobok)
 {
     kolobok = _kolobok;
 }
Exemplo n.º 5
0
        public void SpawnFromTxt()
        {
            //FileStream File = new FileStream(@"..\..\..\img\spawn.txt",FileMode.Open);
            using (FileStream fstream = File.OpenRead(@"..\..\..\img\spawn.txt"))
            {
                // преобразуем строку в байты
                byte[] array = new byte[fstream.Length];
                // считываем данные
                fstream.Read(array, 0, array.Length);
                // декодируем байты в строку
                string textFromFile = System.Text.Encoding.Default.GetString(array);

                int rowcount = 1;
                int colcount = 1;
                for (int i = 0; i < textFromFile.Length; i++)
                {
                    switch (textFromFile[i])
                    {
                    case '\n':
                        rowcount++;
                        colcount = 1;
                        break;

                    case 'K':
                        Kolobok kolobok = new Kolobok();
                        if (colcount == 1)
                        {
                            kolobok.posX = colcount++;
                            kolobok.posY = rowcount;
                        }
                        else
                        {
                            kolobok.posX = colcount++ *kolobok.SpriteSize[0];
                            kolobok.posY = rowcount * kolobok.SpriteSize[1];
                        }
                        this.kolobok = kolobok;
                        break;

                    case 'W':
                        Wall    wall     = new Wall();
                        Kolobok _kolobok = new Kolobok();
                        if (colcount == 1)
                        {
                            wall.posX = 0;
                            colcount++;
                            wall.posY = rowcount * _kolobok.SpriteSize[1];
                        }
                        else
                        {
                            wall.posX = colcount++ *_kolobok.SpriteSize[0];
                            wall.posY = rowcount * _kolobok.SpriteSize[1];
                        }
                        Walls.Add(wall);
                        break;

                    case 'T':
                        Tank tank = new Tank();
                        if (colcount == 1)
                        {
                            tank.posX = 0;

                            tank.posY = rowcount * tank.SpriteSize[1];
                        }
                        else
                        {
                            tank.posX = colcount++ *tank.SpriteSize[0];
                            tank.posY = rowcount * tank.SpriteSize[1];
                        }
                        Thread.Sleep(40);
                        Tanks.Add(tank);
                        break;

                    case 'R':
                        River   river     = new River();
                        Kolobok __kolobok = new Kolobok();
                        if (colcount == 1)
                        {
                            river.posX = 0;
                            colcount++;
                            river.posY = rowcount * __kolobok.SpriteSize[1];
                        }
                        else
                        {
                            river.posX = (colcount++ - 1) * __kolobok.SpriteSize[0];
                            river.posY = rowcount * __kolobok.SpriteSize[1];
                        }

                        Rivers.Add(river);
                        break;

                    default:
                        colcount++;
                        break;
                    }
                }
            }
        }
Exemplo n.º 6
0
 public KolobokView(Kolobok kolobok)
 {
     this.kolobok = kolobok;
 }
Exemplo n.º 7
0
        internal void Initial(int tanksValue, int applesValue, Size mapSize)
        {
            infoSource.Rows.Clear();

            gameOver      = false;
            gameOverDelay = 0;

            tanksScore  = 0;
            applesScore = 0;

            this.tanksValue  = tanksValue;
            this.applesValue = applesValue;
            this.mapSize     = mapSize;

            kolobok = new Kolobok();
            AddToInfoSource(kolobok);

            rivers = new List <River>();
            for (var i = 0; i < 5; i++)
            {
                var river = new River();
                SetRandonCoordinates(river);
                while (IsCollize(river, kolobok))
                {
                    SetRandonCoordinates(river);
                }
                rivers.Add(river);
                AddToInfoSource(river);
            }

            walls = new List <Wall>();
            for (var i = 0; i < random.Next(10, 30); i++)
            {
                var wall = new Wall();
                SetRandonCoordinates(wall);
                while (IsCollize(wall, kolobok) ||
                       IsCollize(wall, rivers) ||
                       IsCollize(wall, walls))
                {
                    SetRandonCoordinates(wall);
                }
                walls.Add(wall);
                AddToInfoSource(wall);
            }

            tanks = new List <Tank>();
            var kolobokSpawnAreaTrigger = new Rectangle(0, 0, 50, 50);

            for (var i = 0; i < tanksValue; i++)
            {
                var tank = new Tank();
                SetRandonCoordinates(tank);
                while (IsCollize(tank, kolobok) ||
                       IsCollize(tank, rivers) ||
                       IsCollize(tank, walls) ||
                       IsCollize(tank, tanks) ||
                       IsCollize(tank, kolobokSpawnAreaTrigger))
                {
                    SetRandonCoordinates(tank);
                }
                tanks.Add(tank);
                AddToInfoSource(tank);
            }

            apples = new List <Apple>();
            for (var i = 0; i < applesValue; i++)
            {
                var apple = new Apple();
                SetRandonCoordinates(apple);
                while (IsCollize(apple, kolobok) ||
                       IsCollize(apple, rivers) ||
                       IsCollize(apple, walls) ||
                       IsCollize(apple, tanks) ||
                       IsCollize(apple, apples))
                {
                    SetRandonCoordinates(apple);
                }
                apples.Add(apple);
                AddToInfoSource(apple);
            }

            bullets    = new List <Bullet>();
            explosions = new List <Explosion>();

            UpdateInfoSource();
        }
Exemplo n.º 8
0
        private void CheckCollizions()
        {
            if (gameOver)
            {
                return;
            }

            foreach (var tank in tanks)
            {
                if (IsCollize(tank, kolobok))
                {
                    var explosion = new Explosion(kolobok.Coordinates);
                    explosions.Add(explosion);
                    AddToInfoSource(explosion);
                    RemoveFromInfoSource(kolobok.Id);
                    kolobok    = null;
                    gameOver   = true;
                    gameResult = false;
                    return;
                }

                foreach (var otherTank in tanks)
                {
                    if (otherTank.Equals(tank))
                    {
                        continue;
                    }
                    if (IsCollize(tank, otherTank))
                    {
                        tank.GoBack();
                        tank.TurnAround();
                        otherTank.GoBack();
                        otherTank.TurnAround();
                    }
                }
                foreach (var wall in walls)
                {
                    if (IsCollize(tank, wall))
                    {
                        tank.GoBack();
                        tank.SetRandomDirection();
                    }

                    if (IsCollize(kolobok, wall))
                    {
                        kolobok.GoBack();
                        kolobok.TurnAround();
                    }
                }
                foreach (var river in rivers)
                {
                    if (IsCollize(tank, river))
                    {
                        tank.GoBack();
                        tank.SetRandomDirection();
                    }
                    if (IsCollize(kolobok, river))
                    {
                        kolobok.GoBack();
                        kolobok.TurnAround();
                    }
                }
            }
            for (var i = 0; i < apples.Count; i++)
            {
                if (i < 0)
                {
                    i = 0;
                }
                if (IsCollize(kolobok, apples[i]))
                {
                    applesScore++;
                    RemoveFromInfoSource(apples[i].Id);
                    apples.Remove(apples[i]);
                    i--;
                    var apple = new Apple();
                    SetRandonCoordinates(apple);
                    while (IsCollize(apple, kolobok) ||
                           IsCollize(apple, rivers) ||
                           IsCollize(apple, walls) ||
                           IsCollize(apple, tanks) ||
                           IsCollize(apple, apples))
                    {
                        SetRandonCoordinates(apple);
                    }
                    apples.Add(apple);
                    AddToInfoSource(apple);
                    continue;
                }
            }
            for (var i = 0; i < bullets.Count; i++)
            {
                if (i < 0)
                {
                    i = 0;
                }
                if (IsCollize(bullets[i], kolobok))
                {
                    var explosion = new Explosion(kolobok.Coordinates);
                    explosions.Add(explosion);
                    AddToInfoSource(explosion);
                    RemoveFromInfoSource(kolobok.Id);
                    kolobok = null;
                    RemoveFromInfoSource(bullets[i].Id);
                    bullets.Remove(bullets[i]);
                    gameResult = false;
                    gameOver   = true;
                    return;
                }
                for (var j = 0; j < walls.Count; j++)
                {
                    if (IsCollize(bullets[i], walls[j]))
                    {
                        var explosion = new Explosion(walls[j].Coordinates);
                        explosions.Add(explosion);
                        AddToInfoSource(explosion);
                        RemoveFromInfoSource(bullets[i].Id);
                        bullets.Remove(bullets[i]);
                        RemoveFromInfoSource(walls[j].Id);
                        walls.Remove(walls[j]);
                        i--;
                        break;
                    }
                }
            }
        }
Exemplo n.º 9
0
 public void UpdateKolobok(Kolobok kolobok)
 {
     Game.UpdateKolobok(kolobok);
 }
Exemplo n.º 10
0
 public void CreateKolobok(Kolobok kolobok)
 {
     Game.CreateKolobok(kolobok);
 }