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); }
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>(); }
public void CreateKolobok(Kolobok _kolobok) { kolobok = _kolobok; }
public void UpdateKolobok(Kolobok _kolobok) { kolobok = _kolobok; }
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; } } } }
public KolobokView(Kolobok kolobok) { this.kolobok = kolobok; }
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(); }
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; } } } }
public void UpdateKolobok(Kolobok kolobok) { Game.UpdateKolobok(kolobok); }
public void CreateKolobok(Kolobok kolobok) { Game.CreateKolobok(kolobok); }